TapHome

Skripty Modbus a prefetch

Skripty Modbus modulu a zariadenia TapHome — inicializačný skript, skript na čítanie, na čítanie hodnoty a na zápis hodnoty, servisné atribúty a servisné akcie — a ako ich ovplyvňuje prefetch a vyrovnávacia pamäť registrov.

Modbus modul aj každé jeho zariadenie majú niekoľko skriptov a funkcie Modbus fungujú vo všetkých. Ako často sa skripty spúšťajú a ktoré registre čítajú zo zbernice, závisí od intervalu dopytovania a režimu prefetchu zariadenia. Kedy sa ktorý skript spúšťa a ktoré premenné vidí, podrobne opisuje stránka Integrácia Modbus.

Skripty Modbus modulov a zariadení

Každý skript Modbus má vlastný okamih spustenia a vlastný typický obsah.

SkriptSpúšťa saTypický obsah
Inicializačný skript (modul, zariadenie)Raz po štarteMODBUSWNE pre konfiguračné registre.
Skript na čítanie (modul, zariadenie)Pri každom dopytovaníAlarmové registre a ADDERROR.
Skript na čítanie hodnoty (zariadenie)Pri každom dopytovaníMODBUSR a prepočet. Posledný príkaz je hodnota zariadenia.
Skript na zápis hodnoty (zariadenie)Pri zmene hodnoty a so zapnutým Periodickým zápisom aj pri každom dopytovaníMODBUSW premennej zariadenia, napríklad požadovanej hodnoty.
Servisný atribútPri otvorení servisných nastaveníMODBUSR prevedený na text.
Servisná akciaPo stlačení jej tlačidlaMODBUSW s parametrami akcie, ktoré sú dostupné pod svojou skratkou.

Poznámky

  • Premenné definované na module alebo na zariadení si zachovajú hodnotu medzi spusteniami skriptov — použite ich na odovzdanie hodnoty zo skriptu na čítanie do servisného atribútu. Premenné modulu môžu byť kolekcie od Core 2026.1, build 39507.
  • ADDERROR, ADDWARNING a ADDINFO fungujú iba v niektorých z týchto skriptov — pozrite ADDERROR.

Príklad — skript na čítanie hodnoty teplotného senzora

MODBUSR(H, 20, Int16) / 10;

Príklad — servisná akcia s parametrom ID

MODBUSW(H, 20, Float, ID);

Prefetch a vyrovnávacia pamäť registrov

Režim prefetchu Modbus zariadenia určuje, či jeho skripty čítajú registre z vyrovnávacej pamäte modulu, alebo zo zbernice.

RežimVplyv na skripty
NormalRegistre použité v skriptoch sa pred spustením skriptov prečítajú v zlúčených požiadavkách. Dvojité čítanie toho istého registra v jednom spustení stojí jednu transakciu.
IsolatedAko Normal, ale registre zariadenia sa nezlučujú s registrami iných zariadení.
No prefetchBez vyrovnávacej pamäte. Každé MODBUSR a MODBUSRBLOCK je skutočná transakcia, v poradí, v akom je napísané.

Poznámky

  • No prefetch zvoľte pre zariadenia, ktoré potrebujú presnú postupnosť transakcií; hodnotu prečítanú raz potom uložte do premennej a nečítajte ju znova.
  • Uprednostnite jedno blokové čítanie pred cyklom jednotlivých čítaní — MODBUSRBLOCK(H, 100, 100) nahradí 100 transakcií.
  • MODBUSWNE a MODBUSWBLOCKNE porovnávajú s hodnotou vo vyrovnávacej pamäti — pozrite MODBUSWNE.
  • Veľkosť zlúčených požiadaviek a režimy prefetchu sa nastavujú podľa časti Prefetch.

Príklad — jeden blok namiesto štyroch čítaní

collection<uint16> data := MODBUSRBLOCK(H, 100, 4);
VAR voltage := UNPACKVALUE(data, 0, Uint16) / 10;
VAR current := UNPACKVALUE(data, 1, Uint16) / 100;
VAR power := UNPACKVALUE(data, 2, BigEndianFloat);

Pozrite aj — Dátové typy Modbus, Príklady.