- Strona główna
- Słownik
- Modbus (automatyka budynkowa)
Modbus (automatyka budynkowa)
Modbus to otwarty protokół klient-serwer, który pozwala sterownikom odczytywać i zapisywać dane urządzeń przez szeregową magistralę RS-485 lub Ethernet.
Modbus to otwarty protokół wymiany komunikatów, który pozwala sterownikowi odczytywać i zapisywać dane przechowywane w urządzeniach polowych. Działa na szeregowej magistrali RS-485, czyli w wariancie Modbus RTU, lub przez Ethernet, czyli w wariancie Modbus TCP. Niektóre falowniki fotowoltaiczne (PV) i liczniki energii go obsługują. Na przykład falownik Fronius GEN24 działa w obu wariantach i przekazuje dane z licznika Fronius Smart Meter.
Czym jest Modbus i skąd pochodzi?
Modbus to protokół wymiany komunikatów na warstwie aplikacji, umieszczony na poziomie 7 modelu OSI. Zapewnia komunikację typu klient-serwer między urządzeniami połączonymi różnymi rodzajami magistral i sieci. Specyfikacja Modbus nazywa go branżowym standardem de facto dla komunikacji szeregowej w przemyśle od 1979 roku. Klient wysyła żądanie, a serwer odpowiada. Protokół definiuje format wiadomości oraz zestaw kodów funkcji. Nie określa jednak, co oznacza dany rejestr, dlatego każdy producent urządzeń opisuje to we własnej liście rejestrów.
Starsze dokumenty używają terminów master i slave. Przewodnik Modbus over Serial Line nadal ich używa, natomiast specyfikacja protokołu aplikacyjnego posługuje się terminami klient i serwer.
Jak działa Modbus RTU na magistrali szeregowej?
Modbus RTU to wariant szeregowy. Przewodnik dotyczący łącza szeregowego określa dwuprzewodowy interfejs RS-485 jako najpowszechniejszy. Tryb RTU jest obowiązkowy dla każdego urządzenia, a tryb ASCII jest opcjonalny. Tryb transmisji oraz ustawienia portu szeregowego muszą być identyczne dla wszystkich urządzeń na jednej linii.
Każdą transakcję rozpoczyna jeden master. Na linii może pracować do 247 urządzeń podrzędnych (slave), a każde z nich otrzymuje unikalny adres z zakresu od 1 do 247. Urządzenie slave nigdy nie wysyła danych bez żądania mastera. Każda ramka kończy się sumą kontrolną CRC, dzięki której odbiorca może odrzucić uszkodzoną wiadomość. Master, który odpytuje falownik i licznik na jednym kablu, wysyła żądanie, czeka na odpowiedź, a następnie pyta kolejne urządzenie.
Jak Modbus TCP dodaje nagłówek Ethernet?
Modbus TCP przenosi te same dane żądań i odpowiedzi w połączeniu TCP/IP, na zarejestrowanym porcie 502. Każda wiadomość zaczyna się 7-bajtowym nagłówkiem MBAP. Zawiera on identyfikator transakcji, który paruje żądania z odpowiedziami, identyfikator protokołu, który dla Modbus wynosi zero, pole długości oraz identyfikator jednostki. Brama wykorzystuje identyfikator jednostki, aby dotrzeć do urządzenia za nią, połączonego z linią szeregową. Tabela porównuje oba warianty.
| Cecha | Modbus RTU | Modbus TCP |
|---|---|---|
| Transmisja | Łącze szeregowe, najczęściej dwuprzewodowy RS-485 | TCP/IP przez Ethernet |
| Adresowanie urządzeń | Adres slave z zakresu od 1 do 247 na jednej magistrali | Adres IP oraz identyfikator jednostki za bramą |
| Kontrola błędów | CRC na końcu każdej ramki | Brak pola CRC w nagłówku MBAP. Ramka Ethernet zawiera własne CRC-32 |
| Zarejestrowany port | Nie dotyczy | Port TCP 502 |
| Maksymalny rozmiar wiadomości | 256 bajtów na łączu szeregowym | 260 bajtów przez TCP |
Jakie dane może udostępniać urządzenie Modbus?
Specyfikacja definiuje cztery tablice danych. Wejścia dyskretne (discrete inputs) i cewki (coils) przechowują pojedyncze bity. Rejestry wejściowe (input registers) i rejestry przechowujące (holding registers) przechowują 16-bitowe słowa. Wejścia dyskretne i rejestry wejściowe są tylko do odczytu. Klient może zapisywać cewki i rejestry przechowujące. Protokół numeruje cewki, wejścia dyskretne i rejestry od zera. Cewki o numerach od 1 do 16 w instrukcji odpowiadają adresom od 0 do 15 na magistrali. Jednostka danych protokołu zawiera maksymalnie 253 bajty, dlatego jedno żądanie odczytu zwraca ograniczony blok wartości.
| Tablica danych | Rozmiar | Dostęp |
|---|---|---|
| Wejścia dyskretne | Pojedynczy bit | Tylko do odczytu |
| Cewki | Pojedynczy bit | Odczyt i zapis |
| Rejestry wejściowe | 16-bitowe słowo | Tylko do odczytu |
| Rejestry przechowujące | 16-bitowe słowo | Odczyt i zapis |
Jak falowniki PV, liczniki i pompy ciepła wykorzystują Modbus?
Instrukcja falownika Fronius GEN24 pokazuje, jak to wygląda w praktyce. Falownik oferuje Modbus TCP przez Ethernet oraz Modbus RTU przez RS-485. Instrukcja wymienia bloki rejestrów dla danych falownika i dla danych licznika. Podłączony licznik energii można odczytać za pomocą ustawialnego identyfikatora urządzenia Modbus. Domowy sterownik może odczytać te wartości i wykorzystać je w logice sterowania.
To, czy pompa ciepła obsługuje Modbus, zależy od modelu i jego sterownika. Przed zakupem zapytaj producenta o listę rejestrów dokładnie tego modelu. Protokół Modbus nie określa, który rejestr przechowuje którą wartość, dlatego rzeczywistym źródłem jest lista rejestrów zawarta w instrukcji producenta.
Czym Modbus różni się od BACnet i KNX?
Modbus i BACnet to różne protokoły. Modbus definiuje kody funkcji i tablice danych, a znaczenie każdej wartości pochodzi od producenta urządzenia. BACnet definiuje obiekty ze standardowymi właściwościami, które opisują każdy obiekt dla innych urządzeń. Hasło BACnet wyjaśnia model obiektowy.
| Pytanie | Modbus | BACnet |
|---|---|---|
| Co definiuje protokół? | Format wiadomości, kody funkcji i tablice danych | Obiekty ze standardowymi właściwościami |
| Kto nadaje wartości znaczenie? | Producent urządzenia, w liście rejestrów | Typ obiektu i jego właściwości |
| Jak urządzenie opisuje samo siebie? | Nie robi tego. Opisuje je lista rejestrów w instrukcji | Jego obiekt urządzenia wymienia obsługiwane obiekty i usługi |
KNX to trzeci protokół. Stowarzyszenie KNX opisuje go jako otwarty standard i wymienia domy jednorodzinne wśród kategorii projektów. System automatyki budynkowej może łączyć więcej niż jeden protokół, a bramy scalają je ze sobą. Modbus jest jednym ze sposobów przekazywania odczytów z falownika PV lub inteligentnego licznika do takiego systemu.
Co sprawdzić przed podłączeniem urządzeń Modbus?
Zacznij od instrukcji urządzeń, a nie od specyfikacji protokołu. Ustal, czy urządzenie obsługuje RTU, TCP, czy oba warianty, oraz która lista rejestrów obowiązuje dla jego wersji oprogramowania sprzętowego. Każdemu urządzeniu szeregowemu nadaj unikalny adres i używaj tych samych ustawień na całej magistrali. Listę rejestrów zapisz w dokumentacji projektu, ponieważ numeracja w instrukcjach może różnić się od numeracji na magistrali.
Warto też zadbać o bezpieczeństwo. Modbus Organization publikuje osobny Modbus Security Protocol, który łączy Transport Layer Security (TLS) z tradycyjnym protokołem Modbus. Do uwierzytelniania wykorzystuje certyfikaty X.509v3. Modbus Organization oznacza dokument dotyczący łącza szeregowego z 1996 roku jako nieaktualny, dlatego przy każdej nowej instalacji RS-485 używaj przewodnika Serial Line w wersji V1.02.
Najczęściej zadawane pytania
- Czy Modbus to to samo co BACnet?
- Nie. Modbus przenosi kody funkcji i tablice danych, a to, co oznacza każdy rejestr, określa producent urządzenia. BACnet definiuje obiekty ze standardowymi właściwościami, dzięki czemu urządzenie samo opisuje swoje dane w sieci.
- Dlaczego adres rejestru w mojej mapie Modbus wygląda na przesunięty o jeden?
- Protokół numeruje rejestry i cewki od zera, podczas gdy instrukcje często numerują je od jednego. Rejestry oznaczone w instrukcji numerami od 1 do 16 mają na magistrali adresy od 0 do 15. Zanim wpiszesz adres do sterownika, przeczytaj uwagę o numeracji w dokumentacji.
- Czy Modbus jest wystarczająco bezpieczny dla domowego systemu energetycznego?
- Nie sam z siebie. Tradycyjny protokół Modbus nie zapewnia ochrony TLS. Organizacja Modbus publikuje Modbus Security Protocol, który łączy TLS z protokołem i korzysta z certyfikatów X.509v3, dlatego zapytaj, czy twoje urządzenia go obsługują.
- Czy do podłączenia urządzeń Modbus RTU do Ethernetu potrzebuję bramki?
- Tak, jeśli sterownik ma tylko Ethernet, a urządzenia znajdują się na magistrali RS-485. Bramka tłumaczy między Modbus TCP a Modbus RTU. Identyfikator jednostki w nagłówku TCP wskazuje urządzenie szeregowe, które odbiera zapytanie.
- Czy falownik fotowoltaiczny i licznik energii mogą współdzielić jedno połączenie Modbus?
- Mogą współdzielić magistralę RS-485, jeśli oba obsługują Modbus RTU i każde ma unikalny adres. Niektóre falowniki, na przykład Fronius GEN24, odczytują też podłączony licznik i przekazują jego dane dalej przez własny interfejs Modbus. Listy rejestrów i ustawienia sprawdź w instrukcjach.
- Czy moja pompa ciepła obsługuje Modbus?
- Zależy to od modelu i jego sterownika. Zapytaj producenta o listę rejestrów dokładnie tego modelu. Jeśli producent nie publikuje listy rejestrów, zaplanuj inny sposób odczytu jej danych.
Źródła
- MODBUS Application Protocol Specification V1.1b3 · Modbus Organization · Introduction (de facto standard since 1979), 1.1 Scope (OSI level 7), data model table, 4.1 PDU and ADU sizes, coils addressed from zero
- MODBUS over Serial Line Specification and Implementation Guide V1.02 · Modbus.org · 2.1 Master/slave principle, 2.5 Transmission modes, RS-485 interface
- MODBUS Messaging on TCP/IP Implementation Guide V1.0b · Modbus Organization · 3.1.3 MBAP Header description, port 502, section on error detection
- Specifications and Implementation Guides · Modbus Organization · Specification list
- Fronius GEN24: Modbus TCP and RTU · Fronius International GmbH · Modbus TCP and RTU operating instructions
- The Language of BACnet: Objects, Properties and Services · BACnet Committee website, article by Bill Swan (Alerton Technologies) · Objects, Device object
- KNX: One standard. Every brand. Every system. · KNX Association · Home page