Konwersja protokołu Modbus i konwertery firmy Moxa

09.02.2017 How to / Komunikacja przemysłowa
Konwertery protokołów (bramy komunikacyjne) Mgate firmy Moxa
Wizerunek autora
Piotr Gocłowski Były pracownik Elmark Automatyka S.A.
Producent: MOXA
  • Zakłady przemysłowe
  • Energetyka
  • Woda i ścieki

Dzisiejszym wpisem chcemy wyjaśnić różnicę pomiędzy konwertowaniem protokołu, a jego tunelowaniem na przykładzie Modbus'a, zapraszamy do lektury.

Wstęp

Modbus to protokół komunikacyjny, który używany jest niezwykle często, zarówno w rozwiązaniach przemysłowych jak i poza nimi. W pierwszej wersji został on opracowany dla standardu komunikacji szeregowej przez firmę Modicon (dzisiaj Schneider Electric) w 1979 roku, i zaimplementowany w sterowniku PLC. O jego sukcesie zadecydowało kilka czynników: -Darmowy i otwarty protokół -Łatwy do implementacji i zarządzania -Prosta zasada działania bez specjalnych wymagań Dziś, najczęściej jest on używany w sterownikach PLC do komunikacji pomiędzy urządzeniami, ale można też często go znaleźć w modułach I/O, oprogramowaniu SCADA czy choćby analizatorach jakości energii. W Modbusie można manipulować 4 typami obiektów, które zostały dobrane tak aby były odpowiednikami zasobów typowego sterownika PLC z okresu gdy powstawał ten protokół. Nadal ten zestaw jest aktualny, i w typowym sterowniku znajdziemy:

Obiekt Dostęp Rozmiar Fizyczny odpowiednik
Coil Odczyt/Zapis 1 bit Wyjście cyfrowe, przekaźnikowe
Discrete Input Tylko do odczytu 1 bit Wejście cyfrowe
Input Register Tylko do odczytu 16 bitów Wejście analogowe, temperaturowe itp.
Holding Register Odczyt/Zapis 16 bitów Wyjście analogowe, PWM itp.

Protokół Modbus

Wersje

Modbus wraz z upływem czasu był unowocześniany a efektem jest jego kilka wersji, z czego w powszechnym użyciu są obecnie 2, 3. Poniżej opis wybranych wariantów protokołu Modbus: Modbus RTU – To najpopularniejsza wersja, w warstwie fizycznej korzysta ze standardu szeregowego (RS-232/422/485). Dane są tu reprezentowane w formie binarnej, a do kontroli poprawności ramek stosowany jest 2 bajtowy CRC (cyclic redundancy check ), co zapewnia sporą niezawodność przesyłanych danych. Jedno zapytanie Modbus RTU składa się z adresu slave (1 bajt), kodu funkcji (1 bajt), do 252 bajtów danych oraz wspomnianego CRC (2 bajty), więc maksymalna długość zapytania to 255 bajtów. Pomiędzy wiadomościami Modbus RTU występuje przerwa (brak transmisji) która trwa minimum 3,5x czas potrzebny na przesłanie jednego bajtu (bodu). Komunikacja odbywa się na zasadzie zapytanie wysyłane przez mastera, oraz odpowiedź wysyłana przez slave, przy czym w urządzeniu Master, parametr „timeout” definiuje jak długo master ma czekać na odpowiedź od slave. Modbus ASCII – Ta wersja różni się nieznacznie od Modbus RTU, a podstawowa różnica tkwi w tym że dane są w nim kodowane w kodzie ASCII. Jeśli chodzi o nagłówek to dodatkowo znajdziemy tutaj 1 znak startu, 2 znaki adresu, do 252 znaków danych. Za polem danych używany jest LRC do kontroli spójności danych, a na końcu dodawane są 2 znaki końca linii czyli CR, LF, sygnalizujące koniec wiadomości. Modbus TCP/IP (potocznie Modbus TCP) – to odpowiednik Modbus RTU, ale używający do komunikacji protokołu TCP, na porcie 502. Nie posiada obliczania sumy kontrolnej, ponieważ niższa warstwa (TCP) już się tym zajmuje. Nie zawsze  pole ID jest używane, ponieważ adres IP który wykorzystuje protokół TCP/IP jest już bezwzględnym identyfikatorem urządzenia. Modbus RTU przez  TCP/IP (inna nazwa: Modbus RTU/IP) – Jest to tunelowany Modbus RTU, czyli przesyłany w formie surowej przez gniazdko (socket) TCP. Aby realizować taką komunikację wymagane jest specjalne urządzenie, które jest mostem pomiędzy RS-232/422/485 a standardem Ethernet, może to być np. serwer portów szeregowych Modbus przez UDP – Rzadko używany wariant powyższego, z tym że do transportu używany jest protokół UDP. Modbus Plus (Modbus+, MB+, MBP) – Rzadko używany wariant, jest własnością Schneider Electric. W warstwie fizycznej używa niestandardowego interfejsu fizycznego, dlatego wymaga specjalnej karty do podłączenia z komputerem.  

