Protokoller

On bir saha protokolü ve her birinin gerçek doğrulama durumu

Sürücü listesi uzun olduğu için değil, hangisinin gerçek cihaz gördüğünü yazdığımız için bu sayfa işinize yarar. Olgun sürücüyle yeni sürücüyü ayırıyoruz; ikisini aynı satırda göstermek teknik değerlendirmede zaman kaybettirir.

Saha bağlantısı nasıl kurulur

Saha sürücüleri web uygulamasının içinde değil, ayrı bir süreçte (ScadaRuntime) çalışır. Bu ayrım IEC 62443 bölge/kanal modeline oturur: web sunucusu yeniden başlatıldığında saha okuması kesilmez, kullanıcı arayüzünde çıkan bir hata PLC bağlantısını düşürmez.

Her bağlantı için bağımsız bir döngü koşar. Bağlantının kendi tarama süresi (varsayılan 1.000 ms), kendi durumu ve kendi hata sayaçları vardır. Bir cihaz cevap vermediğinde diğer bağlantılar bundan etkilenmez.

Okunan ham değer ölçekleme ve kaydırma (scale/offset) uygulandıktan sonra ölü bant filtresinden geçer ve canlı veri yoluna yayınlanır. Yayın hedefi geçici olarak erişilemezse değerler bellek içi bir store-and-forward tamponunda birikir ve bağlantı toparlandığında sıraya sadık şekilde boşaltılır. Tampon sınırlıdır; dolduğunda en eski kayıt düşer — sonsuz büyümeyi tercih etmedik.

Sürücü matrisi

Okuma ve yazma sütunları koddaki yetenektir. Doğrulama sütunu o yeteneğin karşı ucunda ne görüldüğünü söyler — ikisi aynı şey değildir.

ProtokolOkumaYazmaDoğrulama durumuTipik kullanım
Modbus TCPVarVarYalnız derlemePLC, enerji analizörü, invertör, akıllı sayaç
Modbus RTUVarVarYalnız derlemeRS-485 hattındaki sayaç, sürücü ve saha cihazı
Modbus RTU-over-TCPVarVarYalnız derlemeSeri hattı ethernete taşıyan dönüştürücü arkasındaki cihazlar
OPC UA (istemci)VarVarYalnız derlemeVar olan OPC UA sunucusundan veri alma; PLC üreticisinin UA sunucusu
Siemens S7VarVarYalnız derlemeS7-300/400/1200/1500 ile ISO-on-TCP üzerinden doğrudan bağlantı
MQTTVarVarYalnız derlemeUzak saha, GSM hattı, IIoT ağ geçidi; push tabanlı veri
EtherNet/IPVarVarYalnız derlemeAllen-Bradley ve uyumlu PLC; tag adı tabanlı erişim
IEC 60870-5-104VarVarYalnız derlemeEnerji ve su altyapısında RTU telemetrisi
DNP3VarVarYalnız derlemeDağıtım şebekesi ve altyapı RTU/outstation
BACnet/IPVarVarYalnız derlemeBina otomasyonu: klima, kazan, aydınlatma
IEC 61850 (MMS)VarVarYalnız derlemeTrafo merkezi, koruma rölesi ve diğer IED'ler
SimulationVarVarLaboratuvarDonanımsız demo, eğitim, ekran ve alarm testi

DNP3, BACnet/IP ve IEC 61850 sürücüleri uzun süre yalnız okuma yaptı; yazma desteği bu sürümde eklendi ve gerçek cihaz karşısında henüz doğrulanmadı. Bu üç protokolde bir pilotu salt okuma ile başlatmanızı öneririz. Yeni bir sürücünün durumu değiştiğinde bu tablo güncellenir.

Üç doğrulama seviyesi ne anlama geliyor

Sütunda yalnız bu üç değer kullanılır. Ara ton yok; ara ton koymak sonunda her satırı "çalışıyor" gibi göstermeye yarıyor.

Sahada doğrulandı

Sürücü gerçek bir kurulumda, gerçek cihaz karşısında okuma ve yazma yaptı. Bağlantı kopması, yeniden bağlanma ve hatalı adres gibi durumlar sahada görüldü. Bugün hiçbir sürücümüz bu seviyede değil — saha doğrulama kampanyası yol haritamızda ve ilk pilot kurulumlarla başlayacak.

Laboratuvar

