Modbus Protoklü, genelde otomasyon için kullanılan cihazlar arasında veri alış verişini sağlayan uygulama protokolüdür. Basitçe bir istemci-sunucu protoklü olan Modbus, istemci tarafından gönderilen talebe karşı, sunucunun verdiği cevabı içeren iletiler olarak özetlenebilir. İletim halinde olan cihazlar “Master” ya da “Slave” olarak nitelendirilirler. Burada master, istemci; slave ise sunucudur.
Aradaki iletişim Protocol Data Unit (PDU) tabir edilen basit paketlerle yapılır. Protokole göre 3 tip PDU söz konusudur:
-
Talep için PDU: Fonksiyonu belirten bir kod (1 byte) ve fonksiyona özel veriler (değişken sayıda byte)
-
Cevap için PDU: Talebe karşılık gelen fonksiyon kodu (1 byte) ve cevap olarak gönderilecek veriler (değişken sayıda byte)
-
Kural dışı cevap için PDU: Talebe karşılık gelen fonksiyon kodu + 0x80 (128), (hata kodu, 1 byte) ve kural dışılığın belirtildiği kod (Exception code, 1 byte)
Fonksiyonların her biri için 1 ile 127 aralığında bir kod atanmıştır. 129 ve 255 arasında ise hata kodları bulunur. Bu fonksiyonlar için spesifikasyonun ilk versiyonunda sınıf 1.. sınıf 3 olmak üzere 3 ayrı sınıf tanımlanmıştır. Yeni sürümlerde ise fonksiyonlar için public, kullanıcı tarafından tanımlanan ve rezerve olarak gruplama söz konusudur. Otomasyon amacıyla kullanılan fonksiyonlar public grubundaki fonksiyonlardır.
Modbus veri tipleri
Discrete input --------------------------------- tek bit ve read-only
Discrete output (coils) ---------------------- tek bit ve read-write
Input Registers ---------------------------------16 bit word ve read only
Holding Registers (ya da Registers)--------16 bit word ve read only
Spesifikasyon bir cihazda verilerin nasıl sınıflandırılması gerektiğine girmez; ancak bu değerlere erişim için kullanılacak fonksiyonlar açısından veri tipi önemlidir. Modbus ile bağlanılacak bir cihazda hangi basit fonksiyonların kullanılacağı konusunda manuelinin incelenmesi gerekir.
Modbus Uygulamaları
Modbus kablo, fiber, radyo gibi tüm bağlantı tipleri için kullanılabilir; ancak en yaygın iki tipi: Seri ve IP modbus uygulamalarıdır.
1. Seri: Asenkron Master /Slave
Modbus ilk olarak asenkron seri ağ iletişimi için kullanılmıştır. Uygulama protokolü seri bir ara yüz üzerinde ve seri iletişim standartlarına göre çalışır. Kablo üzerinde en yaygın olanları:
RS232 (EIA232) : İki nokta arası kısa mesafe iletişiminde kullanılır.
RS422/RS485: RS 422, RS232 gibi, ancak iki yönlü versiyonudur ve daha uzun mesafeleri de destekler. RS-485 ise fazla sayıda nokta arasında iletişim için kullanılabilir (Aynı hat üzerinden birden fazla cihaz olabilir) ve bu cihazlardan biri master, digerleri slave olarak çalışırlar.
Bu bağlantılarda fiili haberleşmede PDU ilave alanlarla uzatılır. Yani PDU’ya bir başlık (Header) bir de hata (Error) checksum paketi eklenir. Bu uzatılmış pakete Application Data Unit (ADU) ismi verilir ve maksimum paket boyutu 256 byte’dır. Bu limit tüm modbus protokol uygulamaları için geçerlidir.
Seri ADU
Header içeriğinde 1 byte’lık adres alanı bulunur. Check sum bölümünde ise header alanı da dahil olmak üzere tüm paket üzerindeki hata bulunur. Modbus mesajı (ADU) bası ve sonu belli bir paket içine yerleşir. Böylece mesajın basşı ve sonu bellidir; kısmi mesajlar da ayrılabilir. İki farklı iletim modu vardır. Bu modlarda kodlama paketleme ve checksum farklıdır.
ASCII: Paketler byte basına iki ASCII karakterle kodlanır (hexadecimal gösterim). Error check sum Longitudinal Redundancy Check (LRC; 1 byte) ile gösterilir ve mesajlar : ile başlar (“:”, 0x3A) ve – ile biter ("CRLF", 0x0D0A). CRLF: Carriage Return – Line Feed. Karakerler arası 1 sn’lik duraklamalar söz konusu olabilir.
RTU (Remote Terminal Unit): Daha yüksek iletim yoğunluğu için karakterler binary olarak gönderilir. Error check sum, Cyclic Redundancy Check (CRC) ile ifade edilir. Mesajlar 3.5 karakter zamanına denk gelen bir sessizlikle başlar ve biter. Bu en basitçe ağ üzerindeki baud rate uyarınca geçen karakter zamanının çarpımıdır. 2 byte arasında geçen maksimum sessiz süre 1.5 karakter zamanıdır. RTU uygulaması yalnızca master tarafını destekler. Gecikme süresi düşük gerçek zamanlı sistemlerde güvenli şekilde kullanılamayabilir.
2. IP: Master/Slave
TCP/IP tabanlı Modbus uygulaması (Modbus/TCP) 502 no’lu com portu üzerinden yürütülür. Bu uygulamada PDU başındaki paket IP’ye özel bir başlangıçtır. Bu uygulamalarda birden fazla master söz konusu olabilir ve iletişim iki yönlüdür (cihazlar hem master hem de slave olarak çalışabilir).
ADU (TCP)
IP’ye özel header paketi spesifikasyonda MBAP olarak geçer ve 7 byte uzunluğundadır. İçinde:
-
Başlatma berleyicisi (2 byte) iki tarafı ilişkilendirerek aralarında iletişimi sağlar. – Transaction identifier
-
Protokol belirleyicisi (2 byte) modbus için 0’dır. İleride gelebilecek versiyonlar için ayrılmıştır.
-
Uzunluk (2 byte), sonra gelen byteların sayısıdır.
-
Birim belirleyicisi (1 byte) TCP/IP ağı üzerinde olmayan uzak birimi belirlemek için kullanılır.
Modbus UDP Spesifikasyonu
Çalışma prensibi TCP ile aynıdır. Ancak master/slave arasında paket kaybı olabilir. Master paket kaybını bildiği için talebi yenileyebilir.