EOS IEC 60870 Sunucusu Nedir?

EOS IEC 60870 Sunucusu, EOS SCADA sistemindeki proses verilerini IEC 60870-5-104 protokolünü kullanan üst seviye SCADA sistemlerine, kontrol merkezlerine veya test yazılımlarına sunmak amacıyla geliştirilmiştir.

Sunucu tarafında EOS SCADA'nın mevcut VeriID, Sütun Adı, Veri Türü ve Cihaz bilgileri kullanılarak IEC 60870 bilgi nesneleri oluşturulur.

Böylece EOS SCADA içerisindeki örneğin HES_Generator_ActivePower, HES_Generator_ReactivePower, HES_TurbineSpeed veya HES_Breaker01_Status gibi proses noktaları IEC 60870-5-104 istemcileri tarafından okunabilir.

EOS SCADA → IEC 60870-5-104

EOS SCADA içerisindeki proses verileri, IEC 60870 ASDU yapıları içerisinde istemciye sunulur.


EOS SCADA TAG
      │
      ├── VeriID
      ├── Sütun Adı
      ├── Veri Türü
      └── Cihaz
            │
            ▼
      Common Address
            │
            ▼
      Information Object Address
            │
            ▼
          ASDU
            │
            ▼
      IEC 60870-5-104
            │
            ▼
      SCADA / Master
                    

Sunucunun Çalışma Modeli

EOS IEC 60870 Sunucusu, IEC 60870-5-104 haberleşmesinde Server / Controlled Station rolünde çalışır. Karşı taraftaki SCADA veya IEC 104 istemcisi ise Master / Controlling Station rolündedir.

EOS SCADA

Proses verilerinin bulunduğu ana veri kaynağıdır.

IEC 60870-5-104

EOS SCADA ile dış SCADA sistemi arasındaki TCP/IP tabanlı telekontrol haberleşmesini sağlar.

IEC 104 Master

EOS IEC 60870 Sunucusuna bağlanarak genel sorgu veya Read isteği gönderebilir.

ASDU Veri Aktarımı

Proses değerleri IEC 60870 ASDU yapıları içerisinde istemciye gönderilir.

IEC 60870-5-104 Haberleşmesi

EOS sunucusunun mevcut implementasyonu IEC 60870-5-104 üzerinde çalışmaktadır. Haberleşme TCP/IP üzerinden gerçekleştirilir.

Parametre EOS Sunucusu
Protokol IEC 60870-5-104
Haberleşme TCP/IP
Common Address boyutu 2 byte
IOA boyutu 3 byte
Maksimum ASDU uzunluğu 249 byte
K 12
W 8

IEC 104 bağlantı parametreleri ApplicationLayerParameters ve APCIParameters yapıları üzerinden yapılandırılmaktadır. K değeri gönderme penceresini, W değeri ise alındı bildirim penceresini belirler.

Common Address – CA

EOS IEC 60870 Sunucusunda Common Address (CA), EOS SCADA içerisindeki cihazlarla ilişkilendirilmiştir.

Kod içerisinde cihazlar için oluşturulan Common Address değeri, cihazın EOS içerisindeki kimlik değerinin bir fazlası olacak şekilde oluşturulur.


DEVICE ID = 0
        ↓
Common Address = 1

DEVICE ID = 1
        ↓
Common Address = 2

DEVICE ID = 15
        ↓
Common Address = 16
                

Örneğin EOS içerisinde HES UNIT 01 isimli cihazın Common Address değeri 1 ise, bu cihaza ait IEC 60870 veri noktaları CA = 1 altında sunulur.

CA = 0 ile Genel Sorgu

İstemci tarafından gönderilen General Interrogation isteğinde Common Address değeri 0 olduğunda sunucu mevcut cihazların tamamı için veri oluşturarak istemciye gönderir.

Information Object Address – IOA

EOS IEC 60870 Sunucusunda proses bilgilerinin IEC 60870 adreslemesi IOA (Information Object Address) üzerinden yapılır.

Mevcut implementasyonda IOA, EOS SCADA'daki Sütun Adı değerinden türetilmektedir.


IOA = 100000 + Sütun Adı
                

Örneğin EOS SCADA'da bir TAG için


Sütun Adı = 125
                

ise bu TAG'in IEC 60870 IOA değeri:


IOA = 100000 + 125

IOA = 100125
                

Bu adresleme sayesinde IEC 104 istemcisi belirli bir IOA üzerinden ilgili EOS SCADA veri noktasını okuyabilir.

