Wprowadzenie do Modbus

Modbus to prosty protokół komunikacyjny, często używany do integracji urządzeń HVAC. Wykorzystuje komunikację master-slave, gdzie na wspólnej magistrali może być podłączonych kilka urządzeń, przy czym każde musi mieć unikalne Slave ID, a urządzenie master zawsze odpytuje poszczególne urządzenia slave, które następnie odpowiadają.

Topologia Master - Slave

W większości przypadków TapHome jest używany w trybie, w którym jednostka sterująca Core jest Modbus Master, a podłączone urządzenia są Modbus Slave. To konfiguruje się w sekcji Sprzęt → Modbus RTU lub Modbus TCP. Jednak możliwe jest także użycie odwrotnego kierunku, gdy TapHome Core udostępnia informacje o swoich urządzeniach innemu systemowi nadrzędnemu. Jest to zdefiniowane w sekcji Uwidocznij urządzenia → Modbus RTU albo Modbus TCP.

Warstwy fizyczne

Modbus może komunikować się poprzez różne warstwy fizyczne:

  • przez linię szeregową, typowo RS485 – nazywa się to Modbus RTU
  • przez sieć LAN za pomocą protokołu TCP/IP
  • przez sieć LAN za pomocą protokołu UDP – obecnie system TapHome go nie obsługuje

Rejestry Modbus

Modbus definiuje 4 typy rejestrów:

RejestrKodDostępRozmiarKody funkcji
Holding RegistersHOdczyt/zapis16-bitowyOdczyt: 03, Zapis wielu: 16 (0x10)
- Write Single Holding (starsza wartość)SHOdczyt/zapis16-bitowyZapis pojedynczego: 06
Cewka (wyjścia dyskretne)COdczyt/zapis1-bitOdczyt: 01, Zapis wielu: 15 (0xF)
- Write Single Coil (starsza wartość)SCOdczyt/zapis1-bitZapis pojedynczego: 05
Wejścia dyskretneDTylko odczyt1-bitOdczyt: 02
Analog Input RegistersATylko odczyt16-bitowyOdczyt: 04

SH i SC to starsze wartości, które skrypty nadal akceptują; nowe skrypty używają H i C — Typy rejestrów.

Numer rejestru (adres rejestru) ma 16 bitów, co oznacza, że może mieć wartość od 0 do 65535. Adres rejestru można podać dziesiętnie (np. 20) lub szesnastkowo (np. 0x14). Na rejestrach można wykonywać operacje:

  • odczyt wielu rejestrów
  • zapis jednego rejestru
  • zapis wielu rejestrów

Niektóre implementacje Modbus dodają dodatkowe polecenia: raport Slave ID, maskowanie bitowe, zapis i odczyt naraz itp., ale te nie są wspierane przez TapHome. {.is-warning}

Slave ID, Unit ID i adresowanie rejestrów. Każde urządzenie Modbus na magistrali ma unikalne Slave ID (dla Modbus TCP bywa ono nazywane Unit ID). Aby odczytać lub zapisać wartość, potrzebujesz trzech informacji z tabeli Modbus urządzenia: typu rejestru (H = Holding, C = Coil, D = Discrete Input, A = Analog Input — kod funkcji wynika z typu), adresu rejestru (od 0 do 65535, podawanego dziesiętnie 20 lub szesnastkowo 0x14) oraz typu danych (Int16, UInt16, Float itp.). TapHome używa adresu rejestru dokładnie tak, jak zapisano go w dokumentacji urządzenia — jeśli urządzenie dokumentuje numery rejestrów liczone od 1, odejmij 1, aby uzyskać adres liczony od 0 (0-based), którego oczekuje TapHome. Slave ID, typ rejestru i adres rejestru razem jednoznacznie identyfikują dowolną wartość na urządzeniu Modbus.

Informacje o tym, co jest zapisane w którym rejestrze i w jakim formacie, są częścią dokumentacji urządzenia dostarczonej przez dostawcę lub producenta urządzenia. Przykład dokumentacji Modbus od dostawcy urządzenia Modbus: modbus_table.png

