Endüstriyel IoT

Modbus TCP ve RTU Rehberi: Yazmaçlar, Fonksiyon Kodları, Sık Hatalar

Modbus’ın veri modelini, RTU ve TCP çerçevelerini, en sık kullanılan fonksiyon kodlarını ve sahada en çok zaman kaybettiren adres/bayt sırası hatalarını açıklıyoruz.

3 dakika okuma ASP Dijital

Bu yazıda
  1. Veri modeli: dört tablo
  2. Sık kullanılan fonksiyon kodları
  3. RTU ve TCP: iki çerçeve
  4. Sahada en çok zaman kaybettiren üç hata
  5. Polling ve veri kalitesi
  6. Güvenlik
  7. Modbus verisini modern mimariye taşımak

Modbus, 1979’dan beri kullanılan ve bugün hâlâ sahada çok sayıda sayaç, sürücü, sensör ve PLC’de bulunan bir protokoldür. Sadeliği sayesinde yaygındır; ama bu sadelik, verinin anlamını taşımadığı anlamına da gelir. Bu rehber, Modbus ile çalışırken bilmeniz gereken temel noktaları toplar.

Veri modeli: dört tablo

TabloBoyutErişimGeleneksel adres
Bobinler (coils)1 bitOkuma/yazma0xxxx
Ayrık girişler (discrete inputs)1 bitSalt okunur1xxxx
Giriş yazmaçları (input registers)16 bitSalt okunur3xxxx
Tutma yazmaçları (holding registers)16 bitOkuma/yazma4xxxx

Sık kullanılan fonksiyon kodları

Kodİşlev
01 / 02Bobinleri / ayrık girişleri oku
03 / 04Tutma / giriş yazmaçlarını oku
05 / 06Tek bobin / tek yazmaç yaz
15 (0x0F) / 16 (0x10)Birden çok bobin / yazmaç yaz

Tek istekte okunabilecek miktar sınırlıdır: tutma ve giriş yazmaçlarında en fazla 125 yazmaç, bobinlerde en fazla 2000 bit. Çok sayıda etiketi okurken bu sınırları ve cihazın kendi sınırlarını dikkate alarak istekleri gruplamak gerekir.

RTU ve TCP: iki çerçeve

Modbus RTU seri hat (RS-485/RS-232) üzerinde çalışır. Bir çerçeve; 1 bayt cihaz adresi, 1 bayt fonksiyon kodu, veri ve 2 bayt CRC16 değerinden oluşur (CRC önce düşük bayt gönderilir). Çerçeveler arasında sessizlik süresi ile ayrılır, bu yüzden kablolama, sonlandırma direnci ve baud/parite ayarları kritiktir.

Modbus TCP Ethernet üzerinden (varsayılan port 502) çalışır. CRC yoktur; bütünlüğü TCP sağlar. Başında 7 baytlık MBAP başlığı bulunur: işlem kimliği (2 bayt), protokol kimliği (2 bayt, 0), uzunluk (2 bayt) ve birim kimliği (1 bayt). Birim kimliği, bir ağ geçidinin arkasındaki seri cihazları adreslemek için kullanılır.

Çerçeveleri elle oluşturup doğrulamak için Modbus Çerçeve Oluşturucu aracını kullanabilirsiniz.

Sahada en çok zaman kaybettiren üç hata

1. Adres kayması (0 tabanlı mı, 1 tabanlı mı?)

Cihaz belgesi “40001” yazıyorsa, protokol düzeyinde bu genellikle tutma yazmacı, adres 0’dır. Ancak bazı belgeler adresleri 1’den, bazıları 0’dan sayar. Okuduğunuz değer “bir yazmaç kaymış” görünüyorsa önce bunu kontrol edin.

2. 32 bit ve kayan nokta değerler

Yazmaçlar 16 bit’tir; 32 bit tamsayı veya float iki yazmaca yayılır. İki yazmacın kelime sırası (hangisi yüksek kelime) ve her yazmacın bayt sırası üreticiye göre değişir: ABCD, CDAB, BADC, DCBA. Yanlış seçim, anlamsız ama “makul” görünen sayılar üretir. PLC Veri Tipi Dönüştürücü bu kombinasyonları görmek için kullanışlıdır.

3. Ölçekleme ve birim

Modbus birim veya ondalık bilgisi taşımaz. “742” değeri 74,2 °C mi, 742 mi? Bu bilgi cihaz dokümanından gelir ve bir yerde yazılı olmalıdır. Aksi hâlde her tüketici kendi yorumunu yapar.

Polling ve veri kalitesi

Modbus istek-yanıt modelidir; cihaz kendiliğinden veri göndermez. Bu yüzden istemci periyodik olarak sorgular. Tarama aralığını, cihazın yanıt süresine ve hat hızına göre ayarlayın; aşırı sık sorgulama hem hattı hem cihazı yorar. Zaman aşımı ve yeniden deneme davranışını tanımlayın; “son geçerli değer” ile “okuma başarısız” durumunu ayırt eden bir kalite bilgisi tutun.

Güvenlik

Modbus’ın kimlik doğrulaması veya şifrelemesi yoktur; ağa erişebilen herkes okuyabilir ve yazabilir. Bu yüzden Modbus ağları mutlaka segmente edilmeli, yazma erişimi sınırlanmalı ve ağ geçitleri kontrollü noktalarda konumlandırılmalıdır.

Modbus verisini modern mimariye taşımak

Modbus verisini analitik veya bulutla paylaşmadan önce ölçekleme, birim ve anlam eklemek gerekir. HighByte Intelligence Hub’da Modbus TCP cihazlarına OPC UA ağ geçidi üzerinden erişilebilir; veri bir kez modellenip OPC UA, MQTT veya SQL gibi hedeflere tutarlı biçimde yayımlanabilir. Daha geniş bağlantı mimarisi için Endüstriyel IoT ve Bağlantı çözüm sayfamıza bakın.