Örnek TAG

TAG HES_Generator_ActivePower
Veri Türü Real
Sütun Adı 125
IOA 100125

ASDU Yapısı

EOS IEC 60870 Sunucusu veri aktarımında ASDU (Application Service Data Unit) yapısını kullanır.

ASDU içerisinde temel olarak Type Identification, Cause of Transmission, Originator Address, Common Address ve Information Object bilgileri bulunur.


ASDU
 │
 ├── Type ID
 │
 ├── Cause of Transmission
 │
 ├── Originator Address
 │
 ├── Common Address
 │
 └── Information Objects
        │
        ├── IOA
        ├── Value
        └── Quality
                

EOS sunucusu, veri türüne göre uygun Information Object sınıfını oluşturarak ASDU içerisine ekler.

Desteklenen EOS Veri Tipleri

EOS IEC 60870 Sunucusu, EOS SCADA içerisindeki veri tiplerine göre farklı IEC 60870 Information Object yapılarını kullanır.

EOS Veri Tipi IEC 60870 Nesnesi Açıklama
Bool SinglePointInformation Tek bitlik durum bilgisi
Sint MeasuredValueScaled Ölçeklenmiş 16 bit ölçüm
Usint MeasuredValueScaled 16 bit ölçeklenmiş değer alanı kullanılır
Int MeasuredValueScaled 16 bit signed ölçüm
Uint MeasuredValueShort Kayan noktalı ölçüm nesnesi üzerinden aktarılır
Dint IntegratedTotals BinaryCounterReading kullanılarak aktarılır
Udint MeasuredValueScaled 32 bit değer iki 16 bit parçaya ayrılır
Lint MeasuredValueScaled 64 bit değer iki 32 bit parçaya ayrılarak aktarılır
Ulint MeasuredValueScaled 64 bit değer iki parçaya ayrılarak aktarılır
Real MeasuredValueShort IEEE 754 single precision değer
Double MeasuredValueScaled Double değerin bit temsili iki parçaya ayrılır

Veri Kalitesi

EOS SCADA'dan alınan bir değerin IEC 60870 nesnesine dönüştürülmesi sırasında değer okunamaz veya dönüştürülemez durumdaysa QualityDescriptor içerisinde Invalid biti işaretlenir.


EOS TAG
   │
   ├── Değer geçerli
   │       ↓
   │   QualityDescriptor
   │       Invalid = false
   │
   └── Değer okunamadı
           ↓
       QualityDescriptor
           Invalid = true
                

Örneğin


HES_Generator_ActivePower = 12.45 MW
                

değeri IEC 60870 istemcisine geçerli kalite bilgisiyle gönderilebilir. Değer dönüştürülemez durumdaysa ilgili Information Object için Invalid biti işaretlenir.

General Interrogation – GI

EOS IEC 60870 Sunucusunun temel veri aktarım mekanizmalarından biri General Interrogation (GI) işlemidir.

IEC 104 Master tarafından GI isteği gönderildiğinde EOS sunucusu önce ACT_CON mesajı gönderir. Ardından EOS SCADA içerisindeki uygun veri noktalarını okuyarak INTERROGATED_BY_STATION Cause of Transmission ile ASDU'lar oluşturur.


IEC 104 Master
      │
      │ GI
      ▼
EOS IEC 60870 Server
      │
      ├── ACT_CON
      │
      ├── EOS TAG'lerini tara
      │
      ├── Common Address'a göre grupla
      │
      ├── Veri tipine göre ASDU oluştur
      │
      ├── ASDU gönder
      │
      └── ACT_TERM
                

İstemcinin Common Address değeri 0 olduğunda sunucu mevcut cihazların tamamını dolaşarak ilgili verileri gönderir.

Belirli bir Common Address gönderildiğinde yalnızca o cihaza ait veriler aktarılır.

ASDU Paketleme

EOS sunucusunda aynı veri türündeki Information Object'ler ASDU'lar içerisinde gruplanmaktadır. Her ASDU için maksimum 20 Information Object olacak şekilde paketleme yapılmaktadır.


Örneğin:

Bool TAG 1
Bool TAG 2
Bool TAG 3
...
Bool TAG 20
        │
        ▼
     ASDU #1

Bool TAG 21
Bool TAG 22
...
        │
        ▼
     ASDU #2
                

Tamamlanan ASDU istemciye gönderildikten sonra yeni bir ASDU oluşturulur. Paketler arasında kısa bir bekleme uygulanarak veri aktarımının kontrollü şekilde gerçekleştirilmesi sağlanır.

