MODBUS Protokolü ve tüm özellikleri nelerdir ?

01.11.2020
A+ A-

Modbus TCP Protokolü Nedir?

Modbus, 1979 yılında Modicon tarafından PLC’ler ile kullanılmak için geliştirilen bir seri haberleşme protokolüdür. Modbus TCP/IP, Modbus mesaj yapısının verilerini uyumlu cihazlar arasında taşımak için TCP/IP ve Ethernet kullanır. Yani, Modbus TCP/IP fiziksel bir ağı (Ethernet), bir ağ standardıyla (TCP/IP) verileri temsil eden standart bir yöntem. Modbus TCP/IP mesajı basitçe bir Ethernet TCP/IP paketinde kapsüllenmiş bir Modbus iletişimidir.

Bazı bilinmesi gereken terimler şunlardır;

SCADA, tüm sahaları kontrol eden ve izleyen merkezi sistemleri ifade eder.

PLC, fabrikalardaki üretim bölümlerinde veya makinelerin kontrolü gibi işlemlerin denetimlerinde kullanılan otomasyon cihazıdır.

RTU(Remote Terminal Unit), otomasyon için çeşitli cihaz ve sistemlerin uzaktan izlenmesi ve kontrolü için kullanılan çok amaçlı bir cihazdır.

PDU(Protocol Data Unit), bir ağ üzerinden aktarılan belirli bir bilgi birimidir.

HMI(Human Machine İnterface),bir kişiyi bir makineye, sisteme veya cihaza bağlayan bir kullanıcı arayüzü veya gösterge panosudur.

Örnek olarak Modbus, bir sistemdeki cihazların aynı ağa bağlı sıcaklık ve nem ölçer cihazlarının sonuçlarını bir denetleyici bilgisayara veya PLC’ye iletmesini sağlar.

Modbus İletişimi

Modbus protokolü, cihazlar arasında iletişim kurmak için bir Master / Slave tekniği kullanır. Yani, Modbus protokolünü kullanan herhangi bir uygulamanın bir Modbus Master ve en az bir Modbus Slave’i olacaktır. Bir Modbus Master genellikle bir veya daha fazla Modbus Slave cihazı ile iletişim kuracak bir ana bilgisayar denetleyici bilgisayardır.

Modbus İletişim Protokolü Türleri

Modbus protokolünün Seri port ve Ethernet için çeşitli versiyonları vardır ve en yaygın olanları şunlardır:

Seri Haberleşme Şekline Göre

Modbus RTU

Modbus RTU protokolü master/slave mimarisine göre düzenlenmiş seri haberleşme protokollerini kullanır. Kullanım kolaylığı ve güvenilirlik nedeniyle yaygın olarak kullanılır. İki bitlik veriler halinde yollanan mesajların güvenli iletimi için kullanılan 16 bitlik CRC (hata kontrol mekanizması) ile basitlik ve güvenilirlik sağlanmış olur.

Modbus ASCII

Modbus ağ yapısında verilerin ASCII kodlama sistemine göre 8 bitlik kodlama kullanarak haberleştirme şekline dayanır. Bu kodlamanın avantajı arka arkaya gönderilen verilerin bir hataya neden olmadan iletilmesine olanak sağlar. LRC hata denetimi kullanılarak 8 bitten fazladan veri gönderilip gönderilmediği kontrol edilir.

Modbus Plus

Schneider ve Modicon tarafından geliştirilen bu protokol küresel bir Fieldbus ağına bağlıdır. PLC, sürücüler ve birçok çevre birim cihazlarında kullanılır. Master/slave yapısına bağlı çalışan PLUS RS-485 haberleşme protokolü ile endüstriyel uygulamalarda kullanılır. Yüksek hızlı veri iletiminin yanında esnek bir yapısı vardır.

ETHERNET Haberleşme Şekline Göre

Modbus TCP/IP Protokolü

Otomasyon cihazlarının denetim ve kontrol amaçlı tasarlanan kullanımı basit olan bir protokoldür. Klasik internet ağ topolojisine göre haberleşme sunan bu protokol standart olarak kullanılan internet kartları ile 100 Mbps hız ile veri aktarımı yapar. TCP/IP protokolü ile çok sayıda bağlantı yapılabilir. Sunucu/istemci cihazlar aralarında bağlantı kurulur ve veri aktarımı gerçekleşir. Herhangi bir cihaz istemci veya sunucu olabileceği gibi sistemde birçok sunucu veya istemci olabilir. TCP/IP protokolünde verilerin iletim hızı cihazlarda kullanılan işlemci ve internet kartı türüne bağlı olarak değişmektedir.

Modbus TCP/IP Protokolü Başlık Yapısı