Sürücü simülatör veya test koşumu karşısında çalıştırıldı. Protokol akışı doğru işliyor ancak gerçek bir saha cihazı görmedi; üretici uygulama farkları burada ortaya çıkmaz.

Yalnız derleme

Kod protokol kütüphanesine karşı derlendi, adres çözümlemesi birim testleriyle doğrulandı. Protokolün karşı ucunda henüz gerçek bir cihaz olmadı. Bu satırlar bir taahhüt değil, bir yol haritasıdır.

OPC UA sunucusu — istemciden ayrı bir yetenek

Tabloda geçen OPC UA (istemci) bizim başka bir sunucudan veri okumamızdır. Bunun tersi de var: gömülü OPC UA sunucusu, MES, ERP, laboratuvar sistemi veya başka bir SCADA'nın bizden veri çekmesini sağlar. Adres opc.tcp://sunucu:4840/BellaScada biçimindedir.

Bu sunucu varsayılan olarak kapalı gelir ve devreye alma sırasında açılır. Sebebi ilke: kullanılmayan bir ağ dinleyicisi açık durmaz. Açıldığında ise varsayılanları gevşek değildir — aşağıdaki tablo kurulumdan sonra hiçbir ayar değiştirmediğiniz durumu gösterir.

Sahaya yazma bu kanaldan yapılmaz. Komut yolu kimlik doğrulamalı REST ucudur; izin kontrolü, komut onayı ve denetim izi orada yaşar. OPC UA sunucusunu okuma penceresi olarak tasarladık, ikinci bir kumanda kapısı olarak değil.

OPC UA sunucusu güvenlik varsayılanları

Kurulumdan sonra hiçbir ayar değiştirmediğinizde geçerli olan değerler. Gevşetme seçenekleri vardır ancak açıkça açılmaları gerekir.

AyarVarsayılanNot
Sunucunun kendisiKapalıDevreye alma sırasında açılır
Güvenlik politikasıBasic256Sha256, imzalı + şifreliİmzasız/şifresiz None yalnız açık bir gevşetme ayarıyla eklenir
Anonim erişimKapalıKullanıcı adı ve şifre zorunlu; kimlik jetonu da şifreli kanaldan geçer
Güvenilmeyen istemci sertifikasıReddedilirOtomatik kabul yok; operatör sertifikayı elle güven deposuna alır
SHA-1 imzalı sertifikaReddedilirAsgari anahtar boyu 2048 bit
Sertifika deposuKalıcı uygulama veri diziniGeçici dizin kullanılmaz; dizin temizlendiğinde sunucu kimliği değişmez
Sahaya yazmaYokKomut yolu REST ucudur — izin, onay ve denetim izi orada
Yedeklilik altındaYalnız aktif düğüm dinlerBeklemedeki düğüm aynı portu açmaya çalışmaz

Eski bir istemci yalnız imzasız bağlanabiliyorsa gevşetme ayarı açılabilir. Bunu yaptığınızda uyum dosyasına kalan risk olarak yazılması gerekir; devreye alma kontrol listemizde bu madde vardır.

UNS ve Sparkplug B

UNS (Unified Namespace) yayını, canlı tag değerlerini bir MQTT broker'ına hiyerarşik topic yapısında ({önek}/{cihaz}/{tag}) retained JSON olarak yazar. Böylece SCADA, MES ve analitik tarafının abone olacağı tek kaynağın katılımcısı olur. Yeni bir tüketici eklendiğinde SCADA tarafında iş yapılmaz.