Read – Veri Okuma İsteği

EOS IEC 60870 Sunucusu, C_RD_NA_1 Read komutlarını da işleyebilir.

IEC 104 Master belirli bir IOA için Read isteği gönderdiğinde sunucu, ilgili Common Address ve IOA değerini EOS SCADA veri noktalarıyla eşleştirir.


Master
  │
  │ C_RD_NA_1
  │ CA = 1
  │ IOA = 100125
  ▼
EOS IEC 60870 Server
  │
  ├── CA → HES UNIT 01
  │
  ├── IOA 100125 → Sütun Adı 125
  │
  ├── EOS TAG değerini oku
  │
  └── REQUEST COT ile ASDU gönder
                

Örnek

CA = 1 ve IOA = 100125 isteği, EOS tarafında Common Address 1'e bağlı cihaz içerisindeki Sütun Adı 125 olan veri noktasıyla eşleştirilebilir.

Sunucu Yapılandırması

EOS IEC 60870 Sunucusunun çalışma parametreleri EOS SCADA Proje Ayarları üzerinden yapılandırılır. Sunucunun hangi IP adresi üzerinde çalışacağı, IEC 60870 istemcilerinin bağlanacağı TCP portu ve veri güncelleme aralığı proje ayarlarında belirlenebilir.

Parametre Açıklama Varsayılan Değer
IP Adresi IEC 60870 Sunucusunun istemci bağlantılarını kabul etmek üzere dinleyeceği IP adresidir. IP_Adresi (Proje Ayarına bağlı)
IEC 60870 Portu IEC 60870 istemcilerinin EOS IEC 60870 Sunucusuna bağlanmak için kullanacağı TCP portudur. Varsayılan 2404
Veri Tipi IEC 60870 üzerinden sunulacak EOS SCADA verilerinin kapsamını belirler. All, Digital, Analog veya Selected seçeneklerinden biri
Güncelleme Aralığı EOS SCADA verilerinin IEC 60870 Sunucusu tarafından kontrol edilme ve değişen değerlerin IEC 60870 üzerinden sunulma aralığını belirler. Varsayılan 1 saniye

IEC 60870 Portu için varsayılan değer 2404'tür. Bu değer, IEC 60870-5-104 iletişiminde kullanılan standart TCP portudur ve ihtiyaç halinde Proje Ayarları üzerinden değiştirilebilir.

Güncelleme Aralığı varsayılan olarak 1 saniye olarak ayarlanmıştır. Bu süre, EOS SCADA verilerinin IEC 60870 Sunucusu tarafından kontrol edilme sıklığını belirler. Bir veri noktasının değeri değiştiğinde, ilgili IEC 60870 veri noktası üzerinden güncel değer sunulur.

IEC 60870 Sunucusu başlatıldığında, Proje Ayarlarında belirlenen IP adresi ve TCP portu üzerinde IEC 60870 istemci bağlantılarını kabul edecek şekilde çalışmaya başlar.

:::

Sunulacak Verilerin Seçilmesi

EOS IEC 60870 Sunucusu, EOS SCADA içerisindeki veri noktalarının tamamını veya belirli veri gruplarını sunabilecek şekilde yapılandırılmıştır.

All

Uygun EOS veri noktalarının tamamı IEC 60870 sunucusunda sunulur.

Digital

Sayısal / dijital veri grubuna karşılık gelen noktalar sunulur.

Analog

Analog ölçüm noktaları sunulur.

Selected

EOS SCADA içerisinde seçilmiş veri noktaları sunulur.

Cihaz ve TAG Eşleştirmesi

Sunucu başlatılırken EOS SCADA'nın cihaz ve TAG tabloları taranır. TAG'in bağlı olduğu cihaz ile veri tipi ayrı sözlüklerde tutulur.


TAG
 │
 ├── VeriID
 │
 ├── Veri Türü
 │
 └── Cihaz
       │
       ├── Common Address
       │
       └── IEC 60870 Server
                

Örneğin:

EOS TAG Veri Türü Cihaz CA IOA
HES_Generator_ActivePower Real HES_UNIT_01 1 100125
HES_Generator_Running Bool HES_UNIT_01 1 100126
HES_Turbine_Speed Real HES_UNIT_01 1 100127

Cause of Transmission – COT

EOS IEC 60870 Server farklı işlemler için farklı Cause of Transmission değerleri kullanmaktadır.

