TCP/IP

TCP, İletim Kontrol Protokolü ve IP ise İnternet Protokolü kelimelerinin kısaltmasıdır. Bu protokoller birlikte kullanılır ve internet için aktarım protokolünü oluştururlar. Modbus bilgileri bu protokoller kullanılarak gönderildiğinde veri, ilave bilgilerin eklendiği ve IP’ye verildiği TCP’ye gönderilir. IP veriyi paketler ve aktarır.

Veri aktarımından önce TCP bağlantısı kurulmalıdır çünkü bağlantı tabanlı bir protokoldür. Master (veya Modbus TCP’de istemci),  Slave (veya Sunucu) ile bir bağlantı kurar. Sunucu istemciden gelen bağlantıyı bekler. Bir bağlantı kurulduktan sonra, Sunucu istemci bağlantıyı kapatana kadar ondan gelen sorgulara yanıt verir.

TCP üzerinden Modbus RTU

Basitçe söylemek gerekirse, bu bir TCP/IP sarıcı üzerinden gönderilen Modbus RTU mesajıdır ve seri bağlantı yerine bir ethernet ağı üzerinden gönderilir. Sunucunun SlaveID adresi yerine bir IP adresi vardır.

Modbus TCP

Schneider Electric tarafından sağlanan modbus mesajlama uygulama kılavuzu TCP/IP üzerinde kullanılacak şekilde düzenlenmiş bir protokolü özetlemektedir. Bununla ilgili bilgiler www.modbus-ida.org  linkinde bulunabilir. Modbus RTU ve Modbus TCP arasındaki ana farklar burada özetlenmiştir.

ADU & PDU

PDU’da (protokol veri birimi), MODBUS RTU mesajı ile başlar ve başlangıçtaki SLAVEID ve sondaki CRC kaldırılır.

Aşağıdaki örnekte 17 numaralı slave adresindeki cihazdan #40108 ve 40110 analog çıkış holding register’ların sorgulandığını düşünelim.

11 03 006B 0003 7687

11:  SlaveID Adresi (17 = 11 hex)
03: Fonksiyon Kodu  (Analog Çıkış Holding Register’ların okunması)
006B: Okunacak ilk register’in adresi. (40108-40001 = 107 =6B hex)
0003: Okunmak istenen toplam register adedi. (40108 ‘den 40110’a 3 register oku)
7687: Hata Kontrolü için  CRC (cyclic redundancy check) .

SlaveID ve  CRC kaldırıldığından PDU şu şekilde olur:

   03 006B 0003

MBAP Başlığı

Mesajın başına MBAP (Modbus Uygulama Başlığı) Başlığı denen yeni bir 7-bayt’lık başlık eklenir.

Bu başlıkta aşağıdaki veriler vardır:

Artarım Tanımlayıcı: Benzersiz her isteği tanımlamak için İstemci (Client) tarafından belirlenen 2 bayt. Bu baytlar sunucu tarafından tekrarlanır çünkü sunucunun cevabı istek ile aynı sırada olmayabilir.

Protokol Tanımlayıcı: İstemci tarafından set edilen 2 bayt, her zaman = 00 00

Uzunluk: Mesajdaki bayt sayısını belirtmek için kullanılan 2 bayt.

Birim Tanımlayıcı: Seri hat veya herhangi bir bus üzerinden bağlanan uzak bir slave’i belirlemek için belirlenen ve uzak bir köle diğer otobüslerde seri bir hat veya bağlı belirlenmesi için 1 byte İstemci tarafından set edilir ve sunucu tarafından tekrarlanır.

 

Özet

Modbus RTU mesajının

                 11 03 006B 0003 7687

Modbus TCP  hali:

  0001 0000 0006 11 03 006B 0003

0001: Aktarım Tanımlayıcı
0000: Protokol Tanımlayıcı
0006: Mesaj uzunluğu (6 bytes to follow)
11: Birim Tanımlayıcı (17 = 11 hex)
03: Fonksiyon Kodu (Analog Çıkış Holding Register’ların okunması)
006B: Okunacak ilk register’ın adresi. (40108-40001 = 107 =6B hex)
0003: Okunmak istenen toplam register adedi. (40108 ‘den 40110’a 3 register oku)

TCP/IP Sarıcı

Kaynak: Simplymodbus

Bunlar da ilginizi çekebilir:

Modbus Protokolü

Modbus Ascii vs Modbus RTU

RS485 Hala Yaşıyor mu?

CRC Nedir?

 

2 YORUMLAR

CEVAP VER

Lütfen yorumunuzu girin!
Lütfen isminizi giriniz

This site uses Akismet to reduce spam. Learn how your comment data is processed.