Modbus Master: odpytywanie, skanowanie i podsłuch Modbus RTU/TCP

Odczytasz i zapiszesz rejestry, znajdziesz urządzenie o nieznanym adresie i parametrach portu, zmapujesz nieudokumentowaną przestrzeń adresową i podsłuchasz linię RS-485. To samo zrobisz z wiersza poleceń.

Modbus Master: okno odpytywania dziesięciu rejestrów holding z rozkodowanym ruchem pod spodem
Modbus Master: okno odpytywania dziesięciu rejestrów holding z rozkodowanym ruchem pod spodem.

Do czego służy Modbus Master

Dla automatyków i integratorów, którzy uruchamiają urządzenia z Modbusem, często bez pełnej dokumentacji, i potrzebują zobaczyć, co naprawdę jest na łączu.

ChceszJak to robi program
Odczytać i opisać rejestry urządzeniaOkna odpytywania z nazwą, skalą, przesunięciem, jednostką i progami alarmowymi dla każdego adresu. Nazwy importujesz i eksportujesz jako CSV, więc listę rejestrów przygotujesz w arkuszu.
Znaleźć urządzenie o nieznanym adresieSkaner adresów slave 0–255 liczy też adresy odpowiadające wyjątkiem, bo to także odpowiedź. Skaner sieci IP przeszukuje zakres CIDR lub od–do.
Ustalić parametry portu szeregowegoWykrywanie prędkości i formatu znaku sprawdza je od najczęstszych. Uszkodzone odpowiedzi zgłasza jako „prawie trafienia”, bo zwykle oznaczają złą parzystość, a nie zły adres.
Zmapować urządzenie bez dokumentacjiMapa rejestrów czyta duże bloki i dzieli na pół te odrzucone wyjątkiem 02, aż ustali, które zakresy naprawdę istnieją.
Podsłuchać linię RS-485Sniffer nic nie wysyła, paruje zapytania z odpowiedziami i dekoduje oba. Ruch eksportujesz do pcap i otwierasz w Wiresharku.
Przetestować bez sprzętu albo zautomatyzować uruchomienieSymulator slave po TCP, UDP lub łączu szeregowym z wieloma identyfikatorami jednocześnie oraz mmcli ze skryptami uruchomieniowymi i kontrolami expect.

Funkcje

Tryby i transport

RTU, ASCII, TCP, UDP, RTU over TCP i Modbus/TCP Security (TLS).

Zapis

Z wiersza okna odpytywania albo z okna zapisu. Potwierdzenie podaje adres i wartość i pokazuje słowa rejestrów w hex przed wysłaniem. Można wymusić FC15 lub FC16.

Szablony, trendy, publikacja

Szablon urządzenia to zapisany zestaw okien odpytywania z nazwami, nakładany na połączenie jednym krokiem. Trendy i wykresy oraz publikacja odczytanych wartości do MQTT lub InfluxDB.

mmcli: to samo z wiersza poleceń

Polecenie run wykonuje skrypt z kontrolami expect. Kod wyjścia odróżnia błąd użycia, błąd komunikacji, wyjątek urządzenia i nieudaną kontrolę, więc mmcli nadaje się do skryptów uruchomieniowych i testów.

mmcli read tcp:10.0.0.5 -u 3 -t hr -a 100 -n 10 --type Float32
mmcli write rtu:COM3:19200:8E1 -u 7 -a 40 -v 21.5 --type Float32
mmcli scan rtu:COM3:9600:8N1 --from 1 --to 247
mmcli map tcp:10.0.0.5 -t hr -n 2000
mmcli detect COM3 --units 1,2,3
mmcli run commissioning.mms --log run.txt

Bezpieczeństwo zapisu do urządzeń

Program zapisuje do automatyki budynkowej, dlatego te zabezpieczenia działają w całym programie i nie da się ich wyłączyć:

  • Każdy zapis wymaga potwierdzenia z podaniem adresu i wartości.
  • Każdy zapis trafia do audit.log z czasem, użytkownikiem, celem, adresem i wartością.
  • Tryb tylko do odczytu blokuje każdy zapis już na poziomie transportu. Warto go włączyć przed podłączeniem do instalacji, którą wolno tylko oglądać.
  • Rejestry input i wejścia dyskretne są tylko do odczytu; zapis do nich jest odrzucany z podaniem powodu, zanim ramka zostanie wysłana.