Sparkplug B ayrı bir yayındır ve JSON değil protobuf konuşur. SCADA bir Edge Node olarak davranır: bağlanınca NBIRTH (tüm tag'ler + bdSeq), her güncellemede NDATA, bağlantı koptuğunda broker'ın yayınladığı NDEATH vasiyet mesajı. Topic spBv1.0/{grup}/{tip}/{düğüm} biçimindedir.

İkisi de varsayılan olarak kapalı gelir. Ayrıca dürüst olmak gerekirse: Sparkplug uyumluluğu gerçek bir host uygulaması (Ignition, HiveMQ vb.) karşısında doğrulanmadı. Sparkplug bir projede kritikse bunu devreye alma kapsamına yazıp host tarafıyla birlikte test ederiz.

Sizin protokolünüz listede yok mu

Listede olmayan bir protokol otomatik ret değildir. Bu konuda nasıl çalıştığımız şöyle.

Tek arayüz, tek kayıt satırı

Her sürücü aynı arayüzü uygular: bağlan, oku, yaz, durumu bildir. Yeni bir protokol eklerken var olan sürücülere dokunulmaz; sürücü fabrikasına tek satır eklenir. Bu yüzden yeni sürücü, çalışan bir kurulumdaki mevcut protokolleri riske atmaz.

Süreyi ölçmedik, tahmin de vermiyoruz

Yeni sürücünün ne kadar sürdüğüne dair yayımlayabileceğimiz bir ölçüm yok. Yaygın ve olgun bir kütüphanesi olan protokol belirgin şekilde kısa sürer; tescilli ve belgesiz bir protokol uzun. Somut süre ancak protokol adını ve cihaz ailesini gördükten sonra verilir.

Doğrulama için cihaz gerekir

Bir sürücüyü "yalnız derleme" seviyesinin üstüne çıkarmanın tek yolu karşı uçta gerçek bir cihaz veya güvenilir bir simülatör olmasıdır. Cihazı siz sağlarsınız ya da biz temin ederiz; hangisi olursa olsun bu kalem projede görünür bir madde olur.

Kabul kriteri sözleşmede kalır

Yeni sürücü içeren işlerde saha kabul testini sözleşmeye yazarız: hangi noktalar okunacak, hangi komutlar yazılacak, hangi hata durumları denenecek. Böylece "çalışıyor" iddiası karşılıklı imzalanmış bir listeye dayanır.

Sık sorulanlar

Aynı anda kaç protokol çalışabilir?

Protokol sayısında kod tarafında bir sınır yoktur. Her bağlantı kendi döngüsünde çalışır; aynı kurulumda Modbus TCP ile bir PLC, S7 ile başka bir PLC ve MQTT ile uzak bir saha aynı anda okunabilir. Ölçüm yaptık: 20.000 tag ile kuyruk taşması ve veri kaybı görülmedi. Sınır tag sayısı değil, tazeleme hızı: poll döngüsü 1.000 tagde 1,2 saniye, 5.000 tagde 6,3 saniye, 20.000 tagde 26 saniye sürüyor. Yani 20.000 tag çalışır ama saniyede bir tazelenmez. Şartnamenizde asgari tag sayısı varsa hangi tazeleme hızıyla istendiğini de söyleyin; ikisi birlikte anlamlı.

Seri hat (RS-485 / RS-232) nasıl bağlanır?

İki yol var. Sunucu sahadaysa Modbus RTU sürücüsü seri portu doğrudan kullanır (COM3, /dev/ttyS0); baud hızı, parite, veri biti ve dur biti bağlantı ayarında verilir. Sunucu sahadan uzaktaysa seri-ethernet dönüştürücü kullanılır ve bağlantı Modbus RTU-over-TCP olarak tanımlanır — çerçeve biçimi RTU kalır, taşıma TCP olur.

Bir sürücünün "doğrulanmadı" olması ne demek? Çalışmıyor mu?

Çalışmadığı anlamına gelmez, çalıştığını iddia edemeyiz anlamına gelir. Kod ilgili protokol kütüphanesine karşı derlenir ve adres çözümlemesi birim testleriyle doğrulanır; ama protokolün karşı ucunda gerçek bir cihaz olmadan üreticiye özgü uygulama farkları, zamanlama davranışı ve hata cevapları ortaya çıkmaz — sahada iş bozan şeyler genellikle tam olarak bunlardır. Bu yüzden o satırları "sahada doğrulandı" diye yazmıyoruz.

DNP3, BACnet veya IEC 61850 ile saha cihazına yazabilir miyim?

Kod bu üç protokolde yazmayı destekliyor; yazma desteği bu sürümde eklendi. Ancak gerçek cihaz karşısında doğrulanmadı. Önerimiz pilotu salt okuma ile başlatmak, yazmayı saha kabul testinde kontrollü biçimde açmaktır. Kumanda kritikse devreye almadan önce doğrulama planı çıkarılır.

Protokol sayısı için ek lisans ücreti var mı?

Tesis ve Kritik Tesis paketlerinde on bir protokolün tamamı dahildir; modül satın alma yoktur. Makine/Edge paketi tek bağlantı içindir, protokolü siz seçersiniz. Ayrıntı için fiyatlandırma sayfasına bakın.

Kendi tesisinizde görün

Donanım kurmadan, lisans beklemeden çalışan bir demo ortamı açıyoruz. Sahanızdaki protokolü söyleyin, o protokolle bağlanan bir örnek hazırlayalım.