Modbus to jeden z najstarszych protokołów komunikacyjnych dedykowanych do zastosowań w systemach automatyki przemysłowej, wciąż popularny i obecny na rynku. Decyduje o tym wiele czynników ? warto je poznać?
Protokół komunikacji sieciowej Modbus wciąż pozostaje jednym z najbardziej popularnych standardów w automatyce przemysłowej. Jest stosunkowo prosty, niedrogi, uniwersalny i łatwy w użyciu, zarówno w fazie implementacji, jak i późniejszej eksploatacji. To dlatego, choć funkcjonuje na światowym rynku od ponad trzydziestu lat, wciąż znajduje się w ofercie wielu dostawców systemów automatyki przemysłowej, którzy wprowadzają na rynek wciąż nowe produkty z tym protokołem oraz wspierają rozwiązania już istniejące. Stąd nikogo z branży nie dziwi obecność interfejsów Modbus we współczesnych modułach sieciowych, obok tak popularnych i znacznie młodszych standardów, jak Ethernet czy WiFi. Standard Modbus ma jeszcze jedną ważną cechę ? umożliwia obsługę praktycznie wszystkich najpopularniejszych mediów transmisyjnych stosowanych w aplikacjach przemysłowych: pary skręconej ? TP, komunikacji bezprzewodowej, światłowodów, Ethernetu, modemów telefonicznych, telefonii komórkowej i innych. Oznacza to, że łatwo i szybko można zestawić połączenie z protokołem Modbus w nowych, a co ważniejsze, w już istniejących aplikacjach. Ma to znaczenie w starszych zakładach, gdzie przy modernizacji systemów sterowania możliwe jest wykorzystanie istniejącej infrastruktury sieciowej, zwykle bazującej na skrętce ? TP.
Czym jest Modbus?
Standard Modbus został opracowany przez firmę Modicon (obecnie Schneider Electric) w roku 1979, do komunikacji między wieloma urządzeniami poprzez skręconą parę przewodów. Pierwsza instalacja bazowała na komunikacji szeregowej RS232, ale w niedługim czasie adaptowano ją również na standard RS485, uzyskując tym samym większe szybkości transmisji i możliwość budowy dłuższych linii komunikacyjnych. Protokół Modbus stosunkowo szybko stał się standardem dedykowanym dla sieci automatyki przemysłowej, a firma Modicon udostępniła go jako darmowy, otwarty protokół komunikacji. Obecnie wsparciem i rozwojem tego standardu zajmuje się organizacja Modbus-IDA (www.modbus.org), zrzeszająca dostawców i użytkowników.
Protokół Modbus bazuje na architekturze typu Master-Slave, gdzie urządzenie pełniące rolę Mastera (modułu nadrzędnego) komunikuje się z jednym lub kilkoma modułami typu Slave (podrzędnymi). Wspomnianą rolę Mastera pełni zwykle sterownik PLC, komputer PC, system DCS (moduły rozproszone) lub RTU (terminal zdalny). W przypadku architektury Modbus RTU moduły Slave to zwykle urządzenia obszarowe/obiektowe (field), podłączone do sieci w konfiguracji wielogałęziowej. Jeżeli urządzenie Master potrzebuje informacji z jakiegoś modułu Slave, wysyła do sieci komunikat zawierający jego adres, zapytanie o informację i sumę kontrolną, dla weryfikacji ewentualnych błędów transmisji. Komunikat ten jest widoczny dla wszystkich urządzeń i modułów w sieci, jednak odbiera go, interpretuje i odpowiada tylko moduł o podanym adresie sieciowym.
Urządzenia i moduły typu Slave nie mogą inicjować transmisji danych, mogą tylko odpowiadać na zapytania. Jednak niektórzy producenci modułów dla sieci Modbus wprowadzają do nich modyfikacje, dzięki którym moduły Slave mogą zapisywać dane, pracując jak pseudo-Master.
Obecnie na rynku dominują trzy rodzaje protokołu Modbus:
- Modbus ASCII
- Modbus RTU
- Modbus TCP
We wszystkich typach wiadomości sieciowe wysyłane są w tym samym formacie, a różnica dotyczy tylko sposobu ich kodowania na potrzeby transmisji.
W standardzie Modbus ASCII dane zapisywane w kodzie szesnastkowym, z wykorzystaniem czterobitowych znaków kodu ASCII. Dla każdego bajtu informacji potrzebne są aż dwa bajty w komunikacie ? dwukrotnie więcej niż w pozostałych typach RTU i TCP. Dlatego ten rodzaj protokołu jest najwolniejszy z całej grupy, jednak nadaje się doskonale do transmisji z wykorzystaniem modemów telefonicznych czy transmisji radiowej RF (znaki ASCII dokładnie precyzują strukturę i zakres transmitowanych komunikatów). W rezultacie nawet przy możliwych opóźnieniach sygnału w medium transmisyjnym przesyłana wiadomość nadal jest prawidłowo interpretowana w odbiorniku. Cecha ta ma szczególne znaczenie właśnie przy wykorzystaniu wspomnianych wcześniej mediów transmisyjnych, opartych na technologiach radiowych lub telefonicznych.
W standardzie Modbus RTU dane komunikatu zapisywane są w kodzie binarnym i dla każdego bajtu danych wymagany jest jeden bajt komunikatu. To rozwiązanie idealne do wykorzystania z medium transmisji w kanałach RS232 i RS485, z szybkościami transmisji od 1200 do 115 kbit/sek. Najczęściej stosowane szybkości to 9600 i 19 200 bit/sek. Modbus RTU to najczęściej stosowany obecnie protokół w sieciach automatyki przemysłowej i dlatego też większość informacji zamieszczonych w niniejszym artykule będzie dotyczyć aplikacji i zastosowań tego właśnie rodzaju protokołu.
Modbus TCP to nic innego jak protokół Modbus z transmisją przez sieć Ethernet. Zamiast adresów sieciowych urządzeń automatyki, do komunikacji z modułami Slave wykorzystuje się bezpośrednio adresy IP, a dane komunikatów Modbus tunelowane są w ramkach pakietów TCP/IP. W ten sposób każda sieć bazująca na protokole Ethernet może być wykorzystana jako medium transmisji komunikatów Modbus.
Modbus RTU ? podstawy komunikacji
W celu nawiązania komunikacji z modułami Slave sterownik Master wysyła komunikaty zawierające:
- adres modułu Slave,
- kod funkcji,
- dane,
- bity kontrolne.
Adres urządzenia to liczby z zakresu 0247.
Adres 0 zarezerwowany jest dla komunikatów typu broadcast ? wysyłanych do wszystkich urządzeń Slave, zaś adresy od 1 do 247 wskazują już konkretne moduły. Z wyjątkiem komunikatów typu broadcast (tylko odbiór), urządzenia Slave zawsze odpowiadają na komunikaty wysyłane przez Mastera, który w ten sposób ma pewność, że odebrały one komunikat.
Kod funkcji określa rozkaz do wykonania przez urządzenie Slave, czyli odczyt danych, przyjęcie danych czy podanie statusu itd. Kody funkcji mieszczą się w zakresie liczb od 1 do 255, a niektóre z nich mają jeszcze sprecyzowane tzw. podfunkcje.
Dane definiują adresy komórek pamięci wewnętrznej urządzeń z rozkazami dla funkcji, zawierają wartości liczbowe, które muszą być zapisane do pamięci urządzenia, lub inne informacje, niezbędne do realizacji określonych funkcji przez urządzenie lub moduł sterujący.
Bity kontrolne to słowo 16-bitowe cyklicznej kontroli nadmiarowej CRC. Jest ono generowane przez moduły Master i weryfikowane w module odbiorczym. Jeżeli wartości słów CRC nie są jednakowe, moduł odbiornika wysyła sygnał żądający powtórzenia transmisji danej wiadomości. W niektórych systemach stosuje się dodatkowo kontrolę parzystości.
Kiedy moduł Slave zrealizuje żądaną funkcję, wysyła komunikat zwrotny do modułu Master. Zawiera ona adres sieciowy modułu Slave oraz kod zrealizowanej funkcji (dzięki temu moduł Master może zidentyfikować urządzenie Slave), dane wynikowe oraz bity kontrolne.
Mapa pamięci w protokole Modbus
Każde urządzenie sieci protokołu Modbus ma pamięć wewnętrzną, gdzie przechowywane są dane realizowanych funkcji i ich wyniki. W specyfikacji protokołu jednoznacznie określono, jak dane są wyszukiwane i jaki typ danych ma być wyszukany w pamięci. Jednakże nie ustalono żadnych ograniczeń co do sposobu i lokalizacji danych w pamięci przyjętych przez każdego z producentów modułów sieciowych. Wejścia cyfrowe mają przypisane wartości jednobitowe ? każdy bit ma swój specyficzny adres. Wejścia analogowe (rejestry wejściowe), przypisane są do 16-bitowych rejestrów. Korzystając z dwu takich rejestrów, standard Modbus może obsłużyć liczby zmiennoprzecinkowe formatu 32-bitowego standardu IEEE. Rejestry przechowywania danych są również 16-bitowe, z możliwością obsługi liczb zmiennoprzecinkowych. Rozkład danych w mapie pamięci zdefiniowany jest w specyfikacji protokołu Modbus. Jeżeli dostawcy urządzeń sieciowych bazują ściśle na specyfikacji (nie wszyscy tak robią), moduły Master mogą bardzo łatwo uzyskać dostęp do niezbędnych danych, zgodnie ze specyfikacją. W wielu jednak przypadkach dostawcy modyfikują układ danych w pamięci, dostosowując go do konkretnych aplikacji lub spersonalizowanych ustawień użytkowników.
Zapis i odczyt danych
W protokole Modbus zdefiniowano 255 kodów funkcji, jednak w praktyce najczęściej używane są: 01 ? odczyt wejścia, 02 ? odczyt wejścia dyskretnego, 03 ? odczyt rejestru danych, 04 ? odczyt rejestru wejść. Są to funkcje odczytu, wykorzystywane do zbierania danych z modułów Slave. Na przykład w celu odczytania 3 słów 16-bitowych z pamięci urządzenia o adresie 5, moduł Master wysyła zapytanie: 5 04 2 3 CRC. 5 oznacza adres urządzenia, 04 to rozkaz odczytu rejestrów wejściowych, 2 ? adres początkowy (adres 30,002), 3 wskazuje na odczyt trzech sąsiednich danych, poczynając od tej pod adresem 30,002, a CRC to bity kontrolne. Urządzenie Slave po odebraniu takiej wiadomości, odsyła wiadomość zwrotną o kształcie: 5 04 aa bb cc CRC. 5 to adres urządzenia, 04 ? powtórka odczytanego rozkazu, aa, bb, cc ? kolejne trzy odczytane dane (wartości 16-bitowe) oraz CRC ? bity kontrolne.
Odczyt i zapis innych we/wy odbywa się w podobny sposób, z użyciem innych rozkazów. Przy założeniu, że każde urządzenie postępuje według zadanych mu rozkazów, stosunkowo łatwo zaprogramować algorytmy dla modułu Master, pozwalające mu na odczyt/zapis danych, sprawdzenie statusu, zebranie danych diagnostycznych oraz realizację różych zadań monitorujących i sterujących na modułach Slave.
Połączenie urządzeń
Prostą metodą przyłączenia urządzeń wykonawczych i czujników do systemu sieci automatyki przemysłowej, sterowników PLC czy komputerów przemysłowych, jest ich połączenie z modułami I/O cyfrowych lub analogowych, wyposażonych już w interfejs sieciowy Modbus i dzięki temu mającymi możliwość komunikacji sieciowej. Taka procedura umożliwia użytkownikowi urządzeń zdalne podłączenie do systemu sygnałów analogowych bądź cyfrowych, które z kolei mogą być przyłączone w ten sposób do modułu Master, poprzez magistralę komunikacyjną (para skręcona). W systemie może zatem być przyłączonych wiele tego typu koncentratorów sygnałów, w różnych miejscach zakładu, komunikując się z modułami Master poprzez sieć magistralową.
Rozwiązanie to sprawdza się niezawodnie zarówno w starszych, jak i najnowszych instalacjach. W wielu istniejących zakładach urządzenia wykonawcze i czujniki zwykle podłączone są do modułów I/O lub bezpośrednio do sterowników PLC przez przewody sygnałowe lub odcinki skrętki, przenoszące sygnały analogowe. Dzięki zastosowaniu koncentratorów danych struktura systemu upraszcza się, bowiem do transmisji takich sygnałów wystarcza już tylko jedna skrętka ? magistrala, z komunikatami standardu Modbus. To rozwiązanie szczególnie przydatne w zakładach, które zamierzają modyfikować i rozbudowywać swoje systemy sterowania, a przy tym uniknąć kładzenia wielu dodatkowych przewodów czy linii sygnałowych. Rozproszony system sterowania taki jak Modbus sprawdza się w takich sytuacjach doskonale, oferując pełną integrację wszystkich dołączanych urządzeń systemowych z istniejącą już infrastrukturą sieci.
Mogą jednak zdarzyć się sytuacje, gdy system sterowania nie będzie w stanie obsłużyć niektórych sygnałów z urządzeń. Dotyczy to na przykład urządzeń działających w oparciu o sygnały analogowe 420 mA. Wówczas moduły I/O dla standardu Modbus muszą być odpowiednio przeprogramowane i dostosowane do obsługi takich urządzeń. Niekiedy też sami użytkownicy mogą żądać dołączenia do systemu nowych sygnałów z urządzeń, bez dodatkowych kabli czy konieczności zakupu specjalnych kart/interfejsów do sieci Modbus. Wtedy dobrze sprawdza się rozwiązanie bazujące na komunikacji bezpośredniej peer-to-peer. Same moduły koncentratorów danych charakteryzują się różnymi poziomami wbudowanej inteligencji i mogą być ustawione na różne tryby pracy: klasyczne peer-to-peer lub peer-to-host. Na przykład przy trybie peer-to-
-peermogą być użyte dwa koncentratory: jeden na poziomie urządzeń obiektowych (z przyłączonymi urządzeniami) i drugi w sterowni, połączone ze sobą przewodem magistralnym i pracujące jako multiplekser i demultiplekser. Z kolei wyjścia koncentratora w sterowni połączone są z modułami kart analogowych I/O systemu sterowania i dzięki temu analogowe sygnały z nowych urządzeń obiektowych mogą być widoczne dla zainstalowanych już wcześniej w systemie kart analogowych I/O. W ten sposób programowanie i komisjonowanie (fizyczne włączanie do sieci) nowych urządzeń jest znacznie prostsze niż w przypadku konieczności włączania do systemu automatyki nowych kart i interfejsów sieciowych. Tryb peer-to-peer pozwala też na uzyskanie pełnej komunikacji dwukierunkowej, gdzie moduły po obu stronach łącza mogą mieć wejścia i wyjścia sygnałowe.
HART przez Modbus
W wielu zakładach przemysłowych pojawia się problem znalezienia niedrogiego i łatwego w implementacji rozwiązania sieciowego, umożliwiającego wykorzystanie zainstalowanych już urządzeń systemu sterowania HART. HART to przemysłowy protokół komunikacji cyfrowej, dedykowany do obsługi modułów wysyłających sygnały cyfrowe poprzez tradycyjne instalacje pary skręconej, implementowany w większości modułów sterowania popularnego standardu 420 mA. Dzięki temu użytkownik może konfigurować, odpytywać i monitorować moduły lokalnie lub zdalnie praktycznie z dowolnego punktu sieci ? przewodu skrętki. Moduły Slave sieci HART mogą być połączone w konfiguracji point-to-point lub multi-drop (sieć wielopunktowa). W przypadku tej pierwszej ? znacznie bardziej popularnej ? moduły standardu HART wyrażają zmienne sygnały procesowe poprzez zmiany wartości prądu w pętli analogowej. I choć możliwe jest posługiwanie się w standardzie HART tylko sygnałami cyfrowymi, w rzeczywistości rzadko stosuje się tę metodę. Najczęściej łączy się obie technologie ? transmisji sygnałów cyfrowych i zmiany wartości prądu w przewodach skrętki, zarówno w obsłudze modułów Slave, jak i Master standardu HART.
Więcej o protokole HART i Modbus przez Ethernet w kolejnej części artykułu.
Jim McConahay, inżynier aplikacji w firmie Moore Industries International.
Opracował dr inż. Andrzej Ożadowicz, AGH Kraków
CE