21/06/2023
Protokół Modbus, opracowany w 1979 roku przez firmę Modicon, jest jednym z najpopularniejszych i najbardziej wszechstronnych protokołów komunikacyjnych stosowanych w automatyce przemysłowej i systemach HVAC. Jego otwarta architektura i prostota implementacji przyczyniły się do jego szerokiego rozpowszechnienia i trwałej popularności. W tym artykule kompleksowo omówimy działanie protokołu Modbus, jego różne warianty, zastosowania oraz kluczowe aspekty techniczne.

- Czym jest Modbus?
- Jak działa Modbus?
- Rodzaje komunikacji Modbus
- Typy danych i adresowanie w Modbus
- Kody funkcji Modbus
- Biblioteki Modbus dla Raspberry Pi
- Modbus a inne technologie
- Modbus w HVAC
- RS-485 a Modbus
- Podsumowanie kluczowych aspektów RS-485 (w kontekście Modbus RTU)
- Często zadawane pytania (FAQ)
- Podsumowanie
Czym jest Modbus?
Modbus to protokół komunikacyjny typu master-slave (klient-serwer), zaprojektowany do przesyłania danych między urządzeniami w systemach automatyki przemysłowej. Umożliwia komunikację między różnymi typami urządzeń, takimi jak sterowniki PLC, czujniki, siłowniki, panele HMI i komputery SCADA. Jego uniwersalność polega na niezależności od konkretnego producenta sprzętu, co pozwala na integrację urządzeń różnych dostawców w ramach jednej sieci.
Jak działa Modbus?
W architekturze Modbus, jedno urządzenie pełni rolę mastera (klienta), które inicjuje komunikację i wysyła zapytania do urządzeń slave (serwerów). Urządzenia slave odpowiadają na zapytania mastera, przesyłając żądane dane lub wykonując polecenia. Komunikacja odbywa się poprzez wymianę ramek danych, które zawierają adres urządzenia slave, kod funkcji, dane oraz sumę kontrolną.
Rodzaje komunikacji Modbus
Istnieje kilka wariantów protokołu Modbus, dostosowanych do różnych mediów transmisyjnych i wymagań aplikacji:
Modbus RTU (Remote Terminal Unit)
Modbus RTU jest najczęściej stosowanym wariantem, wykorzystującym komunikację szeregową, zazwyczaj poprzez interfejs RS-485 lub RS-232. Jest to rozwiązanie ekonomiczne i wydajne, szczególnie w aplikacjach o krótszych odległościach transmisji. Modbus RTU charakteryzuje się binarnym kodowaniem danych i trybem transmisji half-duplex, gdzie komunikacja odbywa się dwukierunkowo, ale tylko w jednym kierunku naraz.
Specyfikacja Modbus RTU:
- Topologia sieci: Magistrala szeregowa
- Model komunikacji: Master-slave
- Liczba urządzeń: Do 247 urządzeń slave na jedną sieć master
- Adresowanie: Slave od 1 do 247, broadcast 0
- Prędkość transmisji: Do 115.2 Kbps
- Maksymalna długość linii: Do 1200m (możliwość zwiększenia za pomocą repeaterów)
- Ramka danych: Adres slave, kod funkcji, dane, suma kontrolna CRC
Zalety Modbus RTU:
- Prosta i tania implementacja
- Wysoka wydajność i szybkość transmisji
- Odporność na zakłócenia (szczególnie przy użyciu RS-485)
Wady Modbus RTU:
- Ograniczona liczba urządzeń w sieci
- Ograniczenie odległości transmisji
Modbus ASCII
Modbus ASCII to wariant protokołu, w którym dane są przesyłane jako znaki ASCII kodowane heksadecymalnie. Jest rzadziej stosowany niż Modbus RTU, ale może być przydatny w sytuacjach, gdzie wymagana jest czytelność danych dla człowieka.
Różnice między Modbus ASCII i RTU:
| Cecha | Modbus RTU | Modbus ASCII |
|---|---|---|
| Kodowanie danych | Binarne | ASCII (heksadecymalne) |
| Efektywność | Wyższa | Niższa |
| Sprawdzanie błędów | CRC | LRC |
| Kadrowanie ramek | Przerwy czasowe | Znaki startu i końca |
Modbus TCP
Modbus TCP wykorzystuje sieć Ethernet i protokół TCP/IP do komunikacji. Umożliwia przesyłanie danych Modbus poprzez standardową infrastrukturę sieciową. Modbus TCP jest idealny do dużych systemów i sieci o rozległej topologii, oferując szybką i skalowalną komunikację.
Specyfikacja Modbus TCP:
- Topologia sieci: Ethernet (gwiazda, magistrala, pierścień)
- Model komunikacji: Klient-serwer
- Adresowanie: Adres IP urządzenia
- Prędkość transmisji: Do 100 Mbps (w zależności od infrastruktury Ethernet)
- Maksymalna odległość: Do 100m na segment Ethernet (możliwość zwiększenia za pomocą przełączników i światłowodów)
- Ramka danych: Nagłówek MBAP, kod funkcji, dane
- Port TCP: 502 (domyślny)
Zalety Modbus TCP:
- Wysoka prędkość transmisji
- Skalowalność i łatwa integracja z istniejącymi sieciami Ethernet
- Możliwość zdalnego zarządzania i monitorowania
Wady Modbus TCP:
- Wyższy koszt implementacji w porównaniu do Modbus RTU
- Złożoność konfiguracji sieciowej
Typy danych i adresowanie w Modbus
Protokół Modbus operuje na dwóch podstawowych typach danych: bitach (wartości binarne 0 lub 1) i liczbach (16-bitowych rejestrach). Bity są używane do sterowania stanami urządzeń (włącz/wyłącz), natomiast rejestry przechowują wartości liczbowe, takie jak pomiary, nastawy czy parametry pracy.

