Modbus je jednoduchý komunikačný protokol, často používaný na integráciu zariadení HVAC. Využíva komunikáciu master-slave, kde k spoločnej zbernici môže byť pripojených niekoľko zariadení, pričom každé musí mať jedinečné Slave ID a master zariadenie vždy dopytuje jednotlivé slave zariadenia, ktoré mu odpovedajú.

Topológia Master - Slave

Vo väčšine prípadov sa TapHome používa v režime, kde je riadiaca jednotka Core Modbus Master a pripojené zariadenia sú Modbus Slave. Toto sa nastavuje v sekcii Hardvér → Modbus RTU alebo Modbus TCP. Je však možné použiť aj opačný smer, keď TapHome Core poskytuje inému nadriadenému systému informácie o svojich zariadeniach. Toto je definované v sekcii Vystaviť zariadenia → Modbus RTU alebo Modbus TCP.

Fyzické vrstvy

Modbus môže komunikovať cez rôzne fyzické vrstvy:

  • cez sériovú linku, typicky RS485. Toto sa označuje ako Modbus RTU
  • cez LAN sieť pomocou TCP/IP protokolu
  • cez LAN sieť pomocou UDP protokolu - v súčasnosti systémom TapHome nepodporované

Modbus registre

Modbus definuje 4 typy registrov:

Register Kód Prístup Veľkosť Funkčné kódy
Holding Registers H Čítanie-zápis 16-bitov Čítanie: 03, Zápis viacerých: 16 (0x10)
- Write Single Holding SH Čítanie-zápis 16-bitov Zápis jedného: 06
Coil (Discrete Output Coils) C Čítanie-zápis 1-bit Čítanie: 01, Zápis viacerých: 15 (0xF)
- Write Single Coil SC Čítanie-zápis 1-bit Zápis jedného: 05
Discrete Input Contacts D Iba na čítanie 1-bit Čítanie: 02
Analog Input Registers A Iba na čítanie 16-bitov Čítanie: 04
Číslo registra je 16-bitové, to znamená, že môže mať hodnotu od 0 do 65535. Na registroch je možné vykonávať operácie:
  • čítanie viacerých registrov
  • zápis jedného registra
  • zápis viacerých registrov

Niektoré implementácie Modbus pridávajú ďalšie príkazy: report slave id, bitové maskovanie, zápis a čítanie naraz atď., ale tie nie sú TapHome podporované. {.is-warning}

Informácie o tom, čo je uložené v ktorom registri a v akom formáte, sú súčasťou dokumentácie zariadenia poskytnutej dodávateľom alebo výrobcom zariadenia. Príklad Modbus dokumentácie od dodávateľa Modbus zariadenia: modbus_table.png

Typ registra C (Coil), index 58, keďže má len 2 hodnoty (otvorené / zatvorené) a okrem čítania umožňuje aj zápis, zodpovedajúci typ TapHome zariadenia je digitálny výstup.

Zrýchlené pokyny pre integráciu Modbus zariadenia do TapHome

  1. Pripojte zariadenie k príslušnej zbernici (pre Modbus RTU a ASCII) alebo k LAN (pre Modbus TCP). Pre TCP zariadenie sa uistite, že je v rovnakej sieti ako kontrolér TapHome Core, napríklad pomocou Fing (iOS, Android) alebo IP Scanner (Windows).
  2. V TapHome → Hardvér pridajte nové rozhranie Modbus RTU alebo Modbus TCP a nastavte komunikačné parametre podľa dokumentácie. Pre Modbus RTU sú to Baud rate, Stop bits, Parity, Data bits, pre Modbus TCP je to IP adresa.
  3. V dokumentácii Modbus zariadenia zistite, aké Slave ID používa. V prípade Modbus TCP sa to niekedy označuje ako Unit ID. Ak chcete použiť viacero zariadení na jednej zbernici s Modbus RTU, musíte zmeniť Slave ID každého z nich tak, aby bolo jedinečné pre danú zbernicovú linku.
  4. Test komunikácie - pomocou nástroja Manuálne operácie skúste prečítať niektoré informácie podľa dokumentácie (Modbus tabuľky) pre dané zariadenie. Ak všetko funguje, mali by ste vidieť odčítanú hodnotu.
  5. Ak bol test komunikácie úspešný, vytvorte Modul, ktorý predstavuje Modbus zariadenie.
  6. Vyberte, ktoré informácie z Modbus dokumentácie chcete prezentovať v systéme TapHome a vytvorte zodpovedajúce zariadenia. Začnite čítaním hodnôt (Read script) a v prípade aktorov pokračujte zápisom (Write script).
  7. Ak základné funkcie zariadenia fungujú, pridajte definície Error, Warning alebo Information do skriptov.
  8. V prípade potreby môžete tiež definovať Servisné atribúty a Servisné akcie pre TapHome zariadenia a moduly.
  9. Ak je všetko naladené a komunikuje správne, exportujte Modul do XML súboru, aby ste ho mohli použiť nabudúce. Môžete tiež prispieť do komunity na github.com/taphome-official/modbus_templates.