Modbus TCP/IP versiyonunda mesajlar 2 ana bölümden oluşur. MBAP ve PDU bölümü mesajın bütünlüğünü oluşturur.

MBAP (Modbus Application Protocol Header) Başlığı Bölümü

Modbus TCP/IP çerçevelemesinde MBAP başlığı 4 bölümden oluşur. MBAP başlığının uzunluğu 7 byte’dır. MBAP bölümü haberleşme işlevine yöneliktir. Master ve slave ünitelerin birbiriyle haberleşebilmesi için bir takım bilgileri taşır.

Transaction Identifier ( İşlem Tanımlayıcı )

Master ve slave noktalarını birbirine ilişkilendirerek iki cihazın birbiriyle haberleşebilmesini sağlayan bölümdür. İşlem tanımlayıcı bölümü 2 Byte uzunluğundadır.

Protocol Identifier ( Protokol Tanımlayıcı )

Çoklu sistemler için düşünülmüştür. Modbus için 0 değerini alır. Gelecekte kullanılabileceği düşünülerek bu alan ayrılmıştır. Protokol tanımlayıcı bölümü 2 Byte uzunluğundadır.

Length ( Uzunluk )

Uzunluk bölümü , birim tanımlayıcı bölümü ve Modbus TCP/IP PDU bölümlerini kapsayan veri uzunluğunu byte olarak belli eder. Uzunluk bölümü 2 Byte uzunluğundadır.

Unit Identifier ( Birim Tanımlayıcı )

Bu alan sistem için yönlendirme amacıyla kullanılır. Ağ üzerinde bulunmayan uzak birimi belirleme amacıyla kullanılır. Birim tanımlayıcı bölümü 1 Byte uzunluğundadır.

Modbus TCP/IP PDU Bölümü

Modbus TCP/IP PDU bölümü fonksiyon kodu ve data olmak üzere 2 bölümden oluşmaktadır. Modbus TCP/IP çerçevelemesinde Modbus TCP/IP PDU bölümü temel olarak işleve yönelik kodları içerir.

Fonksiyon Kodu

Fonksiyon kodu bölümü, master üniteden slave üniteye mesaj gönderiminde yapılması talep edilen işleve yönelik koddan oluşur. Slave üniteden master üniteye cevap gönderiminde ise talebe karşılık gelen fonksiyon kodundan oluşur. Fonksiyon kodunun uzunluğu 1 byte’dır.

Data Bölümü

Data bölümü master üniteden slave üniteye mesaj gönderiminde yapılması talep edilen işleve yönelik özel veriler içerir. Slave üniteden master üniteye cevap gönderiminde ise talebe karşı gönderilecek cevap verileri veya hata kodlarından oluşur. Data bölümü değişken uzunluktadır.

Modbus’ta Veri Nasıl Saklanır?

Bilgi, Slave cihazında dört farklı çizelge halinde saklanır. İki çizelge on/off durum değerlerini (coils), diğer ikisi de sayısal değerleri (register) saklar. Coil ve register’ların her biri read-only ve read-write çizelgelerine sahiptir. Her bir çizelge 9999 değere sahiptir. Her bir coil ya da contact 1 bittir ve 0000 ile 270E arasında bir veri adresi tahsis edilmiştir. Her bir Register 1 kelime= 16 bit=2 byte’dır, ve ayrıca 0000 ile 270E arasında yer alan bir veri adresine sahiptir.

Coil/Register Numaraları mesajlarda gerçekten gözükmedikleri için sistem adı olarak düşünülebilir. Veri adresleri ise mesajlarda kullanılırlar. Örneğin; ilk Holding Register, 40001 numara, 0000 veri adresine sahiptir. Bu iki değer arasındaki fark ise offset(sapma)’tir. Her bir çizelge farklı bir offset’e sahiptir. 1, 10001, 30001 ve 40001.

Not: Her üretici kendisine ait cihazdaki Modbus TCP değişkenlerinin adreslerini farklı aralıklarda tutabiliyor.

Slave ID Nedir?

Bir network’deki her bir Slave kendine ait, 1 ile 247 arasında değişen adres numarasına sahiptir. Master veri talebinde bulunduğunda, Slave’in adres bilgisi gönderilen ilk byte’dır. Böylece, her bir Slave ilk byte’dan sonra mesajı gözardı edip etmeyeceğini anlar.

Function Code Nedir?

Master tarafından gönderilen ikinci byte function code olarak adlandırılır. Bu numaralar Slave’e erişeceği çizelgeyi ve onu okuyacağı (Read) ya da ona yazıp (Write) yazmayacağı bilgisini verir.

Genel Fonksiyon Kodu Tanımları