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.
| Protokol | Okuma | Yazma | Doğrulama durumu | Tipik kullanım |
|---|---|---|---|---|
| Modbus TCP | Var | Var | Yalnız derleme | PLC, enerji analizörü, invertör, akıllı sayaç |
| Modbus RTU | Var | Var | Yalnız derleme | RS-485 hattındaki sayaç, sürücü ve saha cihazı |
| Modbus RTU-over-TCP | Var | Var | Yalnız derleme | Seri hattı ethernete taşıyan dönüştürücü arkasındaki cihazlar |
| OPC UA (istemci) | Var | Var | Yalnız derleme | Var olan OPC UA sunucusundan veri alma; PLC üreticisinin UA sunucusu |
| Siemens S7 | Var | Var | Yalnız derleme | S7-300/400/1200/1500 ile ISO-on-TCP üzerinden doğrudan bağlantı |
| MQTT | Var | Var | Yalnız derleme | Uzak saha, GSM hattı, IIoT ağ geçidi; push tabanlı veri |
| EtherNet/IP | Var | Var | Yalnız derleme | Allen-Bradley ve uyumlu PLC; tag adı tabanlı erişim |
| IEC 60870-5-104 | Var | Var | Yalnız derleme | Enerji ve su altyapısında RTU telemetrisi |
| DNP3 | Var | Var | Yalnız derleme | Dağıtım şebekesi ve altyapı RTU/outstation |
| BACnet/IP | Var | Var | Yalnız derleme | Bina otomasyonu: klima, kazan, aydınlatma |
| IEC 61850 (MMS) | Var | Var | Yalnız derleme | Trafo merkezi, koruma rölesi ve diğer IED'ler |
| Simulation | Var | Var | Laboratuvar | Donanı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.
| Ayar | Varsayılan | Not |
|---|---|---|
| Sunucunun kendisi | Kapalı | 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şim | Kapalı | Kullanıcı adı ve şifre zorunlu; kimlik jetonu da şifreli kanaldan geçer |
| Güvenilmeyen istemci sertifikası | Reddedilir | Otomatik kabul yok; operatör sertifikayı elle güven deposuna alır |
| SHA-1 imzalı sertifika | Reddedilir | Asgari anahtar boyu 2048 bit |
| Sertifika deposu | Kalıcı uygulama veri dizini | Geçici dizin kullanılmaz; dizin temizlendiğinde sunucu kimliği değişmez |
| Sahaya yazma | Yok | Komut yolu REST ucudur — izin, onay ve denetim izi orada |
| Yedeklilik altında | Yalnız aktif düğüm dinler | Beklemedeki 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.