Typ rejestru C (Cewka), indeks 58, ponieważ ma tylko 2 wartości (otwarte / zamknięte) i oprócz odczytu umożliwia także zapis, odpowiadający typowi urządzenia TapHome – wyjściu cyfrowemu.

Skrócone wskazówki integracji urządzenia Modbus z TapHome

  1. Podłącz urządzenie do odpowiedniej magistrali (dla Modbus RTU i ASCII) lub do sieci LAN (dla Modbus TCP). Dla Modbus TCP upewnij się, że jest w tej samej sieci co kontroler TapHome Core, np. za pomocą Fing (iOS, Android) lub IP Scanner (Windows).
  2. W TapHome → Sprzęt dodaj nowy interfejs Modbus RTU lub Modbus TCP i ustaw parametry komunikacyjne zgodnie z dokumentacją. Dla Modbus RTU są to Baud rate, Stop bits, Parity, Data bits, dla Modbus TCP jest to adres IP.
  3. W dokumentacji urządzenia Modbus sprawdź, jakiego Slave ID używa. W przypadku Modbus TCP bywa on oznaczany jako Unit ID. Jeśli chcesz użyć kilku urządzeń na jednej liniowej magistrali z Modbus RTU, musisz zmienić Slave ID każdego z nich tak, aby był unikalny dla danej linii.
  4. Test komunikacji – za pomocą narzędzia Operacje ręczne spróbuj odczytać niektóre informacje zgodnie z dokumentacją (tabela Modbus) dla danego urządzenia. Jeśli wszystko działa, powinieneś zobaczyć odczytaną wartość.
  5. Jeśli test komunikacji zakończył się powodzeniem, utwórz Moduł, który reprezentuje urządzenie Modbus.
  6. Wybierz, które informacje z dokumentacji Modbus chcesz prezentować w systemie TapHome i utwórz odpowiadające im urządzenia. Zacznij od odczytu wartości (Skrypt odczytu), a w przypadku aktorów kontynuuj zapisem (Skrypt zapisu).
  7. Jeśli podstawowe funkcje urządzenia działają, dodaj definicje Error, Warning lub Information do skryptów.
  8. W razie potrzeby możesz także zdefiniować Atrybuty serwisowe i Działania serwisowe dla urządzeń i modułów TapHome.
  9. Jeśli wszystko jest ustawione i poprawnie się komunikuje, wyeksportuj Moduł do pliku XML, aby móc go użyć następnym razem. Możesz także przyczynić się do społeczności na github.com/taphome-official/modbus_templates.

Hierarchia

Ta dokumentacja jest przeznaczona dla scenariusza, w którym jednostka sterująca TapHome Core jest Modbus Master, a fizyczne urządzenia dodane do sekcji Sprzęt → Modbus RTU / TCP są urządzeniami Modbus Slave. TapHome organizuje komunikację Modbus na trzech poziomach: Interfejs → Moduł → Urządzenie. Slave ID ustawia się na poziomie Modułu, natomiast typ rejestru i adres rejestru używane do odczytu lub zapisu każdej wartości są definiowane w skrypcie poszczególnego Urządzenia.

Interfejs

Sprzęt → Modbus RTU: urządzenia są podłączone do określonej magistrali, z podstawowymi parametrami transmisji RS485, takimi jak baudrate, parity, stop bits, oraz informacją, czy dane są ASCII czy binarne. Do tej samej magistrali mogą być podłączone tylko urządzenia o identycznych ustawieniach komunikacyjnych. Poprawna komunikacja może działać tylko wtedy, gdy kable A i B są prawidłowo podłączone. Sprzęt → Modbus TCP: urządzenia są podłączone do tej samej sieci LAN co TapHome Core. Zdefiniowany jest jeden port TCP, wspólny dla wszystkich urządzeń podłączonych do tego interfejsu.

Moduł