Adresowanie w Modbus opiera się na numeracji od 1 do 9999. W zależności od typu danych (bit/rejestr) i trybu dostępu (odczyt/zapis), do adresów dodawane są prefiksy (np. 1xxxx, 3xxxx, 4xxxx). Ważne jest, aby pamiętać o przesunięciu adresacji o +1, ponieważ w protokole Modbus numeracja zaczyna się od 1, a w pamięci urządzeń od 0.
| Typ danych | Typ zapisu | Zakres adresów (Modbus) | Zakres adresów (hex) |
|---|---|---|---|
| Bity wyjściowe (Coils) | Odczyt i zapis | 1-9999 | 0x0 - 0x270E |
| Bity wejściowe (Discrete Inputs) | Odczyt | 10001-19999 | 0x0 - 0x270E |
| Rejestry wejściowe (Input Registers) | Odczyt | 30001-39999 | 0x0 - 0x270E |
| Rejestry pamiętające (Holding Registers) | Odczyt i zapis | 40001-49999 | 0x0 - 0x270E |
Kody funkcji Modbus
Kody funkcji w Modbus definiują rodzaj operacji, jaką master żąda od slave'a. Każdy kod funkcji reprezentuje konkretne polecenie, takie jak odczyt lub zapis danych. Poniżej przedstawiono tabelę z najczęściej używanymi kodami funkcji Modbus:
| Kod funkcji (hex) | Opis | Akcja |
|---|---|---|
| 0x01 | Odczyt wyjść bitowych (Read Coils) | Odczyt stanu bitów wyjściowych (cewek) z urządzenia slave. |
| 0x02 | Odczyt wejść bitowych (Read Discrete Inputs) | Odczyt stanu wejść bitowych (dyskretnych) z urządzenia slave. |
| 0x03 | Odczyt rejestrów pamiętających (Read Holding Registers) | Odczyt zawartości rejestrów pamiętających (16-bitowych wartości). |
| 0x04 | Odczyt rejestrów wejściowych (Read Input Registers) | Odczyt rejestrów wejściowych (16-bitowych wartości dla urządzeń wejściowych). |
| 0x05 | Zapis pojedynczego bitu (Write Single Coil) | Zapis pojedynczego bitu wyjściowego (cewki) do urządzenia slave. |
| 0x06 | Zapis pojedynczego rejestru (Write Single Register) | Zapis pojedynczego rejestru pamiętającego do urządzenia slave. |
| 0x0F | Zapis wielu bitów (Write Multiple Coils) | Zapis wielu bitów wyjściowych (cewek) do urządzenia slave. |
| 0x10 | Zapis wielu rejestrów (Write Multiple Registers) | Zapis wielu rejestrów pamiętających do urządzenia slave. |
| 0x11 | Identyfikacja urządzenia (Report Slave ID) | Pobranie informacji identyfikacyjnych o urządzeniu slave. |
Biblioteki Modbus dla Raspberry Pi
Dzięki popularności protokołu Modbus, dostępne są liczne biblioteki programistyczne ułatwiające implementację komunikacji Modbus na różnych platformach, w tym na Raspberry Pi. Popularne biblioteki to:
- PyModbus (Python): Kompleksowa biblioteka wspierająca Modbus RTU i TCP, zarówno dla klientów, jak i serwerów.
- MinimalModbus (Python): Lżejsza biblioteka przeznaczona głównie dla Modbus RTU.
- pyModbusTCP (Python): Biblioteka dla Modbus TCP.
Modbus a inne technologie
Modbus vs Ethernet
Ethernet to standard sieciowy warstwy fizycznej, opisujący sposób przesyłania danych, natomiast Modbus jest protokołem komunikacyjnym, który może być wykorzystywany w różnych mediach transmisyjnych, w tym w sieci Ethernet (Modbus TCP). Ethernet zapewnia infrastrukturę sieciową, podczas gdy Modbus definiuje zasady wymiany danych między urządzeniami.
Modbus RTU vs TCP: Który wybrać?
Wybór między Modbus RTU a Modbus TCP zależy od konkretnych wymagań aplikacji. Modbus RTU jest odpowiedni dla prostych, lokalnych systemów, gdzie liczy się koszt i prostota implementacji. Modbus TCP jest preferowany w większych, rozproszonych systemach, wymagających wysokiej prędkości i skalowalności, wykorzystujących infrastrukturę Ethernet.
Modbus vs Profibus: Porównanie
Modbus i Profibus to dwa popularne protokoły w automatyce przemysłowej. Modbus jest prostszy, bardziej otwarty i tańszy w implementacji, idealny dla mniejszych i średnich systemów. Profibus oferuje większą szybkość i bardziej zaawansowane funkcje, ale jest bardziej złożony i kosztowny, przeznaczony dla dużych, wymagających aplikacji.
Modbus w HVAC
Protokół Modbus odgrywa kluczową rolę w automatyce budynkowej (HVAC), umożliwiając integrację i komunikację systemów klimatyzacji, wentylacji, ogrzewania, oświetlenia, bezpieczeństwa i zarządzania energią. Dzięki Modbus, urządzenia różnych producentów mogą współpracować, tworząc inteligentne i efektywne systemy zarządzania budynkiem.
RS-485 a Modbus
RS-485 to standard warstwy fizycznej, określający elektryczne parametry interfejsu szeregowego, natomiast Modbus jest protokołem komunikacyjnym, który może wykorzystywać RS-485 jako medium transmisyjne (Modbus RTU). RS-485 zapewnia niezawodną i odporną na zakłócenia komunikację szeregową, co czyni go popularnym wyborem dla Modbus RTU.

