MODBUS Nedir?

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 Neden Bu Kadar Yaygın?

Basit Yapı

MODBUS, karmaşık olmayan mesaj yapısı sayesinde anlaşılması ve uygulanması kolay bir protokoldür.

Geniş Cihaz Desteği

Çok sayıda PLC, RTU, sayaç, inverter, enerji analizörü ve endüstriyel cihaz MODBUS desteği sunmaktadır.

Farklı İletişim Ortamları

Seri haberleşme üzerinden RS-232 ve özellikle RS-485 ile veya Ethernet üzerinden MODBUS TCP ile kullanılabilir.

Okuma ve Yazma

Dijital ve analog veriler okunabilir, uygun cihazlarda kontrol değerleri yazılabilir.

EOS Yazılımları İçin Modbus Veri Adresleme (RH#, RI#, RC#)

EOS SCADA Modbus istemcisinde veri adresinin başında okunacak Modbus veri alanını belirleyen bir prefix kullanılır.

RH#REGISTER
RI#REGISTER
RC#COIL

RH# Modbus Holding Register, RI# Input Register ve RC# Coil adreslerini belirtir.

Örneğin 16 numaralı Holding Register için:

RH#16

12 numaralı Input Register için:

RI#12

5 numaralı Coil için:

RC#5

MODBUS Türleri

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

MODBUS RTU, özellikle RS-485 üzerinden kullanılan en yaygın MODBUS uygulamalarından biridir.

  • RS-485 ve RS-232 kullanılabilir
  • Binary mesaj yapısı kullanır
  • CRC hata kontrolü içerir
  • Uzun mesafeli haberleşmeye uygundur
  • PLC ve saha cihazlarında çok yaygındır

MODBUS ASCII

MODBUS ASCII, mesajların ASCII karakterleri kullanılarak gönderildiği MODBUS uygulamasıdır.

  • ASCII karakterleri kullanır
  • Mesajların okunması daha kolaydır
  • LRC hata kontrolü kullanır
  • RTU'ya göre daha fazla iletişim yükü oluşturur

MODBUS TCP

MODBUS TCP, MODBUS mesajlarının Ethernet ve TCP/IP ağları üzerinden taşınmasını sağlar.

  • Ethernet kullanır
  • TCP/IP üzerinden haberleşir
  • Standart port numarası 502'dir
  • PLC ve SCADA sistemlerinde yaygındır
  • RS-485 gerektirmez

MODBUS Nasıl Çalışır?

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.

Master / Client

Haberleşmeyi başlatan ve karşı cihazdan veri isteyen taraftır. Örneğin bir SCADA sistemi, PLC'den sıcaklık değerini okuyabilir.

Slave / Server

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 Veri Alanları

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 Adresleme

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 Fonksiyon Kodları

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 Veri Tipleri

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.

  • 16 bit Integer
  • Unsigned Integer
  • Signed Integer
  • 32 bit Integer
  • 32 bit Float
  • 64 bit Double
  • Bit alanları
  • Ölçeklenmiş değerler

Byte Order ve Word Order

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 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 Nerelerde Kullanılır?

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 Sistemleri

Enerji analizörleri, elektrik sayaçları, güç ölçüm cihazları ve enerji izleme sistemleri.

Endüstriyel Otomasyon

PLC, RTU, inverter, motor sürücüleri, kontrol cihazları ve otomasyon sistemleri.

Ölçüm Sistemleri

Sıcaklık, basınç, debi, seviye ve diğer proses ölçümlerinin aktarılması.

SCADA Sistemleri

Saha cihazlarından veri toplamak ve bu verileri operatörlere sunmak için SCADA sistemlerinde kullanılır.

MODBUS Haberleşme Sorunları

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.

  • Yanlış cihaz adresi
  • Yanlış IP adresi veya TCP portu
  • Yanlış baud rate
  • Yanlış parity veya stop bit ayarı
  • RS-485 A/B bağlantısının ters olması
  • Yanlış register adresi
  • Yanlış fonksiyon kodu
  • Yanlış veri tipi
  • Yanlış byte veya word sıralaması
  • Cihaz dokümanındaki adresleme ile yazılım adreslemesinin farklı olması

MODBUS ve SCADA

MODBUS, SCADA sistemlerinde saha cihazlarından veri toplamak için kullanılan en yaygın protokollerden biridir.

Örneğin bir enerji santralinde SCADA sistemi;

  • Gerilim
  • Akım
  • Aktif ve reaktif güç
  • Frekans
  • Enerji değerleri
  • Cihaz durumları
  • Alarm bilgileri

gibi çok sayıda veriyi MODBUS üzerinden toplayabilir ve bu verileri zaman damgasıyla birlikte arşivleyebilir.

MODBUS Araçları

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 Araçları Hazırlanıyor

MODBUS haberleşmesi için geliştirilen ücretsiz araçlar ve yardımcı uygulamalar burada paylaşılacaktır.

  • MODBUS RTU test araçları
  • MODBUS TCP test araçları
  • Register okuma ve yazma araçları
  • MODBUS paket analiz araçları
  • Haberleşme test araçları
  • Örnek uygulamalar ve kaynak kodları

Özet

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.