EOS SCADA Verileri
EOS SCADA içerisinde bulunan veri noktalarının güncel değerleri MQTT istemcilerine yayınlanabilir.
EOS MQTT Sunucusu, EOS SCADA Runtime içerisinde çalışan ve MQTT istemcileri ile EOS SCADA arasında veri iletişimi sağlayan bir MQTT sunucusudur.
Sunucu, yapılandırılmış IP adresi ve TCP portu üzerinde dinleme yapar. MQTT istemcileri bu adrese bağlanarak EOS SCADA verilerine SUBSCRIBE olabilir veya MQTT mesajları gönderebilir.
IP_ADRESI:PORT
Sunucu aktif olduğunda MQTT istemcileriyle bağlantı kurabilir. İstemci bağlantıları, bağlantı kesilmeleri, subscription ve unsubscribe işlemleri EOS SCADA tarafından izlenebilir.
EOS MQTT Sunucusu, MQTT'nin publish/subscribe mimarisini EOS SCADA'nın gerçek zamanlı veri yapısıyla birleştirir.
EOS MQTT Sunucusu bağımsız bir uygulama olarak çalışmak yerine EOS SCADA'nın veri yapısı ile doğrudan entegre olacak şekilde tasarlanmıştır. Sunucu, EOS veri noktalarının bilgilerini okuyarak MQTT topic'leri oluşturur.
EOS SCADA içerisinde bulunan veri noktalarının güncel değerleri MQTT istemcilerine yayınlanabilir.
Veri değiştiğinde ilgili MQTT topic'i üzerinden yeni değer istemcilere yayınlanır.
Birden fazla MQTT istemcisi farklı topic filtrelerine SUBSCRIBE olabilir.
Sunucu, istemcilerden gelen PUBLISH mesajlarını da alabilir ve topic üzerinden ilgili EOS veri noktasını belirleyebilir.
EOS MQTT Sunucusunun çalışma parametreleri EOS SCADA Proje Ayarları üzerinden yapılandırılır. Sunucunun hangi IP adresi üzerinde çalışacağı, MQTT istemcilerinin bağlanacağı port ve veri güncelleme aralığı proje ayarlarında belirlenebilir.
| Parametre | Açıklama | Varsayılan Değer |
|---|---|---|
| IP Adresi | MQTT Sunucusunun istemci bağlantılarını kabul etmek üzere dinleyeceği IP adresidir. | mqtt://IP_Adresi (Proje Ayarına bağlı) |
| MQTT Portu | MQTT istemcilerinin EOS MQTT Sunucusuna bağlanmak için kullanacağı TCP portudur. | Varsayılan 1883 |
| Veri Tipi | MQTT üzerinden yayınlanacak EOS SCADA verilerinin kapsamını belirler. | All, Digital, Analog veya Selected seçeneklerinden biri |
| Güncelleme Aralığı | EOS SCADA verilerinin MQTT Sunucusu tarafından kontrol edilme ve değişen değerlerin MQTT üzerinden yayınlanma aralığını belirler. | Varsayılan 1 saniye |
MQTT Portu için varsayılan değer 1883'tür. Bu değer, standart MQTT TCP iletişim 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 MQTT Sunucusu tarafından kontrol edilme sıklığını belirler. Bir veri noktasının değeri değiştiğinde, ilgili MQTT topic'ine yeni değer yayınlanır.
MQTT Sunucusu başlatıldığında, Proje Ayarlarında belirlenen IP adresi ve port üzerinde MQTT istemci bağlantılarını kabul edecek şekilde çalışmaya başlar.
EOS MQTT Sunucusu bütün EOS verilerini zorunlu olarak yayınlamak yerine, yapılandırmaya göre belirlenen veri grubunu MQTT üzerinden sunabilir.
Uygun durumdaki bütün EOS veri noktalarının MQTT üzerinden sunulmasına izin verir.
Veri tipi adında int bulunan tamsayı türündeki verileri kapsar.
Veri tipi adında real veya double bulunan analog verileri kapsar.
EOS SCADA içerisinde seçilmiş olan veri noktalarının MQTT üzerinden sunulmasını sağlar.
EOS MQTT Sunucusu, EOS SCADA veri ağacındaki grup yapısını kullanarak MQTT topic'leri oluşturur. Topic yapısı üst grup isimleri ile veri adının birleştirilmesiyle meydana gelir.
ÜST_GRUP/ALT_GRUP/VERİ_ADI
Örneğin EOS SCADA veri ağacında Santral / Türbin1 / AktifGüç şeklinde bir yapı bulunuyorsa MQTT topic'i aşağıdaki gibi oluşturulabilir:
Santral/Türbin1/AktifGüç
Bu yapı sayesinde MQTT topic hiyerarşisi ile EOS SCADA veri hiyerarşisi arasında doğrudan bir ilişki kurulabilir.
EOS MQTT Sunucusu, yalnızca ilgili topic'e SUBSCRIBE olmuş istemciler için gerekli verileri tarar. Böylece herhangi bir istemcinin talep etmediği veriler gereksiz yere yayınlanmaz.
Her veri noktası için son yayınlanan değer tutulur. EOS SCADA'daki değer önceki yayınlanan değerden farklı olduğunda yeni MQTT mesajı oluşturulur ve ilgili topic üzerinden yayınlanır.
EOS SCADA Değeri
↓
Abone istemci var mı?
↓
Değer değişti mi?
↓
MQTT PUBLISH
↓
Topic üzerinden istemcilere gönderim
Bu mekanizma, aynı değerin her tarama döngüsünde tekrar tekrar yayınlanmasını önleyerek MQTT trafiğinin azaltılmasına yardımcı olur.
EOS MQTT Sunucusu tarafından oluşturulan yayın mesajlarında MQTT Quality of Service seviyesi At Most Once olarak ayarlanmıştır.
| Özellik | Değer |
|---|---|
| QoS | 0 – At Most Once |
| Payload | EOS veri değerinin metinsel gösterimi |
| Topic | EOS veri ağacından oluşturulan MQTT topic'i |
QoS 0 seviyesinde mesaj için teslim garantisi bulunmadığından yapı düşük ek yükle gerçek zamanlı veri aktarımı için uygundur.
MQTT istemcileri istedikleri topic veya topic filtrelerine SUBSCRIBE olabilir. EOS MQTT Sunucusu bu subscription bilgilerini istemci ve veri noktası bazında takip eder.
| MQTT Filtre | Açıklama | Örnek |
|---|---|---|
| Topic | Tek bir topic'i izler. | Santral/Türbin1/AktifGüç |
| + | Tek bir topic seviyesini eşleştirir. | Santral/+/AktifGüç |
| # | Topic'in kalan seviyelerini kapsayan çok seviyeli wildcard. | Santral/# |
Sunucunun topic eşleştirme mekanizması + ve # wildcard karakterlerini destekler.
EOS MQTT Sunucusu, istemcilerin hangi topic'lere abone olduğunu takip eder. Bunun için istemci kimliği ile veri noktaları arasında ilişki tutulur.
Her MQTT istemcisinin abone olduğu EOS veri noktaları takip edilir.
Her EOS veri noktasına abone olan MQTT istemcileri ayrıca takip edilir.
İstemci topic filtresi ile EOS topic'i karşılaştırılarak ilgili veri noktaları belirlenir.
İstemci aboneliğini kaldırdığında ilgili veri ve istemci eşleştirmeleri güncellenir.
Sunucu, MQTT istemcilerinin temel bağlantı ve subscription olaylarını izler.
| Olay | Açıklama |
|---|---|
| Client Connected | Bir MQTT istemcisi sunucuya bağlandığında oluşur. |
| Client Disconnected | Bir MQTT istemcisinin bağlantısı kesildiğinde oluşur. |
| Client Subscribed | İstemci bir topic filtresine SUBSCRIBE olduğunda oluşur. |
| Client Unsubscribed | İstemci bir topic filtresinden UNSUBSCRIBE olduğunda oluşur. |
| Client Publish | İstemci sunucuya bir MQTT mesajı gönderdiğinde alınır. |
MQTT istemcileri EOS MQTT Sunucusuna PUBLISH mesajları gönderebilir. Sunucu mesajın topic ve payload bilgilerini alarak topic'i EOS veri noktalarıyla karşılaştırır.
MQTT Client
│
│ PUBLISH
│ Topic + Payload
▼
EOS MQTT Sunucusu
│
│ Topic eşleştirme
▼
EOS Data ID
Gelen topic, EOS MQTT Sunucusunda tanımlı topic'lerden biriyle eşleşirse ilgili Data ID belirlenebilir. Mesajın veri tipi de EOS veri tanımından alınabilir.
Mevcut uygulama kodunda bu aşamadan sonra payload'ın doğrulanması, veri tipine dönüştürülmesi ve ilgili EOS verisine yazılması için gerekli bölüm henüz tamamlanmamıştır. Bu nedenle mevcut sürümde istemciden alınan PUBLISH mesajı işlenmekte ve ilgili veri eşleştirmesi yapılabilmekte, ancak otomatik EOS veri yazma işlemi henüz gerçekleştirilmemektedir.
Bir MQTT istemcisi sunucuya bağlandıktan sonra EOS SCADA verilerini ilgili topic'lere SUBSCRIBE olarak izleyebilir.
Belirli bir veri için:
Santral/Türbin1/AktifGüç
Bir grup altındaki tüm verileri izlemek için:
Santral/Türbin1/#
Belirli bir seviyedeki herhangi bir cihazın aynı veri adını izlemek için:
Santral/+/AktifGüç
Örneğin bir MQTT istemcisi ile:
mosquitto_sub -h IP_ADRESI -p 1883 -t "Santral/Türbin1/#"
İstemciden EOS MQTT Sunucusuna mesaj göndermek için:
mosquitto_pub -h IP_ADRESI -p 1883 -t "Santral/Türbin1/AktifGüç" -m "125.4"
EOS MQTT Sunucusunun veri yayınlama işlemi, EOS SCADA'nın MQTT güncelleme döngüsü içerisinde periyodik olarak gerçekleştirilir.
MQTT Sunucusu çalışıyor mu?
│
▼
Abone veri var mı?
│
▼
EOS veri değeri okunur
│
▼
Veri tipi kontrol edilir
│
▼
Son yayınlanan değer ile karşılaştırılır
│
Değişti mi?
/ \
Hayır Evet
│ │
│ ▼
│ MQTT PUBLISH
│ │
└──────────┘
Sunucuya herhangi bir MQTT istemcisi abone değilse yayınlanacak verilerin taranması yapılmaz. Böylece kullanılmayan MQTT yayınlarının oluşturduğu gereksiz işlem ve ağ trafiği azaltılır.
EOS MQTT Sunucusu, EOS SCADA tarafından başlatılıp durdurulabilir. Sunucunun çalışma durumu EOS SCADA içerisindeki MQTT durum mekanizması üzerinden takip edilir.
| İşlem | Açıklama |
|---|---|
| StartMQTTServer | MQTT sunucusunu başlatır ve istemci bağlantılarını kabul etmeye başlar. |
| UpdateMQTTServer | MQTT veri yayınlama döngüsünü çalıştırır. |
| StopMQTTServer | MQTT sunucusunu durdurur. |
MQTT'nin publish/subscribe mimarisi sayesinde EOS SCADA verileri, aynı ağ üzerindeki birden fazla yazılım veya cihaz tarafından standart MQTT istemcileri kullanılarak alınabilir.
EOS MQTT Sunucusu, EOS SCADA sistemindeki gerçek zamanlı verileri MQTT protokolü üzerinden dış uygulamalara ve MQTT istemcilerine sunan entegre bir MQTT sunucusudur.
Sunucu, EOS veri ağacından otomatik olarak MQTT topic'leri oluşturur, istemcilerin subscription durumlarını takip eder ve yalnızca abone olunan verilerdeki değişiklikleri MQTT üzerinden yayınlar.
+ ve # wildcard desteği sayesinde istemciler tek bir veriye, belirli bir topic seviyesine veya bir topic ağacının tamamına abone olabilir.
MQTT istemcilerinden gelen PUBLISH mesajları da alınarak topic ile EOS Data ID arasında eşleştirme yapılabilir. Mevcut uygulama yapısında istemciden EOS verisine yazma işlemi henüz tamamlanmamıştır.
Bu özellikleriyle EOS MQTT Sunucusu, EOS SCADA sistemlerini MQTT tabanlı endüstriyel IoT, veri izleme ve dış uygulama entegrasyonlarına bağlayan pratik bir iletişim katmanı olarak kullanılabilir.