EOS SCADA
Proses verilerinin bulunduğu ana veri kaynağıdır.
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 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
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.
Proses verilerinin bulunduğu ana veri kaynağıdır.
EOS SCADA ile dış SCADA sistemi arasındaki TCP/IP tabanlı telekontrol haberleşmesini sağlar.
EOS IEC 60870 Sunucusuna bağlanarak genel sorgu veya Read isteği gönderebilir.
Proses değerleri IEC 60870 ASDU yapıları içerisinde istemciye gönderilir.
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.
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.
İ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.
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.
| TAG | HES_Generator_ActivePower |
| Veri Türü | Real |
| Sütun Adı | 125 |
| IOA | 100125 |
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.
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 |
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.
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.
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.
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
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.
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.
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.
Uygun EOS veri noktalarının tamamı IEC 60870 sunucusunda sunulur.
Sayısal / dijital veri grubuna karşılık gelen noktalar sunulur.
Analog ölçüm noktaları sunulur.
EOS SCADA içerisinde seçilmiş veri noktaları sunulur.
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 |
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ı |
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.
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.
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.
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.
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
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.