Bir üretim hattı nadiren ömrü boyunca tek bir PLC ailesiyle çalışır. Ana makineyi bir Siemens PLC kontrol ederken paketleme ünitesi, yardımcı sistem veya eski bir alt sistem verilerini Modbus TCP üzerinden sunabilir. Bu durumda SCADA tarafında her veri kaynağı için ayrı driver, bağlantı ve adresleme yapısı gerekir.
Protocol Gateway, SCADA tarafına daha sade bir arayüz sunar. Bu örnekte SMX-RNS20, SX-IO üzerinden makine LAN'ındaki iki PLC'yi okur, seçilen değerleri ortak bir tag modeline dönüştürür ve SCADA tarafındaki ağda tek bir Modbus TCP server üzerinden yayınlar.
Örnek Mimari
Makine LAN'ında iki bağımsız veri kaynağı bulunuyor: 192.168.10.10 adresinde bir Siemens S7 PLC ve 192.168.10.20 adresinde bir Modbus TCP PLC. SX-IO, native protocol driver'ları üzerinden her iki cihaza bağlanır ve yalnızca SCADA'nın ihtiyaç duyduğu değerleri polling ile okur.
SCADA tarafında ise tek bağlantı bulunur: SMX-RNS20'nin SCADA ağındaki IP adresi ve TCP 502 portu. SCADA'nın S7 driver kullanmasına veya PLC'lere doğrudan bağlanmasına gerek kalmaz. Protokole özgü tüm adresleme SX-IO içinde tutulur.
Burada WAN, açık internet anlamına gelmez. SMX-RNS20'nin tesis veya SCADA ağına bağlı arayüzüdür. Modbus TCP 502 portu doğrudan internete açılmamalıdır.
Basit Bir Protokol Dönüştürücüden Daha Fazlası
Basit bir protokol dönüştürücü, gelen istekleri anlık olarak diğer protokole çevirir. SX-IO ise önce kendi canlı tag modelini oluşturur. SCADA arayüzünü öngörülebilir yapan katman budur:
Siemens PLC, S7 adresleme ile; diğer PLC ise Modbus function code ve register adresleriyle okunur.
Kaynak adresler; tag adı, veri tipi, ölçeklendirme ve quality bilgisi içeren ortak modele aktarılır.
Yalnızca seçilen tag değerleri yayınlanır. Başka eşlemeler silinse bile mevcut register adresleri değişmez.
Adım 1: Tag Modelini Oluşturun
Her PLC için bir driver ekleyin; ardından her değerin kaynak adresini ve veri tipini tanımlayın. Küçük bir örnek aşağıdaki gibi olabilir:
| SX-IO tag | Kaynak | Adres | Veri tipi |
|---|---|---|---|
| line_speed | Siemens S7 | DB1,REAL4 | Float |
| tank_level | Modbus TCP | FC3,0 | UInt16 |
| pump_running | Modbus TCP | FC3,10,3 | Boolean |
S7-1200 ve S7-1500 PLC'lerde PUT/GET communication izni etkinleştirilmelidir. Data block'lar ayrıca mutlak (absolute) adresleme kullanmalıdır; optimize edilmiş DB'nin sabit bir byte düzeni yoktur. I, Q ve M alanlarına ise mutlak adresleme ile erişilebilir.
Adım 2: Sabit Register Haritasını Oluşturun
SX-IO Modbus TCP server, açıkça tanımlanan bir register haritası kullanır. Yeni tag eklenirken bir sonraki boş adres otomatik seçilebilir; ancak kaydedilen adres daha sonra değişmez. Bir eşleme silindiğinde, arkasındaki tüm SCADA adreslerini sessizce kaydırmak yerine register haritasında boşluk bırakılır.
| Register | Yayınlanan değer | Format | Uzunluk |
|---|---|---|---|
| 0–1 | line_speed | Float | 2 register |
| 2 | tank_level | UInt16 × 10 | 1 register |
| 3 | pump_running | Bool | 1 register |
| 1000 | Heartbeat | UInt16 | 1 register |
| 1001 | Quality bit 0–15 | Bit field | 1 register |
SX-IO, zero-based register adresleme kullanır. Bazı SCADA yazılımları register 0'ı holding register 40001 olarak gösterir. Devreye alma öncesinde SCADA driver'ın kullandığı adresleme biçimini kontrol edin.
Adım 3: SCADA Bağlantısını Yapılandırın
SCADA Modbus TCP client'ı, SMX-RNS20'nin SCADA tarafındaki IP adresine ve TCP 502 portuna yönlendirin. Yayınlanan aynı değerler FC3 ile holding register veya FC4 ile input register olarak okunabilir. Veri formatı, scale, byte order ve word order ayarlarını SX-IO'da tanımlanan register haritasıyla eşleştirin.
Bu arayüz okuma amaçlı tasarlanmıştır: SCADA güncel değerleri alır, ancak gateway üzerinden PLC'ye kontrol komutu yazmaz. Makine kontrolü; timing, interlock ve safety logic ile birlikte ait olduğu yerde, PLC içinde kalır.
Değerleri Quality Bilgisi Olmadan Okumayın
Modbus register tek başına sıfır değerinin gerçek proses değeri mi, yoksa başarısız bir PLC okumasının sonucu mu olduğunu gösteremez. Bu nedenle SX-IO, register haritasında durum ve geçerlilik bilgisi için iki alan ayırır:
Register 1000 — heartbeat. Her SX-IO polling çevriminde artar. Değişmesi duran sayaç, yayınlanan verinin artık güncellenmediğini gösterir.
Register 1001 ve sonrası — quality. Her eşlenen tag için register adresine göre sıralanmış bir quality bit bulunur. Quality bit değeri 1 ise güncel kaynak okuması geçerlidir.
Kaynak cihazdan bir değer okunamazsa ilgili data register sıfır yayınlanır ve quality bit temizlenir. SCADA, her sayısal değeri geçerli kabul etmek yerine quality bit ve heartbeat bilgisini birlikte değerlendirmelidir.
Ağ Bağlantısı Kesilirse Ne Olur?
İlgili tag değerlerinin quality bilgisi geçersiz olur. Diğer PLC'den veri toplama ve SX-IO'nun kalan fonksiyonları çalışmaya devam eder.
SX-IO yerel veri toplama, alarm, trend ve arşiv kaydı fonksiyonlarına devam eder. Bağlantı geri geldiğinde Modbus yeniden güncel değerleri sunar.
Modbus TCP canlı register arayüzüdür; Arşiv Verisi aktarım kanalı değildir. Arşiv kayıtları SQL, MQTT veya API gibi uygun bir entegrasyon üzerinden alınmalıdır.
Modbus'ı Korumalı Bir OT Servisi Olarak Değerlendirin
Klasik Modbus TCP'de yerleşik kimlik doğrulama veya şifreleme bulunmaz. SCADA tarafındaki arayüzü kontrollü bir tesis ağına bağlayın, yalnızca SCADA IP adresinin TCP 502 portuna erişmesine izin verin ve bu portu diğer tüm ağ bölgelerinden engelleyin.
Uzaktan erişim için ayrı ve şifreli bir erişim yolu kullanın. Modbus TCP'yi public IP üzerinden doğrudan yayınlamayın. Modbus Organization güncel terminolojide client ve server terimlerini kullanır; eski SCADA yazılımlarında aynı roller hâlâ master ve slave olarak adlandırılabilir.
Bu Mimari Ne Zaman Uygundur?
Bu yapı safety communication, deterministik kontrol veya Arşiv Verisi aktarım arayüzünün yerine geçmez. Bu sınırlar içinde kullanıldığında SMX-RNS20, farklı PLC protokollerinin bulunduğu bir ağı SCADA için tek, temiz ve sürdürülebilir bir Modbus TCP veri kaynağına dönüştürür.