Interfejs może zawierać jeden lub więcej modułów, które w większości przypadków obejmują komunikację z całym fizycznym urządzeniem. Z punktu widzenia konfiguracji moduł definiuje unikalne Slave ID podłączonego urządzenia dla Modbus RTU oraz adres IP dla Modbus TCP.

Urządzenie

Reprezentuje określony element sterujący lub czujnik w systemie TapHome. Zawsze musi być częścią jednego nadrzędnego modułu.

5 klimatyzatorów podłączonych do jednej magistrali używa wspólnego interfejsu Modbus RTU, który określa port magistrali, prędkość transmisji i inne parametry komunikacyjne. Interfejs ten zawiera 5 modułów, z których każdy reprezentuje jedną jednostkę klimatyzacyjną z unikalnym Slave ID. Każdy moduł ma pod sobą zdefiniowane urządzenia, takie jak termostat, tryb chłodzenia/grzania, moc wentylatora lub nachylenie lameli. Pojedyncze urządzenia mają zdefiniowane polecenia do odczytu i/lub zapisu wartości Modbus.

Obsługiwane urządzenia:

  • Wyjście cyfrowe
  • Wyjście analogowe
  • Termostat
  • Przełącznik wielowartościowy
  • Czujnik temperatury
  • Licznik elektryczny
  • Kontaktron
  • Przycisk
  • Zmienna

Skrypty do odczytu i zapisu wartości Modbus

Urządzenia TapHome komunikują się z fizycznymi urządzeniami Modbus za pomocą skryptów.

Do komunikacji z urządzeniami Modbus wyznaczone są sekcje skryptów — co każda z nich robi i kiedy się uruchamia, opisuje strona Skrypty Modbus i prefetch:

  • Skrypt inicjalizacyjny: uruchamia się, gdy urządzenie się uruchomi (np. po ponownym uruchomieniu jednostki sterującej)
  • Skrypt odczytu: ustawienie wartości zmiennych globalnych lub odczytanie stanów błędów
  • Skrypt odczytu wartości: skrypt odczytujący konkretną wartość (wielkość fizyczną) z urządzenia Modbus (np. zadaną temperaturę na termostacie lub odczytaną temperaturę na termostacie)
  • Skrypt zapisu wartości: zapisuje wartość do urządzenia Modbus

Funkcje skryptowe dla Modbus — MODBUSR, MODBUSW, MODBUSWNE i funkcje blokowe MODBUSRBLOCK, MODBUSWBLOCK, MODBUSWBLOCKNE — opisuje wraz z parametrami i przykładami strona Funkcje Modbus, a typy danych (Int16, Float, warianty kolejności bajtów, typy 64-bitowe, String) strona Typy danych Modbus. Pojedyncze bity rejestru i wartości BCD (GETBIT, GETBITS, TOBCD, FROMBCD) są na stronie Operacje bitowe.

MODBUSR(H, 20, Int16) / 100

Odczytuje holding register o adresie 20 jako 16-bitową liczbę całkowitą ze znakiem i dzieli ją przez 100 (przesuwa przecinek dziesiętny o 2 miejsca w lewo). Adres rejestru można podać także szesnastkowo, np. 0x14.

Interwał aktualizacji i zapytań

Każde urządzenie w interfejsie Modbus ma zdefiniowany atrybut Poll Interval. Określa on, jak często jednostka sterująca TapHome powinna odpyt(yw)ać nowe wartości z urządzenia Modbus. Komunikacja Modbus jest typu Master-Slave, dlatego informacje z urządzenia Modbus mogą docierać do TapHome tylko wtedy, gdy TapHome ich zażąda. Im dłuższy jest Poll Interval, tym później wartość w TapHome zostanie zaktualizowana. Zbyt krótki Poll Interval może oznaczać, że TapHome będzie niepotrzebnie obciążał magistralę, pobierając zbędne wartości, i może nie mieć czasu obsłużyć wszystkich urządzeń w danym okresie. Na przykład przy Modbus RTU i niższych prędkościach Baud Rate, np. 9600, jedno żądanie/odpowiedź może trwać kilkadziesiąt ms. Dla termometrów zazwyczaj wystarcza interwał 15000 ms (15 s), dla przycisków – przeciwnie, jak najkrótszy, np. 50 ms. Niektóre urządzenia Modbus oczekują, że master będzie okresowo zapisywał aktualną wartość do rejestru. Do tego służy atrybut Periodic Write.