Implementácia v TapHome

Táto dokumentácia je určená pre scenár, kde je riadiaca jednotka TapHome Core Modbus master a fyzické zariadenia, ktoré sú pridané do sekcie Hardvér → Modbus RTU / TCP, sú Modbus slave.

Rozhranie

Hardvér → Modbus RTU: zariadenia sú pripojené na určitú BUS, sú definované základné parametre prenosu RS485, ako je baudrate, parita, stop bity, alebo či sú dáta ASCII alebo binárne. Na túto zbernicu môžu byť pripojené iba zariadenia s rovnakými komunikačnými nastaveniami. Správna komunikácia môže fungovať len vtedy, ak sú A a B káble správne pripojené. Hardvér → Modbus TCP: zariadenia sú pripojené na rovnakej LAN ako riadiaca jednotka Core. Je definovaný jeden TCP port, ktorý je spoločný pre všetky zariadenia pripojené k tomuto rozhraniu.

Modul

Rozhranie môže obsahovať jeden alebo viac modulov, ktoré vo väčšine prípadov pokrývajú komunikáciu s celým fyzickým zariadením. Z konfiguračného hľadiska modul definuje jedinečné Slave ID pripojeného zariadenia pre Modbus RTU a navyše IP adresu pre Modbus TCP.

Zariadenie

Predstavuje špecifický riadiaci prvok alebo senzor v systéme TapHome. Musí byť vždy súčasťou jedného nadradeného Modulu.

5 klimatizačných jednotiek pripojených na jednej zbernici používa spoločné rozhranie Modbus RTU, ktoré definuje port zbernice, prenosovú rýchlosť a ďalšie komunikačné parametre. Rozhranie obsahuje 5 modulov, z ktorých každý predstavuje jednu klimatizačnú jednotku s jedinečným Slave ID. Každý modul má pod sebou definované zariadenia, ako napríklad termostat, režim chladenia/kúrenia, výkon ventilátora alebo naklápanie lamiel. Jednotlivé zariadenia majú definované príkazy pre čítanie a/alebo zápis Modbus hodnôt.

Podporované zariadenia:

  • Digitálny výstup
  • Analógový výstup
  • Termostat
  • Viac-hodnotový prepínač
  • Teplotný senzor
  • Elektromer
  • Stavový kontakt
  • Tlačidlo
  • Premenná

Skripty pre čítanie a zápis Modbus hodnôt

Zariadenia TapHome komunikujú s fyzickými Modbus zariadeniami pomocou skriptov.

Viac informácií o skriptovacom jazyku, predovšetkým sekcia Bitové operácie

Pre komunikáciu s Modbus zariadeniami sú na nich definované skriptovacie sekcie:

  • Inicializačný skript: spustí sa, keď sa zariadenie spustí (napr. po reštarte riadiacej jednotky)
  • Skript na čítanie: nastavenie hodnôt globálnych premenných alebo čítanie chybových stavov
  • Skript na čítanie hodnoty: skript na čítanie špecifickej hodnoty (množstva) z Modbus zariadenia (napr. nastavená teplota na termostate alebo nameraná teplota na termostate)
  • Skript na zápis hodnoty: zapíše hodnotu do Modbus zariadenia

Funkcie pre komunikáciu s Modbus zariadeniami

