Modbus (RS485) haberleşme nedir ?

Modbus, PLC, HMI, motor sürücüsü, sensör, sayaç ve diğer otomasyon cihazları arasında veri alışverişi için kullanılan açık ve yaygın bir uygulama katmanı haberleşme protokolüdür. RS-485 ise Modbus mesajlarının seri hatta taşınmasında çok sık kullanılan diferansiyel elektriksel arayüz standardıdır. Bu nedenle “Modbus” ile “RS-485” aynı şey değildir; biri mesajın anlamını ve yapısını, diğeri verinin kablo üzerinde elektriksel olarak nasıl taşındığını belirler.
En basit haliyle: RS-485 fabrikadaki cihazların birbirine bağlandığı elektriksel yol, Modbus ise bu cihazların o yol üzerinde konuşurken kullandıkları ortak dil gibidir. Bir PLC Modbus üzerinden bir sürücüye “çalış”, “şu register'ı oku” veya “hız referansını değiştir” isteği gönderebilir; RS-485 ise bu mesajın diferansiyel elektrik sinyalleri olarak kablo üzerinden taşınmasını sağlar.
Modbus nedir?
Modbus, Modicon tarafından 1979 yılında geliştirilen ve bugün çok sayıda üretici tarafından desteklenen bir endüstriyel mesajlaşma protokolüdür. Genel endüstriyel haberleşme sistemleri içerisinde en uzun ömürlü protokollerden biridir.
Modbus'un temel yapısı client/server istek-cevap modelidir. Güncel terminolojide client iletişimi başlatır ve bir istek gönderir; server isteği işler ve uygun cevabı döndürür. Eski cihaz kılavuzlarında aynı yapı için master/slave ifadeleri görülebilir.
Örneğin bir PLC client olarak bir hız kontrol cihazının durum register'larını okuyabilir. Bir HMI PLC'deki veya doğrudan saha cihazındaki değerleri görüntüleyebilir; proses verileri daha üst seviyede SCADA sistemlerine taşınabilir.
RS-485 nedir ve Modbus ile ilişkisi nedir?
RS-485, dengeli diferansiyel sinyalleşme kullanan ve birden fazla cihazın aynı seri bus üzerinde bulunmasına imkân veren elektriksel arayüz standardıdır. Endüstride Modbus RTU'nun en yaygın fiziksel altyapılarından biridir.
RS-485'in endüstride sık kullanılmasının nedenlerinden biri, A/B olarak adlandırılan diferansiyel iletken çiftinde oluşan gerilim farkının değerlendirilmesidir. İki iletkene benzer şekilde kuplajlanan elektromanyetik gürültünün önemli bölümü alıcı tarafından bastırılabilir. Bu özellik motor, kontaktör ve frekans konvertörü bulunan panolarda avantaj sağlar.
İki telli RS-485 ağı genellikle half-duplex çalışır; aynı diferansiyel çift hem gönderme hem alma için kullanılır. Ancak RS-485 standardı yalnız iki telli half-duplex yapıyla sınırlı değildir; uygun donanımla dört telli bağlantılar da kurulabilir.
Eski kaynaklarda sık görülen “RS-485 en fazla 32 cihaz destekler” ifadesi de tam doğru değildir. Klasik RS-485 yük modeli 32 unit load üzerinden tanımlanır. Modern 1/2, 1/4 veya 1/8 unit-load transceiver'larla uygun tasarımda daha fazla fiziksel düğüm kullanılabilir.
RS-485 hattı nasıl kurulmalıdır?
Modbus RTU kullanılan iki telli RS-485 ağında tercih edilen yapı lineer bus / daisy-chain topolojisidir. Ana haberleşme kablosu cihazlardan sırayla geçmeli, yıldız biçimindeki uzun yan dallar mümkün olduğunca önlenmelidir.
Uzun veya yüksek hızlı hatlarda ana bus'ın iki fiziksel ucuna kablonun karakteristik empedansına uygun terminasyon direnci konur. Endüstriyel RS-485 kablolarında yaklaşık 120 Ω yaygın bir değerdir. Her cihaza 120 Ω bağlamak doğru değildir; bu durumda bus aşırı yüklenebilir.
Bazı ağlarda bus boşta iken kararlı lojik durum oluşturmak için bias veya fail-safe dirençleri gerekir. Modern transceiver'ların bazılarında dahili fail-safe özelliği bulunduğundan harici bias uygulaması cihaz üreticisinin önerisine göre yapılmalıdır.
A/B isimlendirmesi de bütün üreticilerde aynı polarite mantığıyla kullanılmamıştır. Haberleşme oluşmuyorsa iki cihazın kılavuzundaki terminal tanımları karşılaştırılmalıdır; yalnız “A her zaman +, B her zaman −” ezberine güvenilmemelidir.