Definicja błędów ze skryptów

W skryptach odczytu urządzenia lub modułu Modbus ADDERROR, ADDWARNING i ADDINFO zgłaszają na urządzeniu błąd, ostrzeżenie lub informację. TapHome wyświetla je tak samo jak swoje wewnętrzne komunikaty, opcjonalnie z kodem liczbowym na potrzeby serwisu urządzenia — ADDERROR, ADDWARNING, ADDINFO. Przykład komunikatów na urządzeniu:

modbus_error.png

Atrybuty serwisowe i akcje

Oprócz wartości (lub kilku wartości, jak na przykład termostat) z podłączonego urządzenia Modbus moduły i urządzenia TapHome mogą odczytywać także atrybuty serwisowe lub wykonywać akcje serwisowe. Nie są one dostępne na dashboardzie dla zwykłych użytkowników systemu, ale służą jedynie do prezentowania bardziej szczegółowych informacji o urządzeniu Modbus, bez przeciążania systemu dużą liczbą zmiennych i akcji.

Atrybuty serwisowe wyświetlają się w ustawieniach serwisowych modułu lub urządzenia TapHome. Zazwyczaj służą do wyświetlania informacji o urządzeniu, takich jak model, numer seryjny, wersja firmware, wersja sprzętu, czas od ostatniego restartu itp. Są to użyteczne informacje z perspektywy serwisu urządzenia Modbus, ale nie ma sensu tworzyć dla nich osobnych urządzeń TapHome.

Działania serwisowe wyświetlają się w ustawieniach serwisowych modułu lub urządzenia TapHome, na samym dole jako przyciski. Po naciśnięciu wykonają zaprogramowaną akcję Modbus, która zapisze żądane informacje do rejestru. Przykład użycia: ustawienie lub zmiana Slave ID, oznaczenie wymiany filtra, ustawienie licznika na żądaną wartość, resetowanie urządzenia itp.

Skrypty i pomocnicze zmienne na module

Zmienne globalne modułu

Zmienne zdefiniowane na module są używane we wszystkich skryptach modułu i są udostępniane wszystkim urządzeniom przypisanym do tego modułu.

Init Script

Opcjonalny. Uruchamia się przy starcie modułu. Jeśli jest wypełniony i jeszcze się nie zakończył, nie będą dozwolone żadne inne skrypty.

  • 💬 Wartość zwrotna: ignorowana
  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu
  • ⚠️ Wsparcie błędów: nie

Read Script

Uruchamia się przy każdym zapytaniu modułu.

  • 💬 Wartość zwrotna: ignorowana
  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu
  • ⚠️ Wsparcie błędów: tak

Skrypt zapisu

Uruchamiany:

  • przy zmianie wartości zmiennej urządzenia
  • jeśli włączony jest atrybut „Periodic Write", uruchomi się automatycznie
  • 💬 Wartość zwrotna: ignorowana
  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu, wartości urządzeń przypisanych do danego modułu (uwaga, nie są to zmienne globalne urządzenia – skrypt modułu nie ma do nich dostępu). Służy to w przypadkach, gdy trzeba zapisać wartości wielu urządzeń danego modułu do jednego rejestru.
  • ⚠️ Wsparcie błędów: nie

Atrybuty serwisowe (moduł)

Każdy moduł może mieć nieograniczoną liczbę atrybutów serwisowych. Skrypty są wykonywane za każdym razem, gdy użytkownik (z uprawnieniami serwisowymi) otworzy ekran ustawień serwisowych urządzenia w aplikacji. Są wykonywane po odczycie z modułu Modbus.

  • 💬 Wartość zwrotna: wyświetla się jako wartość danego atrybutu
  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu
  • ⚠️ Wsparcie błędów: nie