Konwersja Modbus w urządzeniach Firmy Moxa

Firma Moxa posiada w ofercie urządzenia wspierające komunikację w automatyce przemysłowej. Najbardziej rozpoznawalne urządzenia tego producenta to serwery portów szeregowych i pełnią funkcje konwertera RS-232/422/485 na Ethernet, a właściwie na protokół TCP. Nporty potrafią tunelować każdy protokół który bazuje na wymienionych standardach szeregowych, to znaczy że można za ich pomocą podłączyć starsze urządzenia polowe, do sieci i infrastruktury przedsiębiorstwa. Najpopularniejsze urządzenia podłączane za pomocą Nportów to liczniki energii, analizatory jakości energii, wagi, drukarki termiczne, tablice informacyjne, systemy alarmowe i wiele innych. Umożliwiają one także tunelowanie protokołu Modbus RTU, czyli przesyłanie go dalej, np. do innego nporta, i powrót do właściwego medium. W trybie RealCOM możliwe jest zamapowanie wirtualnego portu COM (Windows) i w oprogramowaniu używanie go do odpytywania za pomocą Modbus RTU. Nporty są w stanie tunelować ruch Modbus RTU w protokole TCP, ale nie konwertują go na Modbus TCP. Do tego celu przeznaczone są konwertery protokołów, lub inaczej - bramy komunikacyjne.Tunelowanie Modbus Wizualizacja tunelowania Modbus RTU w protokole TCP Mgate MB3180, oraz MGate MB3170, a także ich wieloportowy odpowiednik MGate MB3660 to właśnie konwertery protokołów. Ich zadaniem jest konwersja z Modbus RTU na Modbus TCP, lub w drugą stronę. Taki konwerter protokołów jest bardziej elastycznym rozwiązaniem, ponieważ dostęp do urządzenia schowanego za konwerterem zyskuje niemal każde urządzenie w sieci lokalnej, lub nawet z poza nią - za pomocą translacji adresów NAT, popularnie nazywanego przekierowywaniem portów (ang. Port Forwarding), czy protokołów routingu.

Podsumowanie:

Warto zapamiętać, że za pomocą serwerów portów szeregowych, (np. Nport 5150) można tunelować Modbus RTU w protokole TCP, a także inne protokoły bazujące na RS-232/422/485 takie jak DNP, DF1, CIP, MPI i wiele innych. Jeśli natomiast zachodzi potrzeba połączenia do sieci sieci Ethernet liczników energii i innych mediów, sterowników PLC itp., wyposażonych tylko w Modbus RTU, a konkretniej udostępnić je Modbus TCP masterom, to wtedy należy użyć bramy komunikacyjnej, np. Mgate MB3180. Poniżej w skrócie różnice pomiędzy Nportami i MGate MB3180/3170/3660:

Typ urządzenia Funkcja
Serwery portów szeregowych Nport Tunelowanie Modbus RTU w protokole TCP lub UDP. Brak konwersji na Modbus TCP.
Bramy komunikacyjne MGate MB3180/3170/3660 Konwersja Modbus RTU – Modbus TCP
npoprt 5110a
Konwerter Modbus TCP/RTU - MGate MB3660

Źródła: Ciekawie opisana różnica pomiędzy konwersją i tunelowaniem protokołów (j. ang.): http://www.gcom.com/support/documentation/tunneling-vs-protocol-conversion.html

Modbus w wikipedi anglojęzycznej:

https://en.wikipedia.org/wiki/Modbus

Oficjalna strona organizacji Modbus. Zawiera mnóstwo przydatnych informacji i linków:

http://www.modbus.org/tech.php

Skontaktuj się ze specjalistą Elmark

Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!