Podsumowanie kluczowych aspektów RS-485 (w kontekście Modbus RTU)
- Topologia: Liniowa (magistrala)
- Sygnały: Różnicowe (A i B)
- Okablowanie: Skrętka dwuprzewodowa (zalecana ekranowana STP)
- Terminacja: Rezystory 120 Ω na końcach linii
- Tryb pracy: Half-duplex (najczęściej) lub Full-duplex
- Odporność na zakłócenia: Wysoka (dzięki transmisji różnicowej i ekranowaniu)
- Izolacja galwaniczna: Zalecana w rozległych sieciach lub w środowisku narażonym na zakłócenia
Często zadawane pytania (FAQ)
- Jaka jest różnica między Modbus RTU a Modbus TCP?
Modbus RTU wykorzystuje komunikację szeregową (RS-485 lub RS-232), natomiast Modbus TCP opiera się na sieci Ethernet i protokole TCP/IP.
- Do czego Modbus jest używany w automatyce przemysłowej?
Modbus jest szeroko stosowany do komunikacji między sterownikami PLC, czujnikami, siłownikami i innymi urządzeniami w celu wymiany danych i sterowania procesami przemysłowymi.
- Czy Modbus może działać przez Ethernet?
Tak, Modbus TCP jest specjalnie zaprojektowany do pracy w sieciach Ethernet, wykorzystując protokół TCP/IP.
- Jaki jest port Modbus TCP?
Domyślny port Modbus TCP to 502.
Podsumowanie
Protokół Modbus pozostaje kluczowym standardem komunikacji w automatyce przemysłowej i systemach HVAC. Jego prostota, uniwersalność i niezawodność sprawiają, że jest to popularny wybór dla szerokiego spektrum aplikacji. Wybór odpowiedniego wariantu Modbus (RTU, TCP, ASCII) zależy od specyficznych wymagań projektu. Dzięki swojej otwartości i dostępności, Modbus nadal odgrywa istotną rolę w rozwoju nowoczesnych systemów automatyzacji.
Jeśli chcesz poznać inne artykuły podobne do Protokół Modbus: Kompletny przewodnik, możesz odwiedzić kategorię HVAC.