Modbus RS-485 haberleşme animasyonu
Aşağıdaki basit animasyonda bir Modbus client'ın iki farklı server cihaza sırayla istek gönderdiği ve yalnız adreslenen cihazın cevap verdiği görülür. Gösterim eğitim amaçlıdır; gerçek RTU çerçevesi adres, function code, veri ve CRC alanlarından oluşur.
Modbus RTU nedir?
Modbus RTU, seri Modbus haberleşmesinde verileri kompakt binary formatta taşıyan aktarım biçimidir. RTU çerçevesi genel olarak Adres + Function Code + Data + CRC yapısındadır.
RTU mesajlarında hata tespiti için CRC-16 kullanılır. Çerçevelerin birbirinden ayrılması da zamanlamayla yapılır; 19.200 bit/s ve altındaki hızlarda iki mesaj arasında en az 3,5 karakter süresi sessizlik bulunmalıdır.
Seri Modbus ağında normal server adresleri 1–247 aralığındadır. Adres 0 broadcast için ayrılmıştır. Broadcast isteğinde server'lar işlemi uygulayabilir ancak normal cevap göndermez.
Modbus ASCII nedir?
Modbus ASCII, Modbus mesajındaki byte'ları hexadecimal değerleri temsil eden ASCII karakterleriyle gönderir. Çerçeve “:” karakteriyle başlar ve CR/LF ile sonlanır. Hata kontrolünde RTU'daki CRC yerine LRC kullanılır.
ASCII aktarımının avantajı verinin karakter tabanlı olması nedeniyle özellikle eski teşhis araçlarında daha kolay izlenebilmesidir. Dezavantajı ise aynı Modbus bilgisinin RTU'ya göre daha fazla karakterle taşınmasıdır. Bunun “daha az enerji kullanması” gibi bir teknik avantajı yoktur.
Modbus TCP nedir?
Modbus TCP, Modbus uygulama mesajını TCP/IP ve Ethernet üzerinde taşır. Standart Modbus TCP server hizmeti genellikle TCP 502 portunu kullanır.
Modbus TCP çerçevesinde seri RTU'daki CRC kullanılmaz; bunun yerine Modbus PDU'sunun önünde MBAP Header bulunur. Ethernet ve TCP katmanlarının kendi bütünlük kontrolleri bulunduğundan RTU CRC'si TCP mesajının sonuna eklenmez.
Modbus RTU ile Modbus TCP aynı Modbus veri modelinden yararlanabilir ancak fiziksel ağ, framing ve transport yapıları farklıdır. Ethernet tarafındaki başka bir protokolle karşılaştırma için EtherNet/IP ve Modbus TCP farkları sayfası incelenebilir.
Modbus Plus nedir?
Modbus Plus, klasik Modbus RTU veya Modbus TCP ile aynı fiziksel ağ değildir. Modicon tarafından geliştirilen, token-passing kullanan eski ve özel bir endüstriyel ağ teknolojisidir. Özellikle eski Modicon PLC sistemlerinde görülebilir.
Bu nedenle “Modbus çeşitleri” denildiğinde Modbus RTU, ASCII ve TCP'nin aktarım yapılarıyla Modbus Plus gibi tarihsel olarak ayrı bir ağ teknolojisini aynı şeymiş gibi değerlendirmemek gerekir.
Modbus'ta coil ve register nedir?
Modbus veri modeli dört temel alan tanımlar: Coils, Discrete Inputs, Input Registers ve Holding Registers.
Coils tek bitlik okunabilir/yazılabilir değerlerdir. Discrete Inputs tek bitlik salt okunur değerlerdir. Input Registers 16 bitlik salt okunur, Holding Registers ise 16 bitlik okunabilir/yazılabilir değerlerdir.
Bir sensör veya transmitter ölçüm değerlerini input veya holding register'larda sunabilir. Bir motor sürücüsü ise hız referansı, kontrol kelimesi, durum kelimesi ve hata kodları için holding register'lar kullanabilir. Hangi register'ın ne anlama geldiğini cihaz üreticisinin register tablosu belirler.
Modbus function code nedir?
Function code, server cihazdan hangi işlemin istendiğini belirler. Sık kullanılan örneklerden bazıları:
01: Read Coils
02: Read Discrete Inputs
03: Read Holding Registers
04: Read Input Registers
05: Write Single Coil
06: Write Single Register
15: Write Multiple Coils
16: Write Multiple Registers
Her Modbus cihazı bütün function code'ları desteklemek zorunda değildir. Cihazın desteklediği fonksiyonlar kendi haberleşme kılavuzundan kontrol edilmelidir.
Farklı marka cihazlar Modbus ile otomatik haberleşir mi?
Hayır. İki cihazın Modbus desteklemesi ortak bir mesajlaşma yöntemi kullandıklarını gösterir ancak register haritalarının aynı olduğu anlamına gelmez.
Örneğin farklı markadaki bir PLC ile sürücü Modbus RTU üzerinden başarılı biçimde haberleşebilir; ancak PLC programında sürücünün doğru register adresleri, function code'ları, veri tipleri ve ölçek değerleri kullanılmalıdır.
32 bit integer veya floating-point değerlerde iki register birlikte kullanılabilir. Modbus 16 bit register yapısını tanımlasa da 32 bit değerlerin word order sırası üreticiye göre değişebilir. Haberleşme çalıştığı halde anlamsız değer okunuyorsa veri tipi ve word order kontrol edilmelidir.
Modbus ve USB ilişkisi nedir?
USB, standart Modbus uygulama spesifikasyonunun doğrudan fiziksel aktarım katmanlarından biri olarak düşünülmemelidir. Bilgisayarda USB-RS485 veya USB-RS232 dönüştürücü kullanıldığında işletim sistemi çoğunlukla sanal COM port oluşturur ve Modbus RTU gerçekte dönüştürücünün seri tarafında çalışır.
Benzer şekilde USB-Ethernet adaptörü kullanıldığında Modbus TCP yine Ethernet/TCP/IP üzerinden çalışır. USB burada taşıma adaptörü olabilir; ayrı bir “Modbus USB protokolü” olduğu anlamına gelmez.
Modbus acil stop için kullanılabilir mi?
Standart Modbus haberleşmesini fonksiyonel güvenlik veya acil durdurma protokolü olarak kullanmak doğru değildir. Normal çalışma komutları Modbus üzerinden gönderilebilir, fakat güvenlik fonksiyonları gerekli safety donanımı ve standartlarına göre ayrıca tasarlanmalıdır.
Örneğin bir VFD normal start/stop komutunu Modbus üzerinden alabilir; ancak güvenli duruş gereken sistemde cihazın STO veya diğer güvenlik fonksiyonları uygun güvenlik mimarisi içerisinde değerlendirilmelidir.
Modbus RS-485 haberleşmesi neden çalışmaz?
İlk olarak fiziksel hat kontrol edilmelidir: A/B bağlantısı, kablo, terminasyon, bus topolojisi ve ekranlama. Ardından baud rate, parity ve stop-bit ayarları karşılaştırılmalıdır.
Fiziksel hat doğruysa cihaz adresi, function code ve register offset kontrol edilir. Aynı hatta iki server'a aynı adres verilmesi cevapların çakışmasına neden olabilir.
İletişim var fakat değer yanlışsa sorun çoğu zaman register adresleme, veri tipi, ölçek veya word-order tarafındadır. “Kablo sağlam ve cevap geliyor” olması okunan değerin otomatik olarak doğru yorumlandığı anlamına gelmez.
Kısa saha kontrolü
1. İki cihaz aynı Modbus türünü mü kullanıyor: RTU, ASCII veya TCP?
2. Seri sistemde RS-485 veya RS-232 bağlantısı doğru mu?
3. Baud rate, parity ve stop bit ayarları aynı mı?
4. Seri server adresleri benzersiz mi?
5. Doğru function code kullanılıyor mu?
6. Register adresi doğru offset mantığıyla girildi mi?
7. RS-485 terminasyonu yalnız ana hattın iki ucunda mı?
8. 32 bit verilerde word order ve ölçek doğru mu?
İlgili Modbus ve Seri Haberleşme Konuları
Modbus SSS · Modbus RTU · RS-232 · Ethernet
İlgili Otomasyon Sayfaları
PLC · HMI Panel · SCADA · Hız Kontrol Cihazları · Sensörler