MODBUSR (Modbus Read)

Funkcia pre čítanie registra z Modbus. V závislosti od dátového typu to môže byť 1 register (pre 16-bitové dátové typy), 2 registre (pre 32-bitové dátové typy) alebo viac registrov (pre dátové typy String).

MODBUSR(typ_registra, adresa_registra, dátový_typ, [VOLITEĽNÉ: počet_znakov ak data_type=String])

Príklad: MODBUSR(H, 20, Int16)/100 Prečítajte register H číslo (alebo adresa) 20 a interpretujte ho ako 16-bitové celé číslo (celé číslo so znakom +/-). Nakoniec túto hodnotu vydelte číslom 100 (posuňte desatinnú čiarku o 2 miesta doľava).

Adresu registra je možné zadať aj v hexadecimálnom formáte, napr. hodnotu 20 je možné zapísať ako 0x14.

MODBUSW (Modbus Write)

MODBUSW(typ_registra, adresa_registra, dátový_typ, hodnota_na_zápis)

Príklad: MODBUSW(H, 20, Int16, Te * 100) Do registra H s adresou 20 zapíšte hodnotu premennej Te vynásobenú číslom 100 (posunutie desatinnej čiarky o 2 doprava).

MODBUSWNE (Modbus Write if Not Equal)

Rovnaké ako MODBUSW s tým rozdielom, že prečíta hodnotu z registra pred zápisom a zapíše ju len vtedy, ak sa zapísaná hodnota líši od prečítanej. Celá operácia trvá dlhšie a jej typické použitie je pri nastavovaní vlastností Modbus zariadenia, kde sa konfigurácia zapisuje do EEPROM pamäte s obmedzeným počtom zápisov.

Funkcie MODBUSR, MODBUSW a MODBUSWNE je možné použiť iba v Modbus skriptoch. Ak sa použijú v iných skriptoch, považujú sa za chybu.

Typy dát Modbus

Obsah registrov je definovaný v Modbus tabuľke. Keďže veľkosť jedného Modbus registra je 16 bitov, najčastejšie sa používajú 16-bitové hodnoty Int16 alebo UInt16 a desatinné miesta sa určujú delením 10 alebo 100. Niektoré Modbus zariadenia však používajú aj 16-bitové registre s číslami s pohyblivou desatinnou čiarkou (Float), alebo majú zmenené poradie bitov (big endian, little endian), zapisujú jedno číslo do dvoch registrov (32-bitové variácie). Niekedy je najjednoduchší spôsob, ako zistiť správny dátový typ, použiť nástroj priamo v aplikácii TapHome (Ručné operácie), kde môžete načítať 1 alebo viac registrov a dynamicky prepínať dátový typ.

  • Int16: -32,768 až 32,767
  • Uint16: 0 až 65,535
  • Int32: -2 147 483 648 až 2 147 483 647
  • Uint32: 0 až 4 294 967 295
  • Float: IEEE 754 Jednoduchá presnosť s pohyblivou desatinnou čiarkou
  • Bool: 0 = false, 1 = true
  • BigEndianInt16 = Int16
  • LittleEndianInt16
  • BigEndianUint16 = Uint16
  • LittleEndianUint16
  • BigEndianInt32 / BigEndianInt32ByteSwap
  • LittleEndianInt32 / LittleEndianInt32ByteSwap
  • BigEndianUint32 / BigEndianUint32ByteSwap
  • LittleEndianUint32 / LittleEndianUint32ByteSwap
  • BigEndianFloat / BigEndianFloatByteSwap
  • LittleEndianFloat / LittleEndianFloatByteSwap
  • String: Formát BCD môže byť tiež použitý vďaka funkciám TOBCD() a FROMBCD()

Interval aktualizácie a dopytovania