Działania serwisowe (moduł)

Każdy moduł może mieć nieograniczoną liczbę akcji serwisowych. Skrypty są wykonywane, gdy użytkownik (z uprawnieniami serwisowymi) otworzy aplikację na ekranie ustawień serwisowych urządzenia i naciśnie jeden z zdefiniowanych przycisków o nazwie danej akcji serwisowej. Każda akcja serwisowa jest zdefiniowana swoją nazwą, parametrami i skryptem wykonywania.

  • 💬 Wartość zwrotna: ignorowana
  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu, parametry wprowadzone przez użytkownika
  • ⚠️ Wsparcie błędów: nie

Skrypty i pomocnicze zmienne na urządzeniu

Zmienne globalne urządzenia

Zmienne zdefiniowane na urządzeniu są używane we wszystkich skryptach zdefiniowanych na tym urządzeniu i nie są używane nigdzie poza nim. Urządzenie może przechowywać w nich swój stan, dzielić się nim między swoimi skryptami itd.

Init Script urządzenia

Opcjonalny. Uruchamia się przy starcie urządzenia. Jeśli jest wypełniony i jeszcze się nie zakończył, nie będą dozwolone żadne inne skrypty.

  • 💬 Wartość zwrotna: ignorowana
  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu, zmienne globalne urządzenia
  • ⚠️ Wsparcie błędów: nie

Read Script urządzenia

Uruchamia się przy każdym zapytaniu urządzenia, przed „Read Value Scripts".

  • 💬 Wartość zwrotna: ignorowana
  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu, zmienne globalne urządzenia
  • ⚠️ Wsparcie błędów: tak. Błędy dotyczą całego urządzenia (np. całego termostatu, a nie tylko jego wartości zadanej lub bieżącej temperatury).

Write Value Script

Uruchamiany:

  • przy każdej zmianie wartości

  • jeśli włączony jest atrybut „Periodic Write", również przy każdym zapytaniu

  • 💬 Wartość zwrotna: ignorowana

  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu, zmienne globalne urządzenia, konkretna wartość wielkości, która ma zostać zapisana przez Modbus do urządzenia.

  • ⚠️ Wsparcie błędów: nie

Read Value Script

Uruchamia się przy każdym zapytaniu urządzenia.

  • 💬 Wartość zwrotna: jest automatycznie przypisywana jako wartość danego urządzenia
  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu, zmienne globalne urządzenia, ostatnio odczytana wartość zmiennej, rejestr do odczytania (przydatne np. gdy urządzenie sygnalizuje, że jeszcze nie zostało odczytane itp.)
  • ⚠️ Wsparcie błędów: tak. Komunikaty błędów powinny odnosić się do danej wielkości na urządzeniu. Na przykład, jeśli polecenie ADDERROR(1, “Sensor not connected”) znajduje się w skrypcie Read Temperature urządzenia Thermostat, użytkownik zobaczy w aplikacji komunikat błędu na termostacie z trzema informacjami: Temperatura, kod 1, tekst „Sensor not connected".

Atrybuty serwisowe (urządzenie)

Każde urządzenie może mieć nieograniczoną liczbę atrybutów serwisowych. Skrypty są wykonywane za każdym razem, gdy użytkownik (z uprawnieniami serwisowymi) otworzy ekran ustawień serwisowych urządzenia w aplikacji. Są wykonywane po odczycie z urządzenia Modbus.

  • 💬 Wartość zwrotna: wyświetla się jako wartość danego atrybutu
  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu, zmienne globalne urządzenia
  • ⚠️ Wsparcie błędów: nie

Działania serwisowe (urządzenie)

