Politechnika Częstochowska
Wydział Elektryczny
Automatyzacja Procesów Przemysłowych
Sieć Modbus- podstawowe parametry
Wykonał:
Janus Robert
Rok IV, Sem. VIII
Gr. KiRP 1
Protokół Modbus został stworzony przez firmę Modicon w 1979r. i stał się wkrótce standardem przyjętym przez większość znanych producentów sterowników przemysłowych dla asynchronicznej, znakowej wymiany informacji pomiędzy urządzeniami systemów pomiarowo-kontrolnych. Obecnie jest standardem otwartym. O jego popularności i rozpowszechnieniu zadecydowały takie cechy, jak:
prosta reguła dostępu do łącza oparta na zasadzie "master-slave" , o zabezpieczenie przesyłanych komunikatów przed błędami,
potwierdzanie wykonania rozkazów zdalnych i sygnalizacja błędów, o skuteczne mechanizmy zabezpieczające przed zawieszeniem systemu,
wykorzystanie asynchronicznej transmisji znakowej zgodnej z RS-232C i RS-485,
Zabezpieczenie przed blokadą.
Rys.1. Struktura systemu Modbus
Transakcje w protokole Modus.
Kontrolery urządzeń pracujących w systemie MODBUS komunikują się ze sobą przy wykorzystaniu protokołu typu master-slave, w którym tylko jedno urządzenie może inicjować transakcje (jednostka nadrzędna - master), a pozostałe (jednostki podrzędne -slave) odpowiadają jedynie na zdalne zapytania mastera. Transakcja składa się z polecenia (query) wysyłanego z jednostki master do slave oraz z odpowiedzi (response) przesyłanej z jednostki slave do master. Odpowiedź zawiera dane żądane przez master lub potwierdzenie realizacji jego polecenia. Master może adresować indywidualnych odbiorców (jednostki slave) lub też przesyłać wiadomości "rozgłoszeniowe" (broadcast), przeznaczone dla wszystkich urządzeń podrzędnych w systemie. Na polecenia rozgłoszeniowe jednostki slave nie przesyłają odpowiedzi.
Protokół MODBUS określa format wiadomości przesyłanych z jednostki master do slave. Zawiera on adres odbiorcy, kod funkcji reprezentujący żądane polecenie, dane oraz sumę kontrolną zabezpieczającą przesyłaną wiadomość. Odpowiedź urządzenia slave wysyłana jest również zgodnie z formatem zdefiniowanym w protokole MODBUS. Zawiera ona pole potwierdzenia realizacji rozkazu, dane żądane przez master oraz sumę kontrolną zabezpieczającą odpowiedź przed błędami. Jeżeli urządzenie slave wykryje błąd przy odbiorze wiadomości, lub nie jest w stanie wykonać polecenia, przygotowuje specjalny komunikat o wystąpieniu błędu i przesyła go jako odpowiedź do mastera.
Rys.2. Transakcja w trybie Modbus
Ramka w protokole Modbus.
W systemie MODBUS wiadomości są zorganizowane w ramki o określonym początku i końcu. Pozwala to urządzeniu odbierającemu na odrzucenie ramek niekompletnych i sygnalizację związanych z tym błędów. Ze względu na możliwość pracy w jednym z dwóch różnych trybów transmisji (ASCII lub RTU), definiuje się dwie ramki:
Ramka w trybie ASCII
Ramka w trybie RTU
W trybie ASCII, każdy bajt w wiadomości przesyłany jest w postaci dwóch znaków ASCII. Podstawową zaletą tego trybu transmisji jest to, że pozwala on na długie odstępy między znakami (do 1 s) bez powodowania błędów. Znak przesyłany w trybie transmisji ASCII jest to heksadecymalny znak ASCII 4-9, A-F. Jeden znak heksadecymalny zawarty jest w każdym znaku ASCII wiadomości, znaki przesyłane są asynchronicznie. 10 bitowa jednostka informacyjna jest ograniczona znakami start (na początku) i stop (na końcu).
Rys. 3. Znak ASCII: a) z kontrolą parzystości b) bez kontroli parzystości
Przy transmisji w trybie ASCII stosuje się zabezpieczenie części informacyjnej ramki kodem LRC (Longitudinal Redundancy Check). Znacznikiem początku ramki jest znak dwukropka (":" - ASCII 3A). Dopuszczalnymi znakami dla pozostałych pól (za wyjątkiem znacznika końca ramki) są 0-9, A-F. Urządzenie po wykryciu znacznika początku ramki sprawdza, czy pole adresowe zawiera jego adres własny. Jeżeli tak, to odczytuje zawartość pola funkcji i związaną z nią zawartość pola danych. Część informacyjni ramki (bez znaku ":") zabezpiecza pole kontrolne LRC. Ramka kończy się przesłaniem dwóch znaków: CR i LF.
Obliczanie LRC polega na obliczaniu 8-bitowej sumy bajtów ramki (bez przeniesień). Wynik LRC to dopełnienie do dwóch obliczonej sumy.
Rys 4. Ramka w trybie ASCII
W trybie RTU(real-time unit) bajty są wysyłane binarnie jako znaki ośmiobitowe. Wiadomości rozpoczynają się odstępem czasowym trwającym minimum 3.5 x (czas trwania pojedynczego znaku), w którym panuje cisza na łączu. Najprostszą implementacją wymienionego interwału czasowego jest wielokrotne odmierzanie czasu trwania znaku przy zadanej szybkości bodowej przyjętej w łączu. Pierwszym polem informacyjnym ramki jest adres urządzenia. Połączone w system urządzenia stale (łącznie z przedziałami ciszy) monitorują magistralę. Po odebraniu zawartości pola adresu urządzenia sprawdzaj, czy przesłany adres jest ich adresem własnym. Jeżeli tak, to kontynuują interpretację pozostałych pól wchodzących w skład ramki. Odstęp pomiędzy poszczególnymi znakami ramki nie może być większy niż 1,5x. Jeżeli odstęp ten przekroczy podaną wartość, to urządzenie odbierające uzna ramkę za niekompletną i następny znak przyjmie za bajt pola adresowego kolejnej wiadomości. Podobnie, jeżeli owa wiadomość pojawi się na magistrali przed upływem koniecznej przerwy (3.5 x długość znaku), to urządzenie odbierające potraktuje ją jako kontynuację poprzedniej wiadomości. To doprowadzi do błędu sumy kontrolnej, ponieważ urządzenie odbierające będzie obliczać CRC dwóch wiadomości i porównywać go z CRC drugiej.
CRC w trybie RTU jest to 16 bitowy identyfikator składający się z dwóch 8 bitowych słów.
Rys. 5. Znak RTU: a) z kontrolą parzystości b) bez kontroli parzystości
Rys 6. Ramka w trybie RTU
Rys 7. Poprawna transmisja w trybie RTU
Rys 8. Nie poprawna transmisja w trybie RTU
Format znaku przy transmisji szeregowej
W standardzie MODBUS znaki są przesyłane szeregowo od najmłodszego do najstarszego bitu.
Organizacja jednostki informacyjnej w trybie ASCII:
1 bit startu,
7 bitów pola danych, jako pierwszy wysyłany jest najmniej znaczący bit,
1 bit kontroli parzystości (nieparzystości) lub brak bitu kontroli parzystości,
1 bit stopu przy kontroli parzystości lub 2 bity stopu przy braku kontroli parzystości.
Pola ramki Modbus
adres
0 - adres rozgłaszania (broadcast)
1 - 247 - adres jednostki slave
kod funkcji
1 $01 odczyt wyjść bitowych
2 $02 odczyt wejść bitowych
3 $03 odczyt n rejestrów
4 $04 odczyt n rejestrów wejściowych
5 $05 zapis 1 bitu
6 $06 zapis 1 rejestru
7 $07 odczyt statusu
8 $08 test diagnostyczny
15 $0F zapis n bitów
16 $10 zapis n rejestrów
17 $11 identyfikacja urządzenia slave
128 - 255 $80-$FF zarezerwowane na odpowiedzi błędne
rejestry i zmienne
Urządzenie jest widziane jako 16-bitowe rejestry Wn.
Typy zmiennych umieszczanych w rejestrach:
bitowe - bity rejestrów W0 .W4095
2-bajtowe - całe rejestry Wn
4-bajtowe - sąsiednie rejestry Wn : Wn+1
zalecenie
W celu ułatwienia przesyłania danych przy pomocy ramek z funkcja, ”odczyt (zapis) n rejestrów” rejestry powinny zajmować spójny obszar adresowany od 0 do rejmax.
Przykład architektury Modbus
Stos Protokołu Modbus
Powyższy wykres czasowy przedstawia 3 typowe scenariusze komunikacji Master-Slave.
W ostatnich latach na popularności znacznie zyskał Ethernet czyli bezprzewodowe sieci. Posiadają wiele zalet takich jak mniejsze koszty utrzymania, łatwiejsza diagnostyka i bardzo duże szybkości transferu danych. Dlatego też również protokół Modbas ma swoją odmianę Ethernetową, która nosi nazwę Modbus TCP
Różnice pomiędzy Modbus RTU a Modbus TCP wymagają zastosowania odpowiedniej bramy, która będzie pomostem pomiędzy tymi interfejsami i protokołami. Z odsieczą przychodzi firma Moxa wprowadzając do swej oferty całą gamę bramek o oznaczeniu Mgate 3000. Bramki firmy Moxa wyposażone są interfejs Ethernet oraz od 1 do 4 portów szeregowych RS-232/422/485. Porty szeregowe są niezależne od siebie. Każdy z portów można skonfigurować na inny interfejs (RS-232/422/485), inne parametry transmisji oraz inny protokół (RTU/ASCII). Ponadto każdy z portów można indywidualnie skonfigurować jako master lub slave.
Bramki Mgate w sposób przezroczysty i bilateralny konwertują protokóły Modbus TCP/RTU, dlatego można je zastosować praktycznie w dowolnej topologii.
Najczęściej spotykana jest konfiguracja w której Master TCP komunikuje się z urządzeniami z interfejsem szeregowym typu Slave. Do każdego portu szeregowego można podłączyć jedno urządzenie z RS-232/422 lub do 31 urządzeń z RS-485. MGate umożliwia urządzeniom typu Master TCP do 16 jednoczesnych połączeń urządzeń z każdym portem szeregowym.
W sytuacji gdy np. panel operatorski z portem szeregowym (Modbus RTU Master) chcemy połączyć z rozproszonymi urządzeniami typu Modbus TCP Slave, Mgate umożliwia obsługę do 32 takich urządzeń.
Standard RS-485 ogranicza liczbę urządzeń w sieci do 32 a maksymalny dystans transmisji do 1200m. Przy pomocy bramek MGate możliwa jest komunikacja urządzeń z interfejsem szeregowym poprzez sieć Ethernet. W ten sposób Master (Modbus RTU) może komunikować się ze Slave (Modbus RTU) umieszczonym praktycznie w dowolnej lokalizacji. Jedyne ograniczenie to maksymalnie 32 moduły MGate w jednej sieci.
Nowością w modułach MGate w stosunku do poprzedniej wersji jest mechanizm automatycznego wykrywania czasów odpowiedź poszczególnych urządzeń. Dzięki temu konfiguracja systemu jest bardzo prosta i mniej czasochłonna.
Nową odmianą protokołu Modbus jest Modbus Plus wykorzystujący technologie High speed token passing network HDLC.
Protokół HDLC
Łącza synchroniczne pozwalają na przesyłanie strumieni bitów. Jednak w przypadku sieci komputerowych ważne jest zachowanie podziału strumienia na bajty, a także zachowanie podziału ciągu bajtów na pakiety. Prosty protokół jakim jest HDLC umożliwia zachowanie takiego właśnie podziału.
Do zaznaczenia początku i końca pakietu danych służy ciąg bitów 01111110. Jest to specjalny znacznik (ang. flag), który nie może pojawić się wewnątrz pakietu. Dzięki niemu odbiornik ma pewność, że następujące po nim bity są kolejno pierwszym, drugim, itd. bajtem przesyłanych danych.
Pojedynczy znacznik HDLC może być jednocześnie końcem jednego pakietu i początkiem kolejnego.
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
Rys. 9 Znacznik początku i końca pakietu HDLC
Ponieważ ciąg bitów 01111110 jest zarezerwowany, dlatego trzeba odpowiednio zmodyfikować przesyłane dane, aby nie pojawił się on wewnątrz pakietu i nie został błędnie zinterpretowany. Dlatego za każdym razem, gdy w strumieniu danych pojawi się pod rząd 5 jedynek nadajnik wstawia po nich dodatkowe zero. Odbiornik z kolei po odebraniu 5 kolejnych jedynek pomija następujące po nich zero. W ten sposób przesyłany ciąg bitów zostaje odtworzony. Taka operacja nosi nazwę bit stuffing.
Dodatkowo żeby zapewnić integralność przesyłanych danych na końcu pakietu jest dodawana 16-bitowa suma kontrolna CRC16.
Na poniższym przykładzie widać, jak zmienia się ciąg bitów w przypadku zastosowania protokołu HDLC.
Trzybajtowy pakiet 0x15 0xff 0x3e:
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
Pakiet HDLC ze znacznikami i bit stuffingiem:
(ciemniejsze pola - bity dodane przez protokół HDLC, c - bity sumy kontrolnej CRC16)
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
c |
c |
c |
c |
c |
c |
c |
c |
c |
c |
c |
c |
c |
c |
c |
c |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
Rys. 10 Trzybajtowy pakiet (0x15 0xff 0x3e) przed i po zastosowaniu HDLC
Jeśli przez linię transmisyjną nie mają być przesyłane żadne dane, wówczas nadajnik powinien nieprzerwanie wysyłać sekwencję 01111110.
Wysłanie ciągu samych jedynek służy do przerwania tramisji i zakomunikowania drugiej stronie, że wystąpił błąd.
Protokół HDLC dopuszcza stosowanie elementów sieci podzielonych funkcjonalnie na trzy grupy
Stacja nadrzędna
Stacja podrzędna
Stacja uniwersalna
Stacja nadrzędna to takie urządzenie w sieci, które przyznaje dostęp do sieci wszystkim urządzeniom w niej pracującym. Jest to swego rodzaju arbiter, zarządzający stacjami podrzędnymi. Bez zgody tej stacji żaden element podrzędny nie może rozpocząć transmisji w sieci.
Stacja podrzędna. Jeżeli w danej sieci jest używana stacja nadrzędna, pojawić sie musi jedna lub więcej stacji podrzędnych. Nie mają one takiej władzy jak stacje nadrzędne nad łączem, transmitują jedynie odpowiedzi na pakiety stacji nadrządnej. Jedynie na żądanie stacji głównej (nadrzędnej ) są aktywowane.
Stacje uniwersalne . Elementy tego typu są funkcjonalnym połączeniem stacji obu przedstawionych powyżej typów. Wszystkie stacje tego typu są władne wysłać i odbierać pakiety bez pozwolenia jakiegokolwiek arbitra. Żadna stacja uniwersalna nie może być kontrolowana przez inną stację w sieci.
Bibliografia
9