Z tego artykułu dowiesz się co to jest protokół Modbus, jak działa, jakie są jego rodzaje oraz do czego go można wykorzystać. Jeśli zaczynasz przygodę z automatyką to koniecznie przeczytaj!
Każdy, kto zajmuje się automatyką prędzej czy później spotyka się z tajemniczą nazwą Modbus. Jest to bowiem bardzo popularny protokół komunikacyjny stosowany właśnie w automatyce oraz w przemyśle. Modbus jest protokołem otwartym. Oznacza to, że każdy może z niego korzystać i produkować urządzenia komunikujące się tym protokołem. Co więcej bez żadnych opłat licencyjnych czy zgód ze strony twórców, czyli firmy Modicon (obecnie Schneider Electric). Dzięki temu stał się bardzo popularny i na rynku istnieje ogromna ilość urządzeń wspierających ten sposób wymiany danych. Jest to protokół typu Klient-Serwer lub inaczej Master-Slave. A zatem w systemie jest jeden sterownik centralny, a pozostałe urządzenia wykonują jedynie jego polecenia i odpowiadają na zapytania.
Rodzaje protokołu Modbus
Podstawowa wersja Modbus-a nosi nazwę Modbus RTU i sprzętowo jest zbudowana na bazie standardu RS-485. Wymaga więc okablowania typu skrętka dwuprzewodowa. Warto stosować skrętkę ekranowaną zwłaszcza w przypadku dłuższych odległości. Oczywiście nic nie stoi na przeszkodzie aby zastosować typową skrętkę komputerową UTP/FTP i wykorzystać tylko jedną parę. Dane w wersji RTU są wysyłane binarnie jako znaki ośmiobitowe. Protokół posiada kontrolę parzystości CRC, dzięki czemu jest dosyć niezawodny i trudno jest zakłócić transmisję.
Istnieje też rzadziej stosowana wersja Modbus ASCII, która sprzętowo jest identyczna jak Modbus RTU. Różni się jednak sposobem wysłania danych. Tutaj dane są tekstowe, wysyłane szesnastkowo i kodowane w standardzie ASCII. Poza tym nie ma innych różnic.
Coraz bardziej popularny jest Modbus TCP/IP. Wykorzystuje on bardzo popularny w sieciach komputerowych protokół TCP/IP. Dzięki temu można sterowanie Modbus łatwo zintegrować z istniejącymi sieciami komputerowymi (LAN, internet) i korzystać ze wszystkich jego dobrodziejstw. Umożliwia to między innymi zdalne sterowanie przez internet, korzystanie z aplikacji, wystawienie sterowania na stronach www i wiele innych. Z tego powodu jest coraz chętniej stosowany przez instalatorów, mimo że same urządzenia są nieco droższe.
Istnieje jeszcze opcja tunelowania Modbus RTU poprzez TCP/IP ale wymaga ona dodatkowego urządzenia, jakim jest konwerter RS-485 na Ethernet lub serwer portów szeregowych. Takie rozwiązanie umożliwia wykorzystanie istniejących sieci Ethernet. Dzięki temu nie trzeba prowadzić dodatkowego okablowania, a odległości połączeń mogą być znacznie większe.
Jak działa Modbus?
Ogólnie wymiana danych w Modbusie jest dosyć prosta. Wygląda to tak, że Master wysyła zapytanie do konkretnego urządzenia Slave – a to odpowiada. Tylko Master może inicjować komunikację, czyli Slave-y nie mogą odpowiadać nie pytane. Jeśli dany Slave nie odpowie po określonym czasie (zazwyczaj edytowalnym) to Master przestaje czekać na odpowiedź i kontynuuje transmisję. Nie będę się tutaj wdawał w szczegóły wysyłanych ramek bo to przekracza zakres tego artykułu. Każde urządzenie ma przypisany adres z puli od 1 do 247. Master posiada adres 0, który jest adresem rozgłoszeniowym. W jednej sieci Modbus nie może być dwóch urządzeń o identycznych adresach ponieważ powstanie konflikt podczas odpowiedzi. Dlatego jeśli coś nam nie bardzo chce działać, a nie wiemy co to warto sprawdzić poprawność adresów 🙂
Funkcje (komendy) i rejestry
Sama wymiana danych w magistrali Modbus odbywa się za pomocą funkcji oraz rejestrów. Mogą one na pierwszy rzut oka mogą wydawać się skomplikowane. Ale po chwili okazuje się, że nie jest tak źle. Funkcje to inaczej komendy, które są częściowo zdefiniowane przez standard Modbus, a częściowo otwarte dla producentów do realizacji nietypowych zadań. Każde urządzenie Modbus obsługuje tylko wybrane funkcje zgodnie ze swoją specyfikacją. Na przykład nasz sterownik Modbus EC-133MB obsługuje tylko funkcje 3 (odczyt rejestru), 6 (zapis rejestru) oraz 16 (zapis wielu rejestrów) ale to w zupełności wystarcza do pełnej kontroli jasności wszystkich 3 wyjść LED, a nawet tworzenia prostych scen świetlnych. No i oczywiście odczytywania aktualnego stanu, co w automatyce może być przydatne. Na przykład do tworzenia warunków i różnicowania reakcji urządzeń/obwodów w zależności od jasności oświetlenia.
Przykład praktyczny
W praktyce działa to tak, że na przykład funkcją 6 zapisujemy do rejestru 1 wartość 0. Co spowoduje, że jasność na kanale 1 zostaje ustawiona na 0. Gdybyśmy chcieli ustawić inną jasność to po prostu wysyłamy do rejestru 6 inną wartość z zakresu od 1 do 256. Wysyłając jakąś wartość do rejestru 2 ustawiamy jasność na kanale 2. I tak dalej. Jeśli chcemy sprawdzić jaka jest aktualna wartość jasności na przykład na kanale 3 to wystarczy funkcją 3 (odczyt rejestru) odczytać rejestr 3 i EC-133MB wyśle nam w odpowiedzi aktualną jasność kanału 3.
Sceny świetlne
Odrobinę bardziej skomplikowane jest stworzenie sceny świetlnej – ale tylko odrobinę 🙂 Trzeba bowiem wysłać dwie komendy. Najpierw funkcją 6 zapisać do rejestru 4 (docelowa jasność na kanale 1) jasność jaką chcemy uzyskać finalnie. Następnie również funkcją 6 zapisujemy do rejestru 5 (czas osiągnięcia docelowej jasności kanału 1) czas po jakim chcemy tą jasność osiągnąć. Jednostką tutaj jest dziesięć milisekund, czyli jeśli chcemy odczekać sekundę to wysyłamy wartość 100. W momencie wysłania tej wartości scena startuje i EC-133MB przez sekundę zmienia jasność z aktualnej do tej wysłanej przed chwila do rejestru 5.
A co jeśli chcemy zmienić jasność w kilku kanałach jednocześnie? Lub wystartować na raz z kilkoma scenami? Wtedy postępujemy analogicznie tyle, że korzystamy z funkcji 16 (zapis wielu rejestrów), która umożliwia zapis do wielu rejestrów naraz. W EC-133MB mamy też dodatkowe rejestry, które umożliwiają zmianę parametrów transmisji oraz adresu urządzenia. Generalnie każde urządzenie Modbus typu slave musi mieć opisane funkcje oraz rejestry, które są dla niego aktywne wraz z formatem danych oraz reakcją na nie urządzenia. Mając te dane postępujemy podobnie jak w wyżej opisanym przykładzie aby otworzyć lub zamknąć rolety, zmienić temperaturę, wilgotność lub wykonać mnóstwo innych czynności dostępnych dzięki automatyce.
Numer a adres rejestru
Warto jeszcze wspomnieć, że jest pewne zamieszanie z numeracją rejestrów. Mianowicie część producentów podaje adres rejestru, a cześć jego numer. Ponieważ numer jest w stosunku do adresu przesunięty o 1 to często powoduje to problemy. Adresy liczymy od zera, a numery od 1. Dlatego warto zawsze sprawdzić czy dana instrukcja obsługi podaje numer czy adres aby uniknąć dziwnego zachowania urządzeń. My, dla ułatwienia, podajemy tak numer jak i adres rejestrów.