Instalacja i wymagania

Program działa na Windows x64. Środowisko .NET jest w pakiecie, więc nie trzeba instalować nic więcej. Przy pierwszym uruchomieniu system zapyta o dostęp do zapory (TCP 502); zezwól dla sieci, w której są urządzenia. Cichą instalację wykonasz poleceniem msiexec /i <plik>.msi /qn.

Wersja przenośna niczego nie zapisuje w profilu użytkownika, dopóki obok programu leży plik portable.txt, więc działa z pendrive’a. Pakiety nie są jeszcze podpisane cyfrowo, więc Windows SmartScreen ostrzeże o nieznanym wydawcy. Interfejs jest po polsku, angielsku lub niemiecku, a F1 otwiera wbudowaną instrukcję.

Znane ograniczenia tej wersji

To wersja beta: kompletna na tyle, by używać jej na rzeczywistym sprzęcie, ale bez sezonu codziennej pracy za sobą.

  • Sniffer potrzebuje portu, który słyszy linię: adaptera RS-485 w trybie tylko nasłuchu albo odczepu.
  • Modbus nie ma mechanizmu wykrywania, więc szukanie urządzeń polega na pytaniu adres po adresie. Zakresy są ograniczone, żeby literówka nie przeczesała całej sieci.
  • TLS przetestowano z serwerem z certyfikatem samopodpisanym i przypiętym odciskiem; certyfikatów z firmowego CA jeszcze nie sprawdzano.

Najczęstsze pytania o Modbus Master

Jakie warianty Modbus obsługuje Modbus Master?

RTU, ASCII, TCP, UDP, RTU over TCP oraz Modbus/TCP Security (TLS).

Jak znaleźć adres slave i parametry portu w urządzeniu bez dokumentacji?

Skaner adresów sprawdza adresy 0–255 i uwzględnia te, które odpowiadają wyjątkiem. Wykrywanie parametrów portu próbuje prędkości i formaty znaku od najczęstszych. Uszkodzone odpowiedzi zgłasza jako „prawie trafienia”, bo zwykle oznaczają złą parzystość, a nie zły adres.

Jak zmapować rejestry nieudokumentowanego urządzenia?

Mapa rejestrów czyta duże bloki i dzieli na pół te, które urządzenie odrzuciło wyjątkiem 02, aż ustali, które zakresy istnieją.

Czy mogę podsłuchać ruch Modbus RTU na RS-485?

Tak. Sniffer niczego nie wysyła, paruje zapytania z odpowiedziami i dekoduje oba, a ruch eksportuje do CSV albo pcap dla Wiresharka. Potrzebny jest port, który słyszy linię: adapter RS-485 w trybie tylko nasłuchu albo odczep.

Jak zapisać liczbę zmiennoprzecinkową do rejestrów Modbus?

Podaj tabelę, adres i typ, np. hr:100:F32. Kolejność słów ustawisz przyrostkiem, np. ir:7:U32/CDAB, skalę przez *0.1, a adres slave przez @3. Potwierdzenie zapisu pokazuje słowa rejestrów w hex przed wysłaniem.

Czy Modbus Master ma wiersz poleceń?

Tak, mmcli działa na tym samym silniku. Ma polecenia read, write, scan, map, detect i run, a run wykonuje skrypty uruchomieniowe z kontrolami expect i rozróżnia przyczyny niepowodzenia w kodzie wyjścia.

Czy program jest darmowy?

Tak, na licencji MIT. Działa na Windows x64, środowisko .NET jest w pakiecie. Dostępny jest instalator MSI (z mmcli w PATH) i wersja przenośna ZIP.

Zgłaszanie błędów i licencja

Opisz, co zrobiono, co się stało i czego się spodziewano, i dołącz plik dziennika (moduł Log ma przycisk „Otwórz folder dziennika”). Nowe zgłoszenie na GitHubie albo wiadomość na [email protected].

Licencja MIT. Kod źródłowy znajduje się w prywatnym repozytorium, a wydane programy zawierają wyłącznie biblioteki na licencjach MIT. Oprogramowanie jest udostępniane bez jakiejkolwiek gwarancji; za instalację, do której je podłączasz, odpowiadasz Ty.