Modbus RTU / RS485 Haberleşme Nasıl Test Edilir?
Modbus RTU haberleşmesini test etmek, aslında beş soruyu sırayla cevaplamaktır: Kablo doğru mu? Seri ayarlar cihazla aynı mı? Slave ID doğru mu? Doğru fonksiyon kodu ve adres mi isteniyor? Gelen değer doğru yorumlanıyor mu? Sahada “cihaz cevap vermiyor” şikâyetlerinin çoğu ilk iki sorudan çıkar. Bu rehber bir USB–RS485 dönüştürücü ve ücretsiz bir Modbus test programıyla bu soruları 15 dakikada kapatmanın yolunu anlatır.
Gerekenler
| Malzeme | Not |
|---|---|
| USB–RS485 dönüştürücü | FTDI veya CH340 tabanlı ucuz modeller iş görür. Sürücü kurulu olmalı. |
| Bükümlü çift (twisted pair) kablo | Ekranlı tercih edilir. Ekran tek uçtan topraklanır. |
| 120 Ω direnç (2 adet) | Hattın iki ucundaki sonlandırma için. Çoğu cihazda DIP switch ile gelir. |
| Cihaz dokümanı | Baud, parity, slave ID ve register haritası burada yazar. |
| Modbus test programı | Örneğin ücretsiz Ranaliz iOT Tester (Windows ve macOS). |
Adım 1: Kabloyu ve kutupları kontrol et
RS485 iki telli, diferansiyel bir hattır. Hata kaynaklarının başında A/B kutup karışıklığı gelir: Bazı üreticiler A’yı “+”, bazıları “−” olarak etiketler; D+/D−, D0/D1, TX+/TX− gibi isimler de kullanılır.
- Cevap yoksa ilk deneme A ile B’yi yer değiştirmektir. RS485’te bu işlem cihaza zarar vermez.
- Hat zincir (daisy chain) şeklinde döşenmelidir. Yıldız topoloji ve uzun branşmanlar yansımaya yol açar.
- Hattın yalnızca iki fiziksel ucuna 120 Ω sonlandırma takılır; ortadaki cihazlara takılmaz.
- Bir segmentte standart olarak 32 birim yük ve yaklaşık 1200 m mesafe hedeflenir. Yüksek baud hızında güvenli mesafe kısalır.
Adım 2: Seri port ayarlarını cihazla eşle
Modbus RTU’da iki taraf aynı baud, parity, data bit ve stop bit değerlerini kullanmak zorundadır. Bir tanesi bile farklıysa ya hiç cevap gelmez ya da CRC hatası alırsınız.
| Parametre | Sık görülen değer | Not |
|---|---|---|
| Baud | 9600 veya 19200 | Modbus spesifikasyonunun varsayılanı 19200 |
| Data bit | 8 | RTU’da her zaman 8 |
| Parity | Even (çift) veya None | Spesifikasyonun varsayılanı Even |
| Stop bit | 1 (parity varsa) / 2 (parity yoksa) | Pratikte birçok cihaz 8N1 kullanır |
Windows’ta port “COM3” gibi, macOS’ta “/dev/tty.usbserial-…” gibi görünür. Dönüştürücüyü çıkarıp takarak hangi portun yeni geldiğini anlayabilirsiniz.
Adım 3: Hatta tek master olduğundan emin ol
Modbus RTU’da bir hatta yalnızca bir master konuşur. Hatta bir datalogger, PLC veya SCADA zaten sorgu yapıyorsa test programınızın paketleri onlarınkiyle çakışır. Sonuç rastgele timeout ve CRC hatalarıdır. Test süresince mevcut master’ı hattan ayırın veya durdurun.
Adım 4: Slave ID ve ilk okuma
Test programında şu dört değeri girin:
- Slave ID (unit ID): 1–247 arası. Fabrika değeri çoğu cihazda 1’dir.
- Fonksiyon kodu: Ölçümler için genellikle FC03 (holding register) veya FC04 (input register).
- Başlangıç adresi: Dokümandaki adres. Dikkat: “40001” yazan bir doküman çoğunlukla protokolde 0 adresini kasteder.
- Adet: İlk denemede 1–10 register yeterli.
Cevap geliyorsa haberleşme kurulmuştur. Bundan sonraki sorun artık “haberleşme” değil, veri yorumlama sorunudur.
Adım 5: Değeri doğru yorumla
32 bit değerler (float, uint32) iki register’a yayılır ve cihazlar word sırasını farklı tutar. Ekranda anlamsız büyük sayılar görüyorsanız:
- Veri tipini float32 / int32 / uint32 arasında değiştirin.
- Word swap (CDAB) ve byte swap seçeneklerini deneyin.
- Dokümandaki ölçek çarpanını (×0,1, ×0,01) kontrol edin.
Örnek: 230,4 V gerilimi “2304” olarak görüyorsanız değer doğrudur; ölçek 0,1’dir.
Sık hatalar ve anlamları
| Belirti | Olası sebep |
|---|---|
| Hiç cevap yok (timeout) | A/B ters, yanlış baud/parity, yanlış slave ID, yanlış COM port |
| CRC hatası | Parity veya stop bit farkı, sonlandırma eksik, gürültü, ikinci master |
| Ara ara timeout | Hatta ikinci master var, kablo çok uzun veya yıldız topoloji |
| Exception 02 | Adres cihazda yok; çoğunlukla 1 kayma (0/1 tabanlı adres) |
| Exception 01 | Cihaz bu fonksiyon kodunu desteklemiyor (FC03 yerine FC04 deneyin) |
| Değer saçma | Veri tipi, word sırası veya ölçek yanlış |
Ranaliz iOT Tester ile RS485 testi
Ranaliz iOT Tester, Modbus RTU’yu seri port üzerinden test eden ücretsiz bir masaüstü uygulamadır:
- Seri ayarlar: Baud, parity, stop bit, timeout ve poll aralığı cihaza göre ayarlanır.
- FC01–FC16: Coil, discrete input, holding ve input register okuma; tekli ve çoklu yazma.
- Görünüm: Ham değer, int/uint/float, hex, ikili, ASCII; big/little ve swapped endian.
- Kayıt: İşlem geçmişi tutulur, sonuç Excel/CSV’ye aktarılır.
Aynı uygulamada Modbus TCP, IEC-104 ve MQTT de bulunur. RS485 tarafını doğruladıktan sonra gateway’in TCP tarafına geçmek için başka program kurmanız gerekmez. Sürekli veri toplama ve buluta gönderme ise ayrı bir iştir; onun için Ranaliz Datalogger kullanılır.
SSS
RS485 ile Modbus RTU aynı şey mi?
Hayır. RS485 fiziksel katmandır (kablo ve elektrik seviyeleri). Modbus RTU ise bu kablo üzerinden konuşulan protokoldür. RS485 üzerinden başka protokoller de taşınabilir.
Bir RS485 hattına kaç cihaz bağlanır?
Standart yük ile 32 cihaz. Düşük yüklü (1/4 veya 1/8 yük) alıcılarla bu sayı artar. Modbus adresleme ise 247 slave ile sınırlıdır.
Sonlandırma direnci takmazsam ne olur?
Kısa hat ve düşük baud hızında çoğu zaman çalışır. Uzun hatta ve yüksek hızda yansımalar CRC hatası ve aralıklı timeout üretir.
Modbus testi için hangi program kullanılır?
Ücretsiz seçeneklerden biri Ranaliz iOT Tester’dır. Windows 10/11 ve Apple Silicon macOS için hazır kurulum vardır, lisans anahtarı istemez. Detaylar için Modbus test programı rehberine bakın.
Kaynaklar
- Modbus Organization — MODBUS over Serial Line Specification and Implementation Guide V1.02
- TIA/EIA-485-A — Electrical Characteristics of Generators and Receivers for Use in Balanced Digital Multipoint Systems