İşlem COT Açıklama
General Interrogation INTERROGATED_BY_STATION GI isteğine cevap
Read REQUEST Okuma isteğine cevap
Server Initialization INITIALIZED Sunucunun başlangıç durumunu bildiren mesaj
Command ACT_CON Komut kabul onayı

Sunucu Başlatma İşlemi

EOS IEC 60870 Sunucusu başlatıldığında IEC 104 haberleşme parametreleri oluşturulur, sunucu başlatılır ve INITIALIZED Cause of Transmission ile End Of Initialization mesajı gönderilir.


Start Server
     │
     ├── ApplicationLayerParameters
     │
     ├── APCIParameters
     │
     ├── Server oluştur
     │
     ├── Interrogation Handler
     │
     ├── ASDU Handler
     │
     ├── Server.Start()
     │
     └── EndOfInitialization
                

Sunucunun çalışır durumda olup olmadığı EOS SCADA içerisindeki IEC 60870 durum göstergesine de aktarılır.

Veri Kuyruğu

Sunucunun ASDU kuyruğu için maksimum kuyruk boyutu 10 olarak yapılandırılmıştır.


MaxQueueSize = 10

EnqueueMode = REMOVE_OLDEST
                

Kuyruk dolduğunda eski verilerin kaldırılarak yeni ASDU'ların kuyruğa alınması sağlanır.

Mevcut Implementasyonun Sınırları

Bu sayfa IEC 60870 standardının bütün özelliklerini değil, EOS SCADA içerisinde mevcut olan IEC 60870 Server implementasyonunu açıklamaktadır.

Mevcut kodda bulunmayan özellikler

  • Otomatik Data Change / Spontaneous yayın mekanizması bulunmamaktadır.
  • Historian veya IEC 60870 üzerinden geçmiş veri sunma mekanizması bulunmamaktadır.
  • CP24Time2a veya CP56Time2a ile zaman damgalı veri gönderimi mevcut kodda kullanılmamaktadır.
  • Single Command mesajı alınmakta ve ACT_CON gönderilmektedir; ancak gerçek proses kumandası uygulanmamaktadır.
  • Clock Synchronization mesajı alınmakta ve ACT_CON gönderilmektedir; ancak sistem saatinin değiştirilmesi mevcut kodda uygulanmamaktadır.
  • IEC 60870-5-101 seri haberleşme sunucusu bu implementasyonun kapsamında değildir.

Bu nedenle EOS IEC 60870 Server, mevcut haliyle özellikle SCADA sistemleri arasında veri erişimi, GI tabanlı veri toplama, Read işlemleri ve IEC 104 haberleşme testleri için kullanılabilecek bir sunucu yapısıdır.

Örnek IEC 60870 Veri Yapısı

Aşağıdaki örnek EOS SCADA içerisinde bulunan bir hidroelektrik santral veri noktasının IEC 60870-5-104 üzerinden nasıl temsil edilebileceğini göstermektedir.


TAG:
    HES_Generator_ActivePower

EOS Veri Türü:
    Real

Cihaz:
    HES_UNIT_01

Common Address:
    1

Sütun Adı:
    125

IOA:
    100125

Değer:
    42.75 MW

IEC 60870 Nesnesi:
    MeasuredValueShort

Quality:
    Valid
                

Bir başka örnekte kesici durum bilgisi:


TAG:
    HES_Breaker01_Status

EOS Veri Türü:
    Bool

Cihaz:
    HES_UNIT_01

Common Address:
    1

Sütun Adı:
    126

IOA:
    100126

Değer:
    TRUE

IEC 60870 Nesnesi:
    SinglePointInformation
                

Özet

EOS IEC 60870 Sunucusu, EOS SCADA içerisindeki proses verilerini IEC 60870-5-104 protokolü üzerinden dış SCADA ve telekontrol sistemlerine sunmak için geliştirilmiştir.

Sunucu; EOS cihazlarını Common Address, proses noktalarını ise Information Object Address üzerinden IEC 60870 adresleme yapısına eşleştirir.

Mevcut implementasyon özellikle General Interrogation, Read, ASDU veri aktarımı, Common Address / IOA eşleştirmesi ve IEC 60870-5-104 haberleşmesi üzerine kuruludur.

EOS SCADA böylece yalnızca bir IEC 104 istemcisi olarak veri tüketmekle kalmaz; aynı zamanda kendi içerisindeki proses verilerini IEC 60870-5-104 uyumlu sistemlere sunabilen bir IEC 104 Server olarak da çalışabilir.