Skip to content Skip to footer

Modbus Protokolü

Modbus Nedir?

Modbus, programlanabilir mantık denetleyicileri (PLC’ler) ile kullanılmak üzere 1979 yılında Modicon® tarafından yayınlanmış ve Modicon tarafından da geliştirilmesi devam eden seri iletişim protokolüdür. Basit bir ifadeyle elektronik cihazlar arasında seri hatlar üzerinden bilgi iletimi için kullanılan bir yöntemdir.

Standart bir Modbus ağında, bir Server ve her biri 1 ila 247 arasında farklı adrese sahip 247’ye kadar Client vardır. Client, Serverlardan bilgi alabildiği gibi, bilgi de yazabilmektedir.

Resmi Modbus teknik bilgileri http://www.modbus.org/ adresinden ulaşılabilir.

Modbus Ne İçin Kullanılır?

Modbus açık bir protokoldür, yani üreticiler telif ücreti ödemeden ekipmanlarına ekleyebilmektedir. Endüstride standart bir iletişim protokolü haline gelmiştir ve şu anda endüstriyel elektronik cihazları bağlamak için en yaygın olarak kullanılan protokoldür. 

Modbus, tipik olarak enstrümantasyon ve kontrol cihazlarından gelen sinyalleri bir ana kontrolöre veya veri toplama sistemine ileten, örneğin sıcaklık ve nemi ölçen aletten verileri alan ve bu verileri bilgisayardaki bir sisteme (SCADA, IOT platform) ileten bir haberleşme protokolüdür. 

Modbus protokolü, seri (Modbus RTU ve Modbus ASCII) ve Ethernet (Modbus TCP) altyapısı için iki farklı çeşitte mevcuttur.

Modbus Nasıl Çalışır? 

Modbus cihazlar arasında seri hatlar üzerinden iletilir. En basit kurulum, bir İstemci (Client) ve bir Sunucu (Server) olmak üzere iki aygıttaki seri bağlantı noktalarını bağlayan tek bir seri kablo olacaktır. Veriler bit adı verilen birler ve sıfırlar dizisi olarak gönderilir. Her bit, bir voltaj olarak gönderilir. Sıfırlar pozitif voltajlar ve birler negatif olarak gönderilir. Bitler çok hızlı bir şekilde gönderilir. Tipik bir iletim hızı 9600 baud’dur (saniyede 9600 bit).

Standart Modbus Registerları Nelerdir?

Veriler, Server cihazında dört farklı tabloda saklanır. İki tablo açık/kapalı durum değerleri (coils) saklar, iki tablo ise sayısal değerleri (registers) saklar. Bobinler ve kayıtların her biri salt okunur bir tabloya ve okuma-yazma tablosuna sahiptir. Her tablonun 9999 değeri vardır. Her durum bilgisi (discrete input) 1 bittir ve 0000 ile 270E arasında bir veri adresi atanır. Her sayısal değer(register) 1 kelime = 16 bit = 2 bayt’tır ve ayrıca 0000 ile 270E arasında veri adresine sahiptir.

Durum ve sayısal değerlerProtokol veri aralığıTablo ismi
00001 – 099990000h-270EhOutput coils
10001 – 199990000h-270EhDiscrete inputs
30001 – 399990000h-270EhInput registers
40001 – 499990000h-270EhHolding registers

 

Fonksiyon Kodu Nedir?

Client tarafından gönderilen ikinci bayt, işlev kodudur. Bu kod sunucuya hangi tabloya erişeceğini ve tablodan okuma mı yoksa tabloya yazma mı yapması gerektiğini söyler.

CRC Nedir?

CRC, Döngüsel artıklık denetimi anlamına gelir. Hata tespiti için her modbus mesajının sonuna eklenen iki bayttır. Mesajdaki her bayt, CRC’yi hesaplamak için kullanılır.Alıcı cihaz ayrıca CRC’yi hesaplar ve bunu gönderen cihazdan gelen CRC ile karşılaştırır. Mesajdaki bir bit bile yanlış alınırsa, CRC’ler farklı olacak ve bir hata oluşacaktır.

Modbus Örnek Dizilimi Nasıl Olmaktadır?

Örnek: Server, Modbus adresi 2 olan PLCden 00033 başlayıp 12 Coil okumaya çalışıyor. 00040 and 00042 coilleri setleniyor diğerleri, aynı durumda kalıyor:

 TalepCevap
Modbus ASCII3A 30 32 30 31 30 30 32 30 30 30 30 43 44 31 0D 0A3A 30 32 30 31 30 32 38 30 30 32 37 39 0D 0A
Modbus RTU02 01 00 20 00 0C 3D F602 01 02 80 02 1D FD
Modbus TCP00 05 00 00 00 06 02 01 00 20 00 0C00 05 00 00 00 05 02 01 02 80 02

 

Modbus ASCII ve Modbus RTU Arasındaki Fark Nedir?

Modbus RTU ve Modbus ASCII aynı protokolü konuşur. Tek fark, kablo üzerinden iletilen baytların RTU’da binary olarak, Modbus RTU ile okunabilir ASCII olarak sunulmasıdır. RTU hakkında not edilmesi gereken önemli nokta, RTU mesajının bir “Start_of_text” göstergesine sahip olmamasıdır. İletişimde alıcı taraf, yeni bir mesajın başlangıcını belirlemek için “sessiz” bir süre kullanır. ASCII bir metin başlangıcı belirtecine sahiptir. İkili mesajlar ASCII’den daha kısadır ve bu nedenle teorik olarak iletilmesi/alınması daha hızlıdır. HMI/SCADA’nızda yaklaşık 100 ms’lik güncelleme hızlarını görmekten memnun olabilirsiniz ve iki iletişimden birini seçebilirsiniz.