Každé zariadenie v Modbus rozhraní má definovaný atribút Poll Interval. Ten určuje, ako často má riadiaca jednotka TapHome dopytovať nové hodnoty Modbus zariadenia. Modbus komunikácia je typu Master-Slave, a preto informácie z Modbus zariadenia môžu do TapHome prísť iba vtedy, keď si ich TapHome vyžiada. Čím dlhší je Poll Interval, tým neskôr sa hodnota v TapHome aktualizuje. Príliš krátky Poll Interval môže znamenať, že TapHome bude zbytočne zaťažený získavaním nepotrebných hodnôt a nemusí mať čas obslúžiť všetky zariadenia v danom časovom intervale. Napríklad pri Modbus RTU a nižších rýchlostiach Baud Rate, napr. 9600, môže jedna požiadavka/odpoveď trvať desiatky ms. Pre teplomery je vo väčšine prípadov postačujúci interval 15000ms (15s), pre tlačidlá, naopak, čo najkratší, napr. 50 ms. Niektoré Modbus zariadenia očakávajú, že master bude periodicky zapisovať aktuálnu hodnotu do registra. Na to slúži atribút Periodic Write.

Definícia chybových stavov zo skriptov

V niektorých skriptoch je možné definovať chybu / varovanie / informáciu na zariadení na základe informácií prečítaných z Modbus registrov zariadenia. Tieto správy sa zobrazujú v TapHome rovnako ako interné chybové správy TapHome. Voliteľne je možné k chybovej správe pridať numerický kód chyby, ak je to praktické pre servis Modbus zariadenia.

Na zariadení je možné definovať iba jednu chybovú správu bez kódu alebo iba jednu chybovú správu na jeden kód chyby.

ADDERROR(), ADDWARNING(), ADDINFO() ADDERROR([Voliteľné: custom_code], text)

Príklad: v sekcii Read Script zariadenia Analog Output je kód:

1
2
3
4
5
6
7
ADDERROR("Error without code");
ADDWARNING("Warning without code");
ADDINFO("Info without code");

ADDERROR(1, "Error with code");
ADDWARNING(1, "Warning with code");
ADDINFO(1,"Info with code");

…čo sa na zariadení prejaví správami: modbus_error.png

Servisné atribúty a akcie

Okrem hodnoty (alebo viacerých hodnôt, ako napríklad termostat) z pripojeného Modbus zariadenia môžu moduly a zariadenia TapHome čítať aj servisné atribúty alebo vykonávať servisné akcie. Tieto potom nie sú prístupné na pracovnej ploche pre ostatných používateľov systému, ale slúžia len na podrobnejšie informácie o Modbus zariadení, bez zbytočného preťažovania systému veľkým množstvom premenných a akcií.

Servisné atribúty sa zobrazujú v servisných nastaveniach modulu alebo zariadenia TapHome. Typicky sa používajú na zobrazenie informácií o zariadení, ako sú Model, Sériové číslo, Verzia firmvéru, Verzia hardvéru, Čas od posledného reštartu atď. Sú to užitočné informácie z hľadiska servisu Modbus zariadenia, ale nemá zmysel pre ne vytvárať samostatné zariadenia TapHome.

Servisné akcie sa zobrazujú v servisných nastaveniach modulu alebo zariadenia TapHome, úplne dole ako tlačidlá. Po stlačení vykonajú prednastavenú Modbus akciu, ktorá zapíše požadované informácie do registra. Príklad použitia: Nastavenie alebo zmena Slave ID, Výmena filtra, Nastavenie počítadla na požadovanú hodnotu, Resetovanie zariadenia a podobne.

Skripty a pomocné premenné na module

Globálne premenné modulu

Premenné definované na module sú použiteľné vo všetkých skriptoch na module a sú zdieľané so všetkými zariadeniami priradenými k tomuto modulu.

Init Skript

Voliteľné. Spustí sa pri štarte modulu. Ak je vyplnený a ešte nebežal, nebudú povolené žiadne ďalšie skripty.

  • 💬 Návratová hodnota: ignorovaná
  • ⚙️ Prístup k premenným: globálne premenné modulu
  • ⚠️ Podpora chybového stavu: nie

Read Skript

Spustí sa pri každom dopyte modulu.

  • 💬 Návratová hodnota: ignorovaná
  • ⚙️ Prístup k premenným: globálne premenné modulu
  • ⚠️ Podpora chybového stavu: áno

Write Skript

