Modbus RTU ve Modbus TCP nasıl çalışır? Frame yapısını ve sık kullanılan function code'ları açıklayın.
Cevap
Modbus, endüstride yaygın kullanılan, istek/cevap (master/slave, yeni adıyla client/server) modeline dayanan basit bir protokoldür. Master sorar, slave cevap verir; slave kendiliğinden veri göndermez.
Modbus RTU
- Genellikle RS-485 üzerinde çalışır (birden çok slave, yarı çift yönlü).
- Binary frame:
Slave adresi (1) + Function code (1) + Veri (N) + CRC-16 (2, düşük byte önce) - Frame'ler arası en az 3.5 karakter süresi sessizlik ile ayrılır; frame içinde 1.5 karakterden uzun boşluk olmamalıdır.
- Adres 1-247 arasıdır; 0 broadcast'tir.
Modbus TCP
- Ethernet üzerinden TCP port 502 kullanılır.
- CRC yoktur (TCP zaten bütünlük sağlar). Başta 7 byte'lık MBAP header bulunur: transaction ID, protocol ID (0), uzunluk ve unit ID.
Veri modeli ve function code'lar
| Kod | İşlem | Veri tipi |
|---|---|---|
| 0x01 | Read Coils | 1-bit okuma/yazma |
| 0x02 | Read Discrete Inputs | 1-bit sadece okuma |
| 0x03 | Read Holding Registers | 16-bit okuma/yazma |
| 0x04 | Read Input Registers | 16-bit sadece okuma |
| 0x05 | Write Single Coil | |
| 0x06 | Write Single Register | |
| 0x10 | Write Multiple Registers |
Örnek: 1 numaralı slave'den 0. adresten başlayıp 2 holding register okumak
İstek : 01 03 00 00 00 02 C4 0B
| | |---| |---| |---|
| | adres adet CRC (low, high)
| function code
slave adresi
Cevap : 01 03 04 00 FA 01 2C xx xx
4 byte veri: reg0 = 0x00FA (250), reg1 = 0x012C (300)Hata cevabı
Slave hata durumunda function code'un en üst bitini set eder (0x03 yerine 0x83) ve bir exception kodu gönderir (01 geçersiz fonksiyon, 02 geçersiz adres, 03 geçersiz değer).
Pratik sorunlar
- Register adreslemesinde "40001" gösterimi ile protokoldeki 0 tabanlı adres arasındaki fark (off-by-one).
- 32-bit float veya int değerlerin iki register'a hangi sırayla bölündüğü (word order) cihazdan cihaza değişir.
- RS-485'te DE/RE pininin son byte tamamen gönderildikten sonra (UART TC kesmesi) bırakılması gerekir; erken bırakılırsa son byte bozulur.
İlgili Haberleşme Protokolleri soruları
- UART, SPI ve I2C arasındaki farklar nelerdir?
- CAN bus nasıl çalışır? Arbitration, hata yönetimi ve CAN FD farkını açıklayın.
- SPI'da CPOL ve CPHA nedir? Dört SPI modu arasındaki fark nasıl açıklanır?
- I2C protokolü nasıl çalışır? Adresleme, ACK/NACK ve clock stretching nedir?
- UART'ta baud rate, frame yapısı ve parity nedir? RS-485 UART'tan nasıl farklıdır?
- USB nasıl çalışır? Enumeration süreci, endpoint'ler ve transfer tipleri nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.