Modbus RTU mu, TCP mi? Endüstriyel Haberleşme Rehberi

Gömülü Sistem 10 Mayıs 2026
Modbus RTU mu, TCP mi? Endüstriyel Haberleşme Rehberi

Modbus 1979'dan beri yaşıyor; endüstrinin "fonksiyonel ama eskimeyen" protokollerinden. RTU mu TCP mi sorusu çoğu zaman mevcut altyapıya bağlı; yeni tasarımda ise PLC ile cihazlarınızın nasıl konuşacağını netleştirmenize bağlı.

Aşağıda iki varyantın farkları, fiziksel katman gereksinimleri, register haritası mantığı ve sahada en sık çıkan problemler var.

Bu yazıda Modbus'ın iki ana varyantı olan RTU ve TCP'yi karşılaştırıyor, register modelini, uygulama örneklerini ve sıkça yapılan hataları ele alıyoruz.

Modbus Mimarisinin Temelleri

Modbus, master-slave (modern terminolojiyle client-server) mimari kullanır. Bir master birden fazla slave ile iletişim kurar; her slave'in benzersiz bir adresi vardır (1-247 arası). Slave'ler kendiliğinden mesaj göndermez; sadece master'ın talebine cevap verir.

Bu basit yapı sistemin tahmin edilebilir olmasını sağlar; yarışmalı (collision) durumlar olmaz. Ancak gerçek zamanlı sistemler için master'ın polling sıklığı dikkatlice ayarlanmalıdır.

Modbus RTU vs Modbus TCP Karşılaştırması

ÖzellikModbus RTUModbus TCP
Fiziksel KatmanRS-485 (genelde)Ethernet
Veri Hızı9600-115200 bps tipik10/100 Mbps
Mesafe1200 m'ye kadar (RS-485)Ethernet limitleri (100m+ )
TopolojiDaisy-chain (zincirleme)Yıldız (switch ile)
Maksimum Slave247 cihazİstemci sınırı pratik
Çerçeve YapısıBinary, CRC ileTCP/IP üzerinde MBAP header
Latans10-100 ms tipik1-10 ms tipik
MaliyetÇok düşükOrta
UygulamaSaha cihazlarıPLC ağları, SCADA

Modbus Veri Modeli

Modbus 4 farklı veri tipini destekler:

TipBoyutErişimTipik Kullanım
Coils (00001-09999)1 bitRead/WriteÇıkış röleleri, ayar bitleri
Discrete Inputs (10001-19999)1 bitReadAnahtar girişleri, sensör durumu
Input Registers (30001-39999)16 bitReadSıcaklık, basınç sensör değerleri
Holding Registers (40001-49999)16 bitRead/WriteSetpoint'ler, parametre değerleri

Holding Register en yaygın kullanılan tiptir. 16 bit'i (1 register) tek bir int veya word olarak okuyabilir veya 2 register'ı birleştirip 32-bit float (IEEE 754) saklayabilirsiniz. Bu durumda byte order (big endian / little endian) konusu kritiktir; üreticiler arası farklı yorumlar olabilir.

Yaygın Modbus Function Codes

KodAdıGörevi
0x01Read CoilsCoil'leri oku
0x02Read Discrete InputsDiscrete input'ları oku
0x03Read Holding RegistersHolding register oku (en yaygın)
0x04Read Input RegistersInput register oku
0x05Write Single CoilTek coil yaz
0x06Write Single RegisterTek register yaz
0x0FWrite Multiple CoilsBirden fazla coil yaz
0x10Write Multiple RegistersBirden fazla register yaz

Modbus RTU Çerçeve Yapısı

Bir RTU master istek çerçevesi şöyle yapılanır:

  • Slave Address: 1 byte (1-247)
  • Function Code: 1 byte (örn. 0x03 holding register oku)
  • Data: Function'a göre değişken (başlangıç adresi + sayı)
  • CRC: 2 byte (CRC16-Modbus)

Çerçeveler arasında en az 3.5 karakter uzunluğunda silent interval gerekir. Bu süre baudrate'a göre değişir; 9600 bps'de yaklaşık 4 ms'dir.

Modbus TCP Çerçeve Yapısı