Każde urządzenie może mieć nieograniczoną liczbę serwisowych akcji. Skrypty są wykonywane, gdy użytkownik (z uprawnieniami serwisowymi) otworzy aplikację na ekranie ustawień serwisowych urządzenia i naciśnie jeden z zdefiniowanych przycisków o nazwie danej akcji serwisowej. Każda akcja serwisowa jest zdefiniowana swoją nazwą, parametrami i skryptem wykonywania.

  • 💬 Wartość zwrotna: ignorowana
  • ⚙️ Dostęp do zmiennych: zmienne globalne modułu, zmienne globalne urządzenia, parametry wprowadzone przez użytkownika
  • ⚠️ Wsparcie błędów: nie

Dodaj z szablonu

Umożliwia konfigurację komunikacji Modbus ze sterowanym urządzeniem bez jakiejkolwiek wiedzy o protokole Modbus lub o tym, jak go skonfigurować w TapHome. Gotowe szablony znajdziesz:

  • bezpośrednio w aplikacji: Dodaj z szablonu → wybierz konkretne urządzenie → wypełnij podstawowe informacje i potwierdź. Wszystkie te szablony są zarządzane społecznościowo w projekcie git na https://github.com/taphome/modbus_templates i każdy może zaproponować nowe modyfikacje. To, co trafia do aplikacji, musi być zatwierdzone przez zespół TapHome.
  • we własnym pliku XML: Dodaj z szablonu → Dodaj z pliku. Możesz stworzyć własny plik XML, który definiuje cały szablon bezpośrednio na module Modbus, w menu kontekstowym (trzy kropki w prawym górnym rogu), akcją Zapisz jako szablon. Będziemy wdzięczni za pomoc w rozszerzaniu liczby obsługiwanych urządzeń i wniesienie swojego pliku XML do wspólnego projektu społecznościowego git.

Więcej informacji o konfiguracji komunikacji Modbus za pomocą szablonów

Operacje ręczne

Praktyczne narzędzie do szybkiej weryfikacji tabeli Modbus. Umożliwia:

  • odczytanie kolejnych X rejestrów od określonego rejestru i następnie dynamiczne przełączanie odczytywanych wartości na różne typy danych
  • zapis wartości do danego rejestru

Skanowanie Slave ID

Powszechną praktyką przy konfigurowaniu komunikacji z urządzeniem Modbus jest to, że fabryczne domyślne Slave ID różni się od 1 i niełatwo jest odszukać właściwy numer. Do tego służy to narzędzie. Może skanować podany zakres Slave ID, próbując odczytać z wybranego rejestru zawsze z aktualnie testowanym Slave ID.

Informacje o rejestrach

Znajduje się na dole modułu Modbus. Dla każdego używanego rejestru podaje informacje o:

  • nazwie urządzenia TapHome, które odczytuje z niego lub zapisuje do niego
  • dacie i godzinie ostatniego pomyślnego odczytu z rejestru
  • ostatniej wartości odczytanej z rejestru
  • dacie i godzinie ostatniego pomyślnego zapisu w rejestrze
  • ostatniej zapisanej wartości do rejestru

Prefetch

