Moduł LB-489 zapewnia obsługę protokołu MODBUS/TCP, zgodnie ze specyfikacją Modbus Organization. Używany jest domyślnie przeznaczony dla tego protokołu port 502. Akceptowane jest jednocześnie tylko jedno połączenie TCP, wszystkie kolejne próby połączenia są odrzucane. Dodatkowo, jako rozszerzenie, obsługiwana jest również komunikacja za pomocą protokołu UDP - protokół jest identyczny jak dla TCP, również używany jest port 502.
Zaimplementowane są następujące funkcje:
4 - Read Input Registers,
43/14 - Read Device Identification
Poniższa tabela przedstawia dostępne rejestry typu INPUT (odczyt funkcją 04 – Read Input Registers).
Wszystkie wartości są w kolejności bajtów starszy-młodszy (big-endian), high byte / low byte, high word / low word.
adres protokołowy | numer rejestru | typ | wartość |
---|---|---|---|
0 | 30001 | 16-bit unsigned integer, high byte / low byte | Typ urządzenia (stała wartość 489). |
1 | 30002 | 16-bit unsigned integer | Numer seryjny urządzenia. |
2..3 | 30003..4 | 32-bit unsigned integer | Wersja bootloader'a: bity 24..31: numer wersji główny, bity 16..23: numer wersji poboczny, bity 8..15: numer rewizji, bity 0..7: numer beta. |
4..5 | 30005..6 | 32-bit unsigned integer | Data wydania bootloader'a: bity 16..31: rok, bity 8..15: miesiąc, bity 0..7: dzień. |
6..7 | 30007..8 | 32-bit unsigned integer | Wersja firmware: bity 24..31: numer wersji główny, bity 16..23: numer wersji poboczny, bity 8..15: numer rewizji, bity 0..7: numer beta. |
8..9 | 30009..10 | 32-bit unsigned integer | Data wydania firmware: bity 16..31: rok, bity 8..15: miesiąc, bity 0..7: dzień. |
10 | 30011 | 16-bit unsigned integer | Numer wersji protokołu komunikacyjnego. |
11 | 30012 | 16-bit unsigned integer | Zarezerwowane. |
12..15 | 30013..16 | 16-bit unsigned integer | Bezpośredni wynik pomiaru z przetwornika A/C (przeznaczenie serwisowe). |
16..19 | 30017..20 | 16-bit unsigned integer |
Tryb pracy wejścia 1..4:
|
20..23 | 30021..24 | 16-bit unsigned integer | Typ czujnika S300 na wejściu 1..4; 0 gdy wejście pracuje w innym trybie niż S300 albo brak jest dołączonego czujnika na wejściu |
24..27 | 30025..28 | 16-bit unsigned integer | Numer seryjny czujnika S300 na wejściu 1..4; 0 gdy wejście pracuje w innym trybie niż S300 albo brak jest dołączonego czujnika na wejściu |
64..79 | 30065..80 | 32-bit integer | Wartość numeryczna w postaci stałoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na wejściu nr 1 i dla danej kolejnej zmiennej 1..8. Jeżeli wejście jest nieaktywne lub dana zmienna nie istnieje, to zwracana jest wartość specjalna 1000000000. Jeżeli wykryta została sytuacja awaryjna (np. zwarcie czujnika), to zwracana jest wartość specjalna -1000000000. Ze względu na 2 słowa zajmowane przez każdą wartość int32_t, adresy poszczególnych zmiennych rosną kolejno o 2. |
80..95 | 30081..96 | 16-bit integer | Wyniki pomiaru 1..8 dla wejścia 2, format - patrz opis powyżej. |
96..111 | 30097..112 | 16-bit integer | Wyniki pomiaru 1..8 dla wejścia 3, format - patrz opis powyżej. |
112..127 | 30113..138 | 16-bit integer | Wyniki pomiaru 1..8 dla wejścia 4, format - patrz opis powyżej. |
128..143 | 30129..144 | 32-bit float | Wartość numeryczna w postaci zmiennoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na wejściu nr 1 i dla danej kolejnej zmiennej 1..8. Jeżeli wejście jest nieaktywne, dana zmienna nie istnieje lub wykryta została sytuacja awaryjna (np. zwarcie czujnika) to zwracana jest wartość specjalna NaN. Ze względu na 2 słowa zajmowane przez każdą wartość float, adresy poszczególnych zmiennych rosną kolejno o 2. |
144..159 | 30145..160 | 32-bit float | Wyniki pomiaru 1..8 dla wejścia 2, format - patrz opis powyżej. |
160..175 | 30161..176 | 32-bit float | Wyniki pomiaru 1..8 dla wejścia 3, format - patrz opis powyżej. |
176..191 | 30177..192 | 32-bit float | Wyniki pomiaru 1..8 dla wejścia 4, format - patrz opis powyżej. |