Gdy falownik, licznik energii albo moduł wejść nie chce współpracować ze sterownikiem PLC, problem często nie leży w samym urządzeniu, lecz w komunikacji. Modbus RTU porządkuje wymianę danych po magistrali szeregowej, ale wymaga zgodnych parametrów, poprawnego okablowania i znajomości mapy rejestrów. Wyjaśniam, jak działa ten protokół, jak go skonfigurować oraz gdzie najczęściej pojawiają się błędy.
Najważniejsze informacje o komunikacji Modbus
- Modbus RTU to binarny tryb komunikacji szeregowej stosowany głównie z interfejsem RS-485.
- W jednej chwili nadaje tylko jedno urządzenie nadrzędne, a pozostałe odpowiadają na jego zapytania.
- Każda ramka zawiera adres urządzenia, kod funkcji, dane i sumę CRC.
- Najczęściej spotykane parametry to 9600 lub 19200 Bd, 8 bitów danych, parzystość Even.
- Najwięcej problemów powodują zamienione przewody A/B, zły adres, błędny offset rejestru i niezgodne parametry portu.
Co naprawdę oznacza Modbus RTU i do czego służy
Modbus RTU jest protokołem aplikacyjnym, czyli opisuje przede wszystkim znaczenie danych i sposób ich adresowania. Nie definiuje sam z siebie konkretnego przewodu ani poziomów napięć. W automatyce najczęściej działa przez RS-485, ale spotyka się także połączenia RS-232 oraz konwertery USB-RS-485.
Model komunikacji jest prosty. Sterownik PLC, komputer przemysłowy albo panel HMI pełni rolę mastera, czyli klienta, a falownik, czujnik lub moduł I/O działa jako slave, obecnie coraz częściej określany jako serwer. Master wysyła zapytanie do konkretnego adresu, a urządzenie odpowiada tylko wtedy, gdy wiadomość jest przeznaczona właśnie dla niego.
To rozwiązanie dobrze sprawdza się tam, gdzie trzeba odczytywać temperaturę, ciśnienie, prędkość obrotową, stan licznika lub kody alarmowe. Można też zapisywać nastawy, uruchamiać wyjścia i zmieniać parametry falownika, ale protokół nie zastępuje obwodów bezpieczeństwa. Zatrzymanie awaryjne powinno działać niezależnie od magistrali komunikacyjnej.
Adresy urządzeń mieszczą się zwykle w zakresie 1-247, natomiast adres 0 służy do rozgłaszania polecenia do wszystkich urządzeń. Przy broadcast urządzenia nie powinny odsyłać odpowiedzi, dlatego ten tryb trzeba stosować ostrożnie.
Jak wygląda komunikacja po RS-485
Najczęściej stosuje się topologię magistrali, czyli jeden przewód biegnący od urządzenia do urządzenia. Nie prowadzę przewodów w układzie gwiazdy, ponieważ odgałęzienia i odbicia sygnału potrafią powodować błędy, które wyglądają jak problemy programowe.
Do transmisji używa się zwykle skrętki ekranowanej z parą różnicową. Przewody oznaczone A i B nie mają jednak jednolitego nazewnictwa u wszystkich producentów. Jeżeli połączenie nie działa, zamiana tych dwóch żył jest jednym z pierwszych testów, które wykonuję.
Na obu końcach magistrali powinno znaleźć się terminowanie o wartości około 120 Ω. Rezystorów nie montuje się przy każdym urządzeniu. Trzeba też zadbać o wspólny potencjał odniesienia lub odpowiednią izolację galwaniczną, szczególnie gdy urządzenia są zasilane z różnych obwodów.
| Element | Znaczenie praktyczne |
|---|---|
| RS-485 | Warstwa fizyczna wykorzystująca sygnał różnicowy i magistralę wielopunktową. |
| Master | Urządzenie inicjujące zapytania, na przykład PLC lub komputer. |
| Slave | Urządzenie odpowiadające na zapytanie pod własnym adresem. |
| Terminacja | Rezystory ograniczające odbicia sygnału na końcach przewodu. |
| Ekran | Ogranicza wpływ zakłóceń elektromagnetycznych, ale wymaga poprawnego uziemienia. |
Warto rozdzielić dwie rzeczy, które bywają mylone. RTU jest formatem ramek, a RS-485 jest sposobem przesyłania sygnału. Samo gniazdo RS-485 nie oznacza jeszcze, że urządzenie używa Modbus. Producent może wykorzystać ten interfejs do zupełnie innego protokołu.
Ramka, adresy i funkcje, które trzeba rozumieć
Typowa ramka RTU składa się z adresu urządzenia, kodu funkcji, pola danych oraz 16-bitowego CRC. CRC pozwala odbiornikowi wykryć zmianę danych powstałą na przykład przez zakłócenia, ale nie naprawia uszkodzonej wiadomości.
[adres] [kod funkcji] [dane] [CRC low] [CRC high]
Ramki są oddzielone ciszą na magistrali trwającą co najmniej 3,5 czasu znaku. Przerwa dłuższa niż około 1,5 czasu znaku wewnątrz ramki może zostać potraktowana jako jej przerwanie. Z tego powodu błędne ustawienia prędkości lub opóźnienia w programie mogą prowadzić do komunikatów o nieprawidłowym CRC.
| Kod funkcji | Zastosowanie |
|---|---|
| 01 | Odczyt cewek, czyli wyjść bitowych. |
| 02 | Odczyt wejść binarnych. |
| 03 | Odczyt rejestrów holding, najczęściej nastaw i wartości roboczych. |
| 04 | Odczyt rejestrów wejściowych, zwykle wartości tylko do odczytu. |
| 05 | Zapis pojedynczej cewki. |
| 06 | Zapis pojedynczego rejestru 16-bitowego. |
| 15 i 16 | Zapis wielu cewek lub wielu rejestrów. |
Największe zamieszanie dotyczy adresowania. Dokumentacja może podawać rejestr jako 40001, a program PLC oczekuje adresu względnego 0. W innym urządzeniu ten sam parametr może być opisany jako 40001, 1 albo 0. Nie zgaduję tutaj. Zawsze sprawdzam instrukcję konkretnego urządzenia i informację, czy biblioteka wymaga adresu absolutnego, czy offsetu.
Rejestr Modbus ma zwykle 16 bitów. Jeżeli urządzenie udostępnia liczbę zmiennoprzecinkową 32-bitową, zajmuje ona dwa kolejne rejestry. Kolejność słów może być różna, na przykład ABCD, CDAB, BADC albo DCBA, dlatego odczyt dwóch poprawnych rejestrów nie gwarantuje jeszcze poprawnej wartości.
Konfiguracja krok po kroku bez zgadywania
Najpierw spisuję parametry z instrukcji obu urządzeń. Muszą być identyczne po stronie mastera i slave’a, inaczej nawet poprawne przewody nie wystarczą.
- Ustawiam unikalny adres urządzenia, na przykład 1 dla falownika i 2 dla modułu wejść.
- Wybieram tę samą prędkość transmisji, zwykle 9600 lub 19200 Bd.
- Ustawiam format znaków, najczęściej 8 bitów danych, parzystość Even i 1 bit stopu.
- Łączę przewody A i B zgodnie z dokumentacją producenta.
- Dodaję terminację tylko na fizycznych końcach magistrali.
- W programie wybieram właściwy kod funkcji i adres rejestru.
- Odczytuję najpierw jedną prostą wartość, zamiast od razu zapisywać nastawy.
Jeśli urządzenie nie odpowiada, nie zmieniam jednocześnie pięciu ustawień. Sprawdzam je po kolei, zaczynając od adresu, prędkości, parzystości i przewodów A/B. Taka metodyka jest wolniejsza tylko pozornie, bo ogranicza liczbę możliwych przyczyn.
Do testów przydaje się konwerter USB-RS-485 i program typu Modbus master. Najpierw wysyłam odczyt pojedynczego rejestru, potem sprawdzam odpowiedź w postaci bajtów. Jeżeli odpowiedź przychodzi, ale wartość jest absurdalna, problem zwykle leży w adresowaniu, skali lub kolejności bajtów, a nie w samej fizycznej sieci.
Najczęstsze błędy i szybka diagnostyka
Brak odpowiedzi urządzenia
W pierwszej kolejności sprawdzam zasilanie, adres i przewody różnicowe. Często winne są zamienione zaciski A/B albo użycie zacisku opisanego jako B- w urządzeniu, którego producent oznaczył tę samą linię jako D-.
Błąd CRC lub losowe odpowiedzi
Takie objawy wskazują na zakłócenia, złą prędkość, brak terminacji albo zbyt długie odgałęzienie. W pobliżu falowników i styczników używam przewodu ekranowanego, prowadzę go z dala od kabli silnikowych i nie traktuję ekranu jako zamiennika przewodu ochronnego.
Odpowiedź z kodem wyjątku
Jeżeli urządzenie odpowiada kodem wyjątku, komunikacja fizyczna najpewniej działa. Problem dotyczy wtedy nieobsługiwanej funkcji, złego adresu lub niedozwolonej liczby rejestrów. To cenna informacja diagnostyczna, bo pozwala przestać szukać usterki w przewodach.
Przeczytaj również: Programowanie SCL w PLC - składnia, przykłady i zastosowania
Poprawna liczba, ale zła wartość
Najczęściej sprawdzam skalowanie. Wartość 253 może oznaczać 25,3°C, jeśli producent stosuje mnożnik 10. Przy liczbach 32-bitowych kontroluję też kolejność słów i znak liczby. Sama zgodność z tabelą rejestrów nie wystarczy, jeśli nie znam jednostki oraz sposobu kodowania.
Nie ustawiam krótkiego czasu oczekiwania tylko po to, żeby aplikacja reagowała szybciej. Przy kilku urządzeniach, większej liczbie rejestrów i wolnej transmisji master potrzebuje czasu na odpowiedź. Zbyt agresywny timeout może generować fałszywe alarmy, choć instalacja działa poprawnie.
Ostatnie pięć minut przed uruchomieniem magistrali
- Każde urządzenie ma unikalny adres i identyczne parametry portu.
- Master nie wysyła kilku zapytań jednocześnie.
- Przewód tworzy magistralę, a nie rozbudowaną gwiazdę.
- Terminacja znajduje się tylko na obu końcach linii.
- Mapa rejestrów określa kod funkcji, offset, typ danych i skalowanie.
- Komendy zapisu są testowane dopiero po potwierdzeniu poprawnego odczytu.
Moim zdaniem największą zaletą tego rozwiązania nie jest sama prostota protokołu, lecz przewidywalność dobrze opisanej instalacji. Gdy znam topologię, parametry transmisji i mapę danych, uruchomienie zwykle przebiega bez niespodzianek. Gdy któregoś z tych elementów brakuje, nawet mała sieć potrafi zamienić się w trudną do zdiagnozowania zagadkę.