TCP varyantında CRC yerine TCP/IP'nin doğal hata kontrolü kullanılır. Çerçeveye MBAP (Modbus Application Protocol) header eklenir:

  • Transaction ID: 2 byte (request-response eşleştirme için)
  • Protocol ID: 2 byte (Modbus için 0x0000)
  • Length: 2 byte
  • Unit ID: 1 byte (RTU'daki slave address karşılığı)
  • Function Code + Data: RTU ile aynı

Hangisini Tercih Etmeli?

Modbus RTU Tercih Edilmeli

  • Ekonomik bir kablolama gerekiyorsa (RS-485 + 2-3 kablo)
  • Yüksek elektriksel gürültülü ortamda (fabrika sahası)
  • Cihaz başına maliyet kritikse (Ethernet IC'ler daha pahalı)
  • Mevcut RS-485 altyapısı varsa
  • Düşük veri hacmi ve düşük cihaz sayısı yeterli ise

Modbus TCP Tercih Edilmeli

  • Mevcut Ethernet altyapısı kullanılabilir
  • Yüksek veri hızı veya çok cihaz gerekiyorsa
  • Uzun mesafelerde (Ethernet switch'lerle ölçeklenebilir)
  • SCADA ve MES sistemleriyle entegrasyon kolay
  • Bulut bağlantısı veya uzaktan erişim hedefleniyorsa

Tipik Mimariler

Saha Seviyesinde RTU, Üst Seviyede TCP

Yaygın bir mimari: saha cihazları (sensörler, sürücüler) RS-485 üzerinden Modbus RTU ile bir gateway'e bağlanır. Gateway, bu verileri Modbus TCP olarak SCADA veya MES sistemine aktarır. Bu yapı hem ekonomiktir hem de modern entegrasyonu kolaylaştırır.

Hibrit IoT Yaklaşımı

Modern IoT projelerinde Modbus tek başına yetmez. Bir gateway, fabrikadaki Modbus cihazlarından veri toplayıp MQTT veya HTTPS üzerinden buluta gönderir. Edge computing yaklaşımıyla, gateway'de basit kurallar veya AI işlemler yapılabilir.

STM32 ile Modbus Implementasyonu

Modbus stack için açık kaynak ve ticari seçenekler vardır:

  • FreeModbus: Açık kaynak, BSD lisansı, RTU+TCP destekli
  • nanoModbus: Çok hafif, kısıtlı MCU'lar için
  • STM32 ile FreeModbus + FreeRTOS kombinasyonu yaygındır
  • Ticari: Schneider, ABB, Siemens kendi stack'lerini sağlar

Tipik bir STM32 Modbus RTU slave implementasyonu:

  • UART (DMA destekli) ile RS-485 transceiver bağlantısı
  • DE/RE pini ile transmit yön kontrolü
  • FreeRTOS task'ında Modbus stack çalıştırma
  • Application register map'i ile bağlantı

Sıkça Yapılan Hatalar

1. Yanlış Byte Order

32-bit float değerlerini 2 register olarak okurken byte order (ABCD, CDAB, BADC, DCBA) farklı yorumlanabilir. Üreticilerin dokümantasyonu kontrol edilmeli, bazı durumlarda yazılımda swap işlemi yapılmalıdır.

2. Eksik Sonlandırma ve Bias

RS-485 hattında sonlandırma direnci (her iki uç) ve bias direnci (master tarafında 680 ohm tipik) eksikse, hat gürültülü olur ve kararsız iletişim yaşanır.

3. Çok Hızlı Polling

Master, slave'lere yanıt verme süresinden daha hızlı sorgu gönderirse zaman aşımı hataları olur. Slave cevap süresinin (özellikle yavaş cihazlarda) ölçülüp polling aralığı buna göre ayarlanmalıdır.

4. Function Code Yanlış Kullanımı

Discrete input (read-only) yerine coil (read-write) varsayarak yazma yapmaya çalışmak hata döner. Cihazın register map'i dikkatli incelenmelidir.

5. Modbus TCP'de Transaction ID Yönetimi

TCP varyantında transaction ID master tarafından artırılır ve cevapta aynı ID dönmelidir. Birden fazla istek paralel açıldığında ID karışıklığı race condition yaratır.

Modbus Test Araçları

  • Modbus Poll / Modbus Slave (Win-Tech): Modbus simülasyonu için klasik araç
  • QModMaster: Açık kaynak, çapraz platform
  • SimplyModbus: TCP ve RTU master simülasyonu
  • python-modbus, pymodbus: Otomatik test scriptleri için
  • Wireshark: Modbus TCP trafiğini incelemek için

Sonuç

Modbus, basitliği, açıklığı ve geniş ekosistemi sayesinde endüstriyel haberleşmenin halen baskın protokolü olmaya devam ediyor. RTU varyantı ekonomik saha çözümleri için, TCP varyantı modern Ethernet altyapısı ve IoT entegrasyonu için ideal. Profesyonel bir endüstriyel proje için her iki varyantın bilinmesi ve doğru senaryoda doğrusunun seçilmesi şarttır.

EA ARGE olarak, Modbus tabanlı sensör/aktüatör tasarımı, Modbus gateway geliştirme, IoT entegrasyon ve SCADA bağlantı projelerinde profesyonel hizmet sunuyoruz.

Hata avı

Modbus'ta hatanın yaklaşık %80'i adresleme veya register haritasıdır; geri kalanı zamanlama. Bir Modbus simülatörü açıp önceden test etmek saatler kazandırıyor; sahaya gitmeden önce her register'ı bilgisayardan oku-yaz mutlaka denenmeli.

EA ARGE Mühendislik Ekibi
EA ARGE Mühendislik Ekibi

Manisa merkezli elektronik ve yazılım Ar-Ge ekibi. PCB tasarımı, STM32/ESP32 gömülü sistemler ve IoT projeleri üzerine sahada edindiğimiz deneyimi yazıyoruz. Ekibi tanıyın · Projelerimiz


Blog'a Dön 10 Mayıs 2026