Spis treści
Moduł 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 .
| 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 |
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ść ). |
| 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ń. |
| Informacje o wejściach IN1-IN | ||
| 20–27 | × 16-bit unsigned integer |
Tryb pracy wejścia IN1-IN |
| 28–35 | × 16-bit unsigned integer | Typ czujnika S300 na wejściu IN1-IN; 0 gdy wejście pracuje w innym trybie niż S300 albo brak jest dołączonego czujnika na wejściu |
| 36–43 | × 16-bit unsigned integer | Numer seryjny czujnika S300 na wejściu IN1-IN; 0 gdy wejście pracuje w innym trybie niż S300 albo brak jest dołączonego czujnika na wejściu |
| 44–51 | × 16-bit unsigned integer | Ilość zmiennych zdefiniowanych dla danego wejścia IN1-IN. |
| Informacje o modułach PORT1-PORT | ||
| 52–54 | × 16-bit unsigned integer | Tryb pracy (typ) modułu PORT1-PORT. |
| 55–57 | × 16-bit unsigned integer | Status modułu PORT1-PORT. |
| 58–60 | × 16-bit unsigned integer | Numer seryjny modułu PORT1-PORT, jeśli numer jest dostępny. |
| 61–63 | × 16-bit unsigned integer | Ilość zmiennych zdefiniowanych dla danego modułu PORT1-PORT. |
| Wyniki pomiarów z wejść IN1-IN | ||
| 64–191 | × 8× 32-bit integer |
Wartość numeryczna w postaci stałoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na wejściu IN1-IN; 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. |
| 192–319 | × 8× 32-bit float |
Wartość numeryczna w postaci zmiennoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na wejściu IN1-IN 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. |
| 320–383 | × 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-PORT 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. | ||
| 384-431 | × 8× 32-bit integer |
Wartość numeryczna w postaci stałoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na porcie PORT1-PORT; 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. |
| 432-479 | × 8× 32-bit float |
Wartość numeryczna w postaci zmiennoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na wejściu IN1-IN 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. |
| 480-503 | × 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) | ||
| 504-511 536-543 568-575 | × 8× 16-bit unsigned integer |
Tryb pracy wejścia. |
| 512-519 544-551 576-583 | × 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. |
| 520-527 552-559 584-591 | × 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. |
| 528-535 560-567 592-599 | × 8× 16-bit unsigned integer |
Ilość zmiennych zdefiniowanych dla danego wejścia. |
| Wyniki pomiarów z wejść modułów wielowejściowych | ||
| 600-983 | × 8× 8× 32-bit integer |
Wartość numeryczna w postaci stałoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na porcie PORT1-PORT; 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. |
| 984-1367 | × 8× 8× 32-bit float |
Wartość numeryczna w postaci zmiennoprzecinkowej określająca wynik pomiaru dla wielkości mierzonej na wejściu IN1-IN 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. |
| 1368-1559 | × 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. |