MODBUS TCP İLE ENDÜSTRİYEL HABERLEŞME



MODBUS TCP NEDİR?


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.


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.

Endüstride Modbus TCP Kullanımı

Endüstride sıkça kullanılan cihazlardan biri mutlaka enerji analizörleri ya da güç analizörleri gibi cihazlardır. Bu cihazlar, elektriği görünür hale getirerek sistemdeki akım, gerilim, güç ve enerji değerlerini izlememizi sağlar. Bugün, bu cihazlardan biri olan BMR PLA44 modeli üzerinden Modbus TCP protokolü ile RTU’muza veri çekeceğiz. Burada paylaşacağım örnek, haberleşme altyapısı bulunan diğer cihazlardan veri çekmek için de referans niteliği taşıyacaktır.
Bu projeyi gerçekleştirebilmek için bize master olarak çalışacak bir RTU, PLC veya benzeri bir kontrol cihazı gereklidir. Ben kendi uygulamamda RTU kullanacağım. Hazırsanız, adım adım bu sürece başlayalım.


Yukarıdaki çizelgede görüldüğü üzere RTU’dan, analizörden ve bilgisayardan çıkan Ethernet kabloları bir switch üzerinde toplanmaktadır. Eğer RTU’nuzun konfigürasyonunu yaptıysanız, sinyalleri çekip test ettiyseniz aslında switch kullanmanıza gerek kalmaz; analizörden RTU’ya doğrudan bağlantı yaparak da haberleşmeyi sağlayabilirsiniz. Ancak biz RTU’nun konfigürasyonunu web arayüzü üzerinden yapacağımız için bilgisayarı da RTU’ya Ethernet kablosu ile bağlamamız gerekir. Bu sebeple bir Ethernet switch kullanarak tüm cihazlara aynı anda bağlantı sağladık.

Burada dikkat edilmesi gereken en önemli nokta, tüm cihazların aynı subnet’te olmasıdır. Ekteki görselde de görüldüğü üzere, tüm cihazlara aynı subnet değerleri atanmıştır. Cihazın veya RTU’nun IP adresini kendi iç ayarlarından değiştirebilirsiniz; bu menüler cihazdan cihaza farklılık gösterebilir ancak genellikle kolayca bulunabilir. Aynı şekilde bilgisayarın IP adresini de belirli adımlar ile değiştirmek mümkündür; aşağıdaki görselde bunun nasıl yapılacağını adım adım görebilirsiniz.


Şimdi RTU konfigürasyonumuza geçelim. Bu projede RTU master, analizör ise slave olarak çalışacağı için RTU’muzu client modunda seçiyoruz. Daha önce analizörün IP adresini değiştirmiştik; şimdi bu IP’yi RTU’ya tanımlamamız gerekiyor.

Modbus TCP haberleşmesinde IP dışında dikkat etmemiz gereken bir diğer önemli unsur port numarasıdır. Analizörün Modbus TCP sekmesinde port numarasını görebilir ve gerekirse değiştirebilirsiniz. Aynı şekilde Server ID bilgisini de bu bölümden öğrenebilir ve düzenleyebilirsiniz. Bu bilgileri aldıktan sonra RTU arayüzüne giriş yaparak bir sonraki aşamaya geçebiliriz.

Bir sonraki aşama ise cihaz üreticisinden güncel Modbus registerini bulmak olacaktır. Güncel Modbus Registerinida bulduktan sonra istediğiniz sinyalin adresini girerek RTU cihazınıza çekmiş oluyorsunuz. 

 



Haberleşmeyi gösterebilmek için tek faz gerilim verdim ve değeri doğru bir şekilde okuyarak Modbus TCP haberleşmesini başarıyla gerçekleştirdim. Bundan sonraki aşama ise verileri kontrol merkezine veya uzaktan izlenebilir hale getirmek için RTU cihazımıza internet sağlamaktır. Endüstride bu işlem genellikle statik IP’li SIM kartlar ile yapılır.

Master cihazımıza internet bağlantısı sağladıktan sonra, analizörümüzdeki verileri istediğimiz lokasyondan, hatta cep telefonumuzdan bile izleyebiliriz.

Bu çalışmamız burada sona eriyor. Bir sonraki projede görüşmek üzere!






Yorumlar

Bu blogdaki popüler yayınlar

IEC 60870-5-103 PROTOKOLÜ İLE ENDÜSTRİYEL HABERLEŞME

IEC 60870-5-104 İLE ENDÜSTRİYEL HABERLEŞME