Basit Yapı
MODBUS, karmaşık olmayan mesaj yapısı sayesinde anlaşılması ve uygulanması kolay bir protokoldür.
MODBUS, bir cihazın başka bir cihazdan veri okumasını veya karşı tarafa veri yazmasını sağlayan bir endüstriyel haberleşme protokolüdür.
En basit haliyle MODBUS haberleşmesini, bir cihazın başka bir cihaza "Bana şu veriyi gönder" veya "Şu değeri değiştir" demesi şeklinde düşünebiliriz.
MODBUS'un en önemli özelliklerinden biri, belirli bir üreticiye veya tek bir cihaz ailesine bağlı olmamasıdır. Bu nedenle farklı üreticilerin cihazları arasında veri alışverişi yapmak için yaygın olarak kullanılır.
MODBUS özellikle PLC'ler, enerji sistemleri, motor sürücüleri, ölçüm cihazları, RTU'lar, SCADA sistemleri ve endüstriyel kontrol uygulamalarında önemli bir yere sahiptir.
MODBUS, karmaşık olmayan mesaj yapısı sayesinde anlaşılması ve uygulanması kolay bir protokoldür.
Çok sayıda PLC, RTU, sayaç, inverter, enerji analizörü ve endüstriyel cihaz MODBUS desteği sunmaktadır.
Seri haberleşme üzerinden RS-232 ve özellikle RS-485 ile veya Ethernet üzerinden MODBUS TCP ile kullanılabilir.
Dijital ve analog veriler okunabilir, uygun cihazlarda kontrol değerleri yazılabilir.
EOS SCADA Modbus istemcisinde veri adresinin başında okunacak Modbus veri alanını belirleyen bir prefix kullanılır.
RH# Modbus Holding Register, RI# Input Register ve RC# Coil adreslerini belirtir.
Örneğin 16 numaralı Holding Register için:
12 numaralı Input Register için:
5 numaralı Coil için:
MODBUS farklı fiziksel ve iletişim ortamlarında kullanılabilmesi için çeşitli uygulama biçimlerine sahiptir. En yaygın kullanılan türler MODBUS RTU, MODBUS ASCII ve MODBUS TCP'dir.
MODBUS RTU, özellikle RS-485 üzerinden kullanılan en yaygın MODBUS uygulamalarından biridir.
MODBUS ASCII, mesajların ASCII karakterleri kullanılarak gönderildiği MODBUS uygulamasıdır.
MODBUS TCP, MODBUS mesajlarının Ethernet ve TCP/IP ağları üzerinden taşınmasını sağlar.
MODBUS haberleşmesinin temelinde bir cihazın istekte bulunması ve diğer cihazın bu isteğe cevap vermesi bulunur.
Klasik MODBUS RTU sistemlerinde genellikle Master ve Slave kavramları kullanılır. MODBUS TCP tarafında ise günümüzde daha çok Client ve Server kavramları kullanılmaktadır.
Haberleşmeyi başlatan ve karşı cihazdan veri isteyen taraftır. Örneğin bir SCADA sistemi, PLC'den sıcaklık değerini okuyabilir.
Master veya Client tarafından gönderilen isteğe cevap veren cihazdır. Örneğin bir enerji analizörü, ölçtüğü gerilim değerlerini MODBUS üzerinden sunabilir.
MODBUS'ta veriler farklı veri alanlarında tutulur. Bu alanların her biri farklı amaçlarla kullanılır.
| Alan | Veri | Erişim | Açıklama |
|---|---|---|---|
| Coils | 1 bit | Okuma / Yazma | Dijital çıkış veya kontrol bilgileri. |
| Discrete Inputs | 1 bit | Sadece okuma | Dijital giriş bilgileri. |
| Input Registers | 16 bit | Sadece okuma | Analog veya ölçüm değerleri gibi giriş verileri. |
| Holding Registers | 16 bit | Okuma / Yazma | Ölçüm, ayar, parametre veya kontrol değerleri için kullanılabilir. |
MODBUS uygulamalarında en fazla kafa karışıklığı oluşturan konulardan biri adreslemedir. Bir cihazın teknik dokümanında görülen adres ile yazılım içerisinde kullanılan adres her zaman aynı biçimde gösterilmeyebilir.
Örneğin bir cihaz dokümanında
40001
olarak gösterilen bir Holding Register,
kullanılan yazılım veya sürücüye bağlı olarak
farklı bir başlangıç adresiyle ifade edilebilir.
Bu nedenle MODBUS cihazlarında haberleşme kurulurken yalnızca adres numarasına bakmak yeterli değildir. Cihaz üreticisinin register tablosundaki fonksiyon kodu, adres, veri tipi, ölçekleme ve byte sıralaması bilgileri birlikte değerlendirilmelidir.
MODBUS'ta yapılacak işlem fonksiyon kodu ile belirtilir. En sık karşılaşılan fonksiyon kodlarından bazıları aşağıdaki gibidir.
| Kod | İşlem | Açıklama |
|---|---|---|
| 01 | Read Coils | Coil durumlarını okur. |
| 02 | Read Discrete Inputs | Dijital girişleri okur. |
| 03 | Read Holding Registers | Holding Register değerlerini okur. |
| 04 | Read Input Registers | Input Register değerlerini okur. |
| 05 | Write Single Coil | Tek bir Coil değerini değiştirir. |
| 06 | Write Single Register | Tek bir Register değerine yazar. |
| 15 | Write Multiple Coils | Birden fazla Coil değerine yazar. |
| 16 | Write Multiple Registers | Birden fazla Register değerine yazar. |
MODBUS temel olarak 16 bit Register'lar üzerinden çalışır. Ancak gerçek uygulamalarda sıcaklık, basınç, güç, enerji veya sayaç değerleri gibi farklı veri tipleri kullanılabilir.
Örneğin bir cihaz 32 bitlik bir Float değeri iki adet 16 bit Register içerisinde saklayabilir. Bu durumda yalnızca Register adresini bilmek yeterli değildir. Verinin nasıl kodlandığının da bilinmesi gerekir.
MODBUS uygulamalarında sık karşılaşılan sorunlardan biri de çok Register'lı verilerin byte ve word sıralamasıdır.
Özellikle 32 bit veya 64 bit değerlerde cihaz üreticileri farklı byte ve word sıralamaları kullanabilir. Bu nedenle aynı Register değerleri okunmasına rağmen yazılımda tamamen farklı bir sayı görülebilir.
Örneğin 32 bit Float değerler için ABCD, CDAB, BADC veya DCBA gibi farklı sıralamalarla karşılaşılabilir.
Bu nedenle bir MODBUS cihazını sisteme tanımlarken register adresinin yanında veri tipi ve byte/word sıralamasının da doğru yapılandırılması gerekir.
MODBUS TCP, MODBUS protokolünün Ethernet ve TCP/IP ağları üzerinden kullanılmasını sağlar. Bu nedenle klasik seri haberleşme yerine Ethernet altyapısı bulunan sistemlerde tercih edilir.
MODBUS TCP'de cihazlar IP adresleri üzerinden
haberleşir.
Standart MODBUS TCP portu
502
numaralı TCP portudur.
SCADA sistemi, PLC veya başka bir istemci, ağ üzerindeki MODBUS TCP Server'a bağlanarak register ve coil verilerini okuyabilir veya cihazın izin verdiği değerlere yazabilir.
MODBUS çok geniş bir kullanım alanına sahiptir. Özellikle ölçüm ve kontrol verilerinin sistemler arasında aktarılması gereken uygulamalarda sıkça kullanılır.
Enerji analizörleri, elektrik sayaçları, güç ölçüm cihazları ve enerji izleme sistemleri.
PLC, RTU, inverter, motor sürücüleri, kontrol cihazları ve otomasyon sistemleri.
Sıcaklık, basınç, debi, seviye ve diğer proses ölçümlerinin aktarılması.
Saha cihazlarından veri toplamak ve bu verileri operatörlere sunmak için SCADA sistemlerinde kullanılır.
MODBUS yapısının basit olmasına rağmen sahada haberleşme sorunlarıyla sık karşılaşılabilir. Sorunun kaynağını bulmak için fiziksel bağlantıdan register adresine kadar birçok parametrenin kontrol edilmesi gerekebilir.
MODBUS, SCADA sistemlerinde saha cihazlarından veri toplamak için kullanılan en yaygın protokollerden biridir.
Örneğin bir enerji santralinde SCADA sistemi;
gibi çok sayıda veriyi MODBUS üzerinden toplayabilir ve bu verileri zaman damgasıyla birlikte arşivleyebilir.
MODBUS haberleşmesini test etmek, cihazları kontrol etmek, register değerlerini incelemek ve sorunları tespit etmek için çeşitli yardımcı araçlar kullanılabilir.
Bu bölümde ilerleyen dönemde EOS tarafından geliştirilen veya paylaşılan MODBUS araçları, yardımcı uygulamalar ve örnek yazılımlar yayınlanacaktır.
MODBUS haberleşmesi için geliştirilen ücretsiz araçlar ve yardımcı uygulamalar burada paylaşılacaktır.
MODBUS, basit yapısı, geniş cihaz desteği ve farklı haberleşme ortamlarında kullanılabilmesi sayesinde endüstriyel otomasyonda uzun yıllardır kullanılan önemli bir haberleşme protokolüdür.
MODBUS'u doğru kullanabilmek için yalnızca cihazın MODBUS desteklemesi yeterli değildir. Cihaz adresi, fonksiyon kodu, register adresi, veri tipi, ölçekleme ve byte/word sıralaması gibi bilgilerin de doğru yapılandırılması gerekir.
Özellikle SCADA ve veri toplama uygulamalarında MODBUS, saha cihazlarından güvenilir şekilde veri alınması için pratik ve yaygın bir çözüm sunar.