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.
| Skript | Spúšťa sa | Typický obsah |
|---|---|---|
| Inicializačný skript (modul, zariadenie) | Raz po štarte | MODBUSWNE 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út | Pri otvorení servisných nastavení | MODBUSR prevedený na text. |
| Servisná akcia | Po stlačení jej tlačidla | MODBUSW 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,ADDWARNINGaADDINFOfungujú 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žim | Vplyv na skripty |
|---|---|
| Normal | Registre 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. |
| Isolated | Ako Normal, ale registre zariadenia sa nezlučujú s registrami iných zariadení. |
| No prefetch | Bez 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í. MODBUSWNEaMODBUSWBLOCKNEporovná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.