TapHome tworzy listę rejestrów do odczytu i zapisu z urządzeń Modbus w zależności od ustawionego Poll Interval. Prefetch to proces, dzięki któremu jednostka sterująca będzie wstępnie odczytywać do pamięci wartości, które będą potrzebne podczas aktualizacji. Celem jest zminimalizowanie liczby żądań i powrotnych transmisji. Prefetch jest kontrolowany przez 2 ustawienia:

  • Max prefetch register group size (umieszczone w ustawieniach serwisowych modułu): określa maksymalną liczbę rejestrów, które można odczytać lub zapisać jednym żądaniem komunikacji Modbus.
  • Prefetch mode (ustawiane dla każdego urządzenia):
    • No prefetch. Prefetch dla tego urządzenia nie będzie wykonywany. Oznacza to, że wartości będą odczytywane indywidualnie i dokładnie w momencie wykonywania skryptu. Przykład użycia: przy komunikacji z konwerterem DALI nie można odczytać wartości konkretnego światła bezpośrednio, trzeba o to poprosić, konwerter ją przygotuje i dopiero wtedy ją zwróci. Jakiekolwiek wcześniejsze odczytywanie jest w tym przypadku bezsensowne.
    • Isolated prefetch. Prefetch odczytuje naraz kilka rejestrów, ale tylko te, które są zdefiniowane w tym urządzeniu. Na przykład, gdy potrzebuję rejestrów 3 i 4 w urządzeniu termostatu, a rejestry 1, 2, 5, 6 są używane w innych urządzeniach, to żądanie rejestrów 3 i 4 zostanie wykonane osobno tylko dla tych dwóch rejestrów. Niektóre urządzenia Modbus tego wymagają.
    • Normal prefetch. Wszystkie żądane rejestry z urządzeń, które mają być odświeżone, będą odczytywane z minimalną liczbą żądań. W przypadku nieciągłej sekwencji rejestrów odczytane będą także te, które nie są używane, jeśli były wcześniej pomyślnie odczytane. Przykład: żądane są rejestry 99 i 101. Jeśli rejestr 100 był wcześniej pomyślnie odczytany, a Max prefetch register group size jest ustawiony na 3 lub więcej, odczytane zostaną 3 rejestry jednym żądaniem począwszy od rejestru 99. Jeśli rejestr 100 nie był nigdzie używany i nigdy nie był odczytany pomyślnie, istnieje ryzyko, że odczyt przez taki rejestr zwróci Modbus Exception, np. „Illegal data address" jako odpowiedź na całe żądanie.

Prefetch może być również modyfikowany bezpośrednio ze skryptu: jeśli podczas odczytu użyjemy rejestru SC lub SH (zamiast C lub H), to wartość odczytywana jest jeden rejestr po drugim podczas wykonywania skryptu i nie jest pobierana z pamięci podręcznej. Podobnie przy zapisie, jeśli użyjemy rejestru SC lub SH (zamiast C lub H), wartość zapisywana jest jeden rejestr po drugim i inną funkcją Modbus. Protokół Modbus obsługuje 4 funkcje zapisu: zapis wielu H, zapis wielu C, zapis jednego H lub jednego C naraz. Uwaga: nie wszystkie urządzenia obsługują wszystkie te funkcje. W ten sposób, jeśli zajdzie potrzeba, można łączyć odczyt i zapis „jeden po drugim".

Zaawansowane ustawienia

TCP Port (Modbus TCP)

W większości przypadków domyślną wartością jest 502, ale niektóre urządzenia mogą nasłuchiwać na innym porcie.

Limit czasu odczytu / zapisu

Czas, po którym TapHome zakończy oczekiwanie na odpowiedź i zgłosi błąd „Timeout". Oznacza to, że urządzenie nie odpowiedziało w danym przedziale.

  • Wolne urządzenia Modbus mogą wymagać dłuższych limitów czasu (1+ sekundy).
  • Zbyt wysokie wartości limitu czasu mogą bezzasadnie opóźniać inne urządzenia Modbus oczekujące na odpowiedź.

Opóźnienie między żądaniami

Opóźnienie, które TapHome wstawia pomiędzy poszczególnymi żądaniami do urządzenia Modbus.

Typ ModbusuDomyślne opóźnienie
Modbus TCP0ms
Modbus RTUZależne od prędkości komunikacyjnej (baud rate), typowo co najmniej 3,5 znaku

📌 Ważne informacje o urządzeniach:

  • Niektóre urządzenia Modbus TCP wymagają nawet 5000 ms między żądaniami.
  • Niektóre urządzenia Modbus RTU umożliwiają krótsze opóźnienia i komunikują się szybciej.

Użycie komunikacji ASCII

Modbus ASCII jest rzadziej spotykanym wariantem standardu, w którym komunikacja nie jest binarna, lecz zamiast tego używa znaków ASCII.

  • Te urządzenia zazwyczaj wymagają ustawienia 7 bitów danych.