Spis treści
Moduł LB-490 zapewnia obsługę protokołu MODBUS/TCP, zgodnie ze specyfikacją Modbus Organization.
TCP: Używany jest domyślnie przeznaczony dla tego protokołu port 502. W wersjach firmware < 3.5.2 akceptowane jest jednocześnie tylko jedno połączenie TCP, wszystkie kolejne próby połączenia są odrzucane. Począwszy od wersji 3.5.2 akceptowane są dwa połączenia TCP, na wypadek gdyby były problemy z pierwszym połączeniem (np. długi czas zamykania, z powodu niedopilnowania przez master'a prawidłowej procedury zamknięcia połączenia TCP - np. gdy program zostanie zamknięty "na siłę" lub się po prostu błędnie zachowuje. Pomimo obsługi dwóch połączeń, nadal jest wskazane używanie tylko jednego master'a.
UDP: Używany jest port 502, analogicznie jak dla TCP. Ilość master'ów odpytujących moduł o dane przy użyciu protokołu UDP jest nieograniczona i jest to wskazana metoda komunikacji, jeśli jest dostępna w używanym oprogramowaniu. Nie ma tu problemu z niedomkniętymi połączeniami TCP w przypadku problemów komunikacyjnych i z opóźnieniem otwierania nowego połączenia.
Zaimplementowane są następujące funkcje:
1 - Read Coils,
3 - Read Holding Registers,
4 - Read Input Registers,
5 - Write Single Coil,
6 - Write Single Register,
15 - Write Multiple Coils,
16 - Write Multiple Registers,
43/14 - Read Device Identification
Funkcje są dostępne począwszy od wersji firmware 5.1.
Sterowanie wyjściami binarnymi jest możliwe za pomocą następujących funkcji: 1 - Read Coils, 5 - Write Single Coil, 15 - Write Multiple Coils.
Aby była możliwość zdalnego sterowania wyjściem binarnym, musi zostać ustawiony w module odpowiedni tryb pracy tego wyjścia - sterowanie MODBUS/WWW lub suma wszystkich sygnałów.
W przypadku potencjalnej nieciągłości przestrzeni adresowej (np. zamontowany PORT1 i PORT3, brak PORT2) bity dla PORT2 są możliwe do zapisania i odczytania, żeby nie wymuszać dzielenia komend na nieciągłe zakresy adresów. Zapis stanu dla nieistniejących wyjść jest ignorowany, odczyt daje wynik = 0.
Poniższa tabela przedstawia dostępne do zdalnego sterowania wyjścia binarne w module LB-490.
| adres | funkcja |
|---|---|
| 0 | OUTPUT 1 (na płytce głównej) |
| 1 | OUTPUT 2 (na płytce głównej) |
| 2 | PORT 1 RELAY 1 |
| 3 | PORT 1 RELAY 2 |
| 4 | PORT 2 RELAY 1 |
| 5 | PORT 2 RELAY 2 |
| 6 | PORT 3 RELAY 1 |
| 7 | PORT 3 RELAY 2 |
| 8 | PORT 4 RELAY 1 |
| 9 | PORT 4 RELAY 2 |
| 10 | PORT 5 RELAY 1 |
| 11 | PORT 5 RELAY 2 |
| 12 | PORT 6 RELAY 1 |
| 13 | PORT 6 RELAY 2 |
Poniższa tabela przedstawia dostępne rejestry typu INPUT (odczyt funkcją 04 – Read Input Registers).
Podane adresy to adresy protokołowe. Numer rejestru MODBUS typu INPUT oblicza się dodając do adresu protokołowego wartość 30001.
Wszystkie wartości są w kolejności bajtów big-endian (starszy-młodszy), high byte / low byte, high word / low word.
UWAGA: dotyczy wersji firmware począwszy od 4.6, dla LB-480 i LB-490. Starsze wersje firmware w LB-480 udostęniają tylko następujący podzbiór rejestrów: 0-10, 20-27, 28-35, 36-43, 64-191, 192-319. Starsze wersje firmware w LB-490 udostępniają taki sam podzbiór rejestrów jak LB-480, w związku z czym możliwy jest odczyt danych tylko dla wejść 1-8.
Tryby pracy wejść, typy czujników, zmiennych, wartości i jednostki zmiennych są opisane w rozdziale Tryby pracy, typy czujników, wyniki pomiarów i zmienne.
| adres | typ | wartość |
|---|---|---|
| Informacje ogólne o urządzeniu | ||
| 0 | 16-bit unsigned integer | Typ urządzenia (stała wartość 490). |
| 1 | 16-bit unsigned integer | Numer seryjny urządzenia. |
| 2–3 | 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 | 32-bit unsigned integer | Data wydania bootloader'a: bity 16–31: rok, bity 8–15: miesiąc, bity 0–7: dzień. |
| 6–7 | 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 | 32-bit unsigned integer | Data wydania firmware: bity 16–31: rok, bity 8–15: miesiąc, bity 0–7: dzień. |
| 10 | 16-bit unsigned integer | Numer wersji protokołu komunikacyjnego. |
| 11 | 16-bit unsigned integer | Numer najniższej kombatybilnej wersji protokołu komunikacyjnego. |
| 12 | 16-bit unsigned integer | Ilość wejść na płytce głównej. |
| 13 | 16-bit unsigned integer | Ilość portów do podłączenia modułów rozszerzeń. |
| 14–19 | Nieużywane. | |
| Informacje o wejściach IN1-IN16 | ||
| 20–35 | 16× 16-bit unsigned integer |
Tryb pracy wejścia IN1-IN16 |
| 36–51 | 16× 16-bit unsigned integer | Typ czujnika S300 na wejściu IN1-IN16; 0 gdy wejście pracuje w innym trybie niż S300 albo brak jest dołączonego czujnika na wejściu |
| 52–67 | 16× 16-bit unsigned integer | Numer seryjny czujnika S300 na wejściu IN1-IN16; 0 gdy wejście pracuje w innym trybie niż S300 albo brak jest dołączonego czujnika na wejściu |
| 68–83 | 16× 16-bit unsigned integer | Ilość zmiennych zdefiniowanych dla danego wejścia IN1-IN16. |
| Informacje o modułach PORT1-PORT6 | ||
| 84–89 | 6× 16-bit unsigned integer | Tryb pracy (typ) modułu PORT1-PORT6. |
| 90–95 | 6× 16-bit unsigned integer | Status modułu PORT1-PORT6. |
| 96–101 | 6× 16-bit unsigned integer | Numer seryjny modułu PORT1-PORT6, jeśli numer jest dostępny. |
| 102–107 | 6× 16-bit unsigned integer | Ilość zmiennych zdefiniowanych dla danego modułu PORT1-PORT6. |
| Wyniki pomiarów z wejść IN1-IN16 | ||
| 108–363 | 16× 8× 32-bit integer |
Wartość numeryczna w postaci stałoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na wejściu IN1-IN16; 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. |
| 364–619 | 16× 8× 32-bit float |
Wartość numeryczna w postaci zmiennoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na wejściu IN1-IN16 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. |
| 620–747 | 16× 8× 16-bit unsigned integer |
Ilość cyfr po przecinku w wyniku pomiaru. Ta wartość ma znaczenie dla wyników w postaci stało- i zmiennoprzecinkowej: dla wartości stałoprzecinkowej oznacza w którym miejscu należy postawić przecinek, dla wartości zmiennoprzecinkowej oznacza precyzję i ilość znaczących cyfr po przecinku w wyniku. Jeżeli wejście jest nieaktywne, dana zmienna nie istnieje lub wykryta została sytuacja awaryjna (np. zwarcie czujnika) to zwracana jest wartość 0. |
|
Wyniki pomiarów z modułów PORT1-PORT6 UWAGA: nie dotyczy wielowejściowych modułów LB-499-AIN, LB-499-GIN. Wyniki z czujników podłączonych do wejść tych modułów są w sekcji danych z wejść modułów wielowejściowych. | ||
| 748-843 | 6× 8× 32-bit integer |
Wartość numeryczna w postaci stałoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na porcie PORT1-PORT6; 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. |
| 844–939 | 6× 8× 32-bit float |
Wartość numeryczna w postaci zmiennoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na wejściu IN1-IN16 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. |
| 940–987 | 6× 8× 16-bit unsigned integer |
Ilość cyfr po przecinku w wyniku pomiaru. Ta wartość ma znaczenie dla wyników w postaci stało- i zmiennoprzecinkowej: dla wartości stałoprzecinkowej oznacza w którym miejscu należy postawić przecinek, dla wartości zmiennoprzecinkowej oznacza precyzję i ilość znaczących cyfr po przecinku w wyniku. Jeżeli wejście jest nieaktywne, dana zmienna nie istnieje lub wykryta została sytuacja awaryjna (np. zwarcie czujnika) to zwracana jest wartość 0. |
| Informacje o wejściach modułów wielowejściowych (LB-499-AIN, LB-499-GIN) | ||
| 988-995 1020-1027 1052-1059 1084-1091 1116-1123 1148-1155 | 6× 8× 16-bit unsigned integer |
Tryb pracy wejścia. |
| 996-1003 1028-1035 1060-1067 1092-1099 1124-1131 1156-1163 | 6× 8× 16-bit unsigned integer |
Typ czujnika S300 na wejściu modułu lub 0 gdy wejście pracuje w innym trybie niż S300 albo brak jest dołączonego czujnika na wejściu. |
| 1004-1011 1036-1043 1068-1075 1100-1107 1132-1139 1164-1171 | 6× 8× 16-bit unsigned integer |
Numer seryjny czujnika S300 na wejściu lub 0 gdy wejście pracuje w innym trybie niż S300 albo brak jest dołączonego czujnika na wejściu. |
| 1012-1019 1044-1051 1076-1083 1108-1115 1140-1147 1172-1179 | 6× 8× 16-bit unsigned integer |
Ilość zmiennych zdefiniowanych dla danego wejścia. |
| Wyniki pomiarów z wejść modułów wielowejściowych | ||
| 1180-1947 | 6× 8× 8× 32-bit integer |
Wartość numeryczna w postaci stałoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na porcie PORT1-PORT6; 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. |
| 1948-2715 | 6× 8× 8× 32-bit float |
Wartość numeryczna w postaci zmiennoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na wejściu IN1-IN16 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. |
| 2716-3099 | 6× 8× 8× 16-bit unsigned integer |
Ilość cyfr po przecinku w wyniku pomiaru. Ta wartość ma znaczenie dla wyników w postaci stało- i zmiennoprzecinkowej: dla wartości stałoprzecinkowej oznacza w którym miejscu należy postawić przecinek, dla wartości zmiennoprzecinkowej oznacza precyzję i ilość znaczących cyfr po przecinku w wyniku. Jeżeli wejście jest nieaktywne, dana zmienna nie istnieje lub wykryta została sytuacja awaryjna (np. zwarcie czujnika) to zwracana jest wartość 0. |