Spustenie:

  • pri zmene premennej zariadenia
  • ak je povolený atribút “Periodic Write”, spustí sa automaticky
  • 💬 Návratová hodnota: ignorovaná
  • ⚙️ Prístup k premenným: globálne premenné modulu, hodnoty zariadení patriacich k danému modulu (pozor, nie sú to globálne premenné zariadenia - skript modulu k nim nemá prístup). Toto sa používa v prípade, keď je potrebné zapísať hodnoty viacerých zariadení daného modulu do jedného registra.
  • ⚠️ Podpora chybového stavu: nie

Servisné atribúty

Každý modul môže mať definovaný neobmedzený počet servisných atribútov. Skripty sa vykonávajú vždy, keď používateľ (s servisnými oprávneniami) otvorí obrazovku servisných nastavení modulu v aplikácii. Sú zapísané hore, ihneď po prečítaní z Modbus zariadenia.

  • 💬 Návratová hodnota: zobrazuje sa ako hodnota daného atribútu
  • ⚙️ Prístup k premenným: globálne premenné modulu
  • ⚠️ Podpora chybového stavu: nie

Servisné akcie

Každý modul môže mať definovaný neobmedzený počet servisných akcií. Skripty sa spustia, keď používateľ (s servisnými oprávneniami) otvorí aplikáciu na obrazovke servisných nastavení modulu a stlačí jedno z definovaných tlačidiel s názvom servisnej akcie. Každá servisná akcia je definovaná svojím názvom, parametrami a vykonávacím skriptom.

  • 💬 Návratová hodnota: ignorovaná
  • ⚙️ Prístup k premenným: globálne premenné modulu, používateľom zadané parametre
  • ⚠️ Podpora chybového stavu: nie

Skripty a pomocné premenné na zariadení

Globálne premenné zariadenia

Premenné definované na zariadení sú použiteľné vo všetkých skriptoch definovaných na tomto zariadení a nie sú použiteľné nikde mimo zariadenia. Zariadenie v nich môže ukladať svoj stav, zdieľať ich medzi svojimi skriptami a pod.

Init Skript

Voliteľné. Spustí sa pri štarte zariadenia. Ak je vyplnený a ešte nebežal, nebudú povolené žiadne ďalšie skripty.

  • 💬 Návratová hodnota: ignorovaná
  • ⚙️ Prístup k premenným: globálne premenné modulu, globálne premenné zariadenia
  • ⚠️ Podpora chybového stavu: nie

Read Skript

Spustí sa pri každom dopyte zariadenia, pred “Read Value Scripts”.

  • 💬 Návratová hodnota: ignorovaná
  • ⚙️ Prístup k premenným: globálne premenné modulu, globálne premenné zariadenia
  • ⚠️ Podpora chybového stavu: áno. Chyby sa týkajú celého zariadenia (napr. celého termostatu, nielen jeho nastavenej hodnoty alebo aktuálnej hodnoty teploty).

Write Value Skript

Spustenie:

  • pri každej zmene hodnoty
  • ak je zapnutý atribút “Periodic Write”, tak aj pri každom dopyte
  • 💬 Návratová hodnota: ignorovaná
  • ⚙️ Prístup k premenným: globálne premenné modulu, globálne premenné zariadenia, špecifická hodnota veličiny, ktorá sa má zapísať cez Modbus do zariadenia.
  • ⚠️ Podpora chybového stavu: nie

Read Value Skript

Spustí sa pri každom dopyte zariadenia.

  • 💬 Návratová hodnota: sa automaticky priradí ako hodnota daného zariadenia
  • ⚙️ Prístup k premenným: globálne premenné modulu, globálne premenné zariadenia, naposledy načítaná hodnota premennej, kôra, ktorá sa má prečítať (užitočné napríklad, ak zariadenie indikuje, že ešte nebolo načítané, atď.)
  • ⚠️ Podpora chybového stavu: áno. Chybové správy by sa mali vzťahovať na danú veličinu na zariadení. Napríklad, ak je príkaz ADDERROR(1, "Senzor nie je pripojený") v skripte Read Temperature v zariadení Termostat , užívateľ uvidí chybovú správu v aplikácii na termostate s tromi informáciami: Teplota, kód 1, text “Senzor nie je pripojený”.

Servisné atribúty

Každé zariadenie môže mať definovaný neobmedzený počet servisných atribútov. Skripty sa vykonávajú vždy, keď používateľ (s servisnými oprávneniami) otvorí obrazovku servisných nastavení zariadenia v aplikácii. Sú zapísané hore, ihneď po prečítaní z Modbus zariadenia.

  • 💬 Návratová hodnota: zobrazuje sa ako hodnota daného atribútu
  • ⚙️ Prístup k premenným: globálne premenné modulu, globálne premenné zariadenia
  • ⚠️ Podpora chybového stavu: nie

Servisné akcie

Každé zariadenie môže mať definovaný neobmedzený počet servisných akcií. Skripty sa vykonávajú, keď používateľ (s servisnými oprávneniami) otvorí aplikáciu na obrazovke servisných nastavení zariadenia a stlačí jedno z definovaných tlačidiel s názvom servisnej akcie. Každá servisná akcia je definovaná svojím názvom, parametrami a vykonávacím skriptom.

  • 💬 Návratová hodnota: ignorovaná
  • ⚙️ Prístup k premenným: globálne premenné modulu, globálne premenné zariadenia, používateľom zadané parametre
  • ⚠️ Podpora chybového stavu: nie

Užitočné nástroje

Pridať zo šablóny

Umožňuje konfiguráciu Modbus komunikácie so zariadením bez akýchkoľvek znalostí Modbus protokolu alebo toho, ako ho konfigurovať v TapHome. Predpripravené šablóny nájdete:

  • priamo v aplikácii: Pridať zo šablóny → vyberte konkrétne zariadenie → vyplňte základné informácie a potvrďte. Všetky tieto šablóny sú spravované v komunitnom git projekte na https://github.com/taphome/modbus_templates a ktokoľvek tam môže navrhnúť nové modifikácie. Čo sa dostane do aplikácií, musí byť schválené priamo tímom TapHome.
  • vo vlastnom XML súbore: Pridať zo šablónyPridať zo súboru . Môžete si vytvoriť vlastný XML súbor, ktorý definuje celú šablónu priamo na Modbus module, v kontextovom menu (3 bodky vpravo hore), akcia Uložiť ako šablónu. Budeme radi, ak nám pomôžete rozšíriť počet podporovaných zariadení a prispejete svojím XML súborom do spoločného komunitného git projektu.

Viac informácií o konfigurácii Modbus komunikácie pomocou šablón

Manuálne operácie

Praktický nástroj pre rýchle počiatočné overenie Modbus tabuľky. Umožňuje:

  • načítať nasledujúce X registre do tabuľky zo špecifického registra a potom dynamicky prepínať prečítané hodnoty do rôznych dátových typov
  • zapísať hodnotu do daného registra

Skenovať Slave ID

Bežnou praxou pri nastavovaní komunikácie s Modbus zariadením je, že továrenské predvolené Slave ID je iné ako 1, a nie je ľahké zistiť správne číslo. Na to slúži tento nástroj. Môže skenovať zadaný rozsah Slave ID pokusom o čítanie z vybraného registra vždy s testovaným Slave ID.

Informácie o registroch

Nachádza sa v dolnej časti Modbus modulu. Pre každý použitý register uvádza informácie o:

  • Názov zariadenia TapHome, ktoré z neho číta alebo do neho zapisuje
  • Dátum a čas posledného úspešného prečítania z registra
  • Posledná hodnota prečítaná z registra
  • Dátum a čas posledného úspešnej registrácie v registri
  • Posledná hodnota zapísaná do registra

Pokročilé nastavenia

Prefetch

TapHome vytvára zoznam registrov na čítanie a zápis z Modbus zariadení v závislosti od nastaveného Poll intervalu. Prefetch je proces, vďaka ktorému riadiaca jednotka prednačítava do vyrovnávacej pamäte hodnoty, ktoré bude potrebovať počas aktualizácie. Cieľom je minimalizovať počet požiadaviek a spiatočných ciest. Prefetch je ovplyvnený 2 nastaveniami:

  • Max prefetch register group size (umiestnené v servisných nastaveniach modulu): určuje maximálny počet registrov, ktoré je možné prečítať alebo zapísať pomocou Modbus komunikácie jednou požiadavkou.
  • Prefetch mode (nastaviteľné pre každé zariadenie):
    • No prefetch. Prednačítanie sa pre toto zariadenie nebude vykonávať. To znamená, že hodnoty sa budú čítať individuálne a presne vtedy, keď sa skript vykoná. Príklad použitia: pri komunikácii s DALI konvertorom nie je možné prečítať hodnotu konkrétneho svetla priamo, ale musí sa o ňu čo najskôr požiadať, konvertor ju pripraví a až potom ju vráti. Akékoľvek prednačítanie je v tomto prípade zbytočné.
    • Isolated prefetch. Prednačítava naraz niekoľko registrov, ale iba tie, ktoré sú definované v tomto zariadení. Napríklad, keď potrebujem registre 3 a 4 v zariadení termostatu, registre 1, 2, 5, 6 sa používajú v iných zariadeniach, takže požiadavka na registre 3 a 4 sa uskutoční samostatne len pre tieto 2 registre. Niektoré Modbus zariadenia to vyžadujú.
    • Normal prefetch. Všetky požadované registre zo zariadení, ktoré sa majú obnoviť, sa pokúsia prečítať s minimálnym počtom požiadaviek. V prípade nesúvislej sekvencie registrov sa prečítajú aj registre, ktoré sa nepoužívajú, ak boli v minulosti úspešne prečítané. Príklad: Požadujú sa registre 99 a 101. Ak bol register 100 v minulosti úspešne prečítaný a Max prefetch register group size je 3 alebo viac, prečíta 3 registre jednou požiadavkou z registra 99. Ak sa register 100 nikde nepoužíva a nikdy nebol úspešne prečítaný, existuje riziko, že čítanie cez takýto register by mohlo vrátiť Modbus výnimku, napr. “Illegal data address” ako odpoveď na celú požiadavku.

Prefetch môže byť ovplyvnený aj priamo zo skriptu: Ak pri čítaní použijeme register SC alebo SH (namiesto C alebo H), potom sa hodnota číta jeden register po druhom počas vykonávania skriptu a nevyťahuje sa z vyrovnávacej pamäte. Podobne pri zápise, ak použijeme register SC alebo SH (namiesto C alebo H), hodnota sa zapisuje jeden register po druhom a inou Modbus funkciou. Modbus protokol podporuje 4 funkcie zápisu: zápis viacerých H, viacerých C, zápis jedného H alebo jedného C registra naraz. Pozor: nie všetky zariadenia môžu podporovať všetky tieto funkcie. Týmto spôsobom, ak je to potrebné, je možné kombinovať čítanie a zápis a “jeden po druhom”.

TCP Port (Modbus TCP)

Vo väčšine prípadov je predvolená hodnota 502, ale je možné, že niektoré zariadenia počúvajú na inom porte.

Časový limit čítania / zápisu

Čas, po ktorom TapHome vzdá čakanie na odpoveď a nahlási chybu „Timeout“. To znamená, že zariadenie neodpovedalo v danom intervale.

  • Pomalé Modbus zariadenia môžu vyžadovať dlhšie časové limity (1+ sekúnd).
  • Vysoké hodnoty časového limitu môžu zbytočne oneskoriť ostatné Modbus zariadenia čakajúce na odpoveď.

Oneskorenie medzi požiadavkami

Oneskorenie, ktoré TapHome vkladá medzi jednotlivé požiadavky na Modbus zariadenie.

Typ Modbusu Predvolené oneskorenie
Modbus TCP 0ms
Modbus RTU Na základe komunikačnej rýchlosti (baud rate), typicky aspoň 3.5 znakov

📌 Dôležité informácie o zariadeniach:

  • Niektoré zariadenia Modbus TCP vyžadujú až 5000 ms medzi požiadavkami.
  • Niektoré zariadenia Modbus RTU umožňujú kratšie oneskorenia a komunikujú rýchlejšie.

Použiť ASCII komunikáciu

Modbus ASCII je menej bežný štandard, kde komunikácia nie je binárna, ale namiesto toho používa znaky ASCII.

  • Tieto zariadenia typicky vyžadujú nastavenie 7 dátových bitov.