Skripte Modbus i prefetch
Skripte modula i uređaja Modbus u sustavu TapHome — inicijalizacijska skripta, skripta za čitanje, čitanje vrijednosti, pisanje vrijednosti, servisni atributi i servisne radnje — i kako na njih utječu prefetch i međuspremnik registara.
Modul Modbus i svaki njegov uređaj imaju nekoliko skripti, a funkcije Modbus rade u svima njima. Koliko se često skripte izvršavaju i koje registre čitaju sa sabirnice ovisi o intervalu očitavanja i načinu prefetcha uređaja. Kada se koja skripta izvršava i koje varijable vidi, detaljno je opisano na stranici Integracija Modbus.
Skripte modula i uređaja Modbus
Svaka skripta Modbus ima vlastiti trenutak izvršavanja i vlastiti tipičan sadržaj.
| Skripta | Izvršava se | Tipičan sadržaj |
|---|---|---|
| Inicijalizacijska skripta (modul, uređaj) | Jednom nakon pokretanja | MODBUSWNE za konfiguracijske registre. |
| Skripta za čitanje (modul, uređaj) | Pri svakom očitavanju | Registri alarma i ADDERROR. |
| Skripta za čitanje vrijednosti (uređaj) | Pri svakom očitavanju | MODBUSR i pretvorba. Posljednja naredba je vrijednost uređaja. |
| Skripta za pisanje vrijednosti (uređaj) | Kada se vrijednost promijeni, a s postavkom Periodični upis pri svakom očitavanju | MODBUSW varijable uređaja, na primjer zadane vrijednosti. |
| Servisni atribut | Kada se otvore servisne postavke | MODBUSR pretvoren u tekst. |
| Servisna radnja | Kada se pritisne njezin gumb | MODBUSW s parametrima radnje, dostupnima pod njihovom kraticom. |
Napomene
- Varijable definirane na modulu ili uređaju zadržavaju vrijednost između izvršavanja skripti — njima prenesite vrijednost iz skripte za čitanje u servisni atribut. Varijable modula mogu biti zbirke od Core 2026.1, build 39507.
ADDERROR,ADDWARNINGiADDINFOrade samo u nekim od ovih skripti — vidi ADDERROR.
Primjer — skripta za čitanje vrijednosti senzora temperature
MODBUSR(H, 20, Int16) / 10;Primjer — servisna radnja s parametrom ID
MODBUSW(H, 20, Float, ID);Prefetch i međuspremnik registara
Način prefetcha uređaja Modbus određuje čitaju li njegove skripte registre iz međuspremnika modula ili sa sabirnice.
| Način | Učinak na skripte |
|---|---|
| Normal | Registri koje koriste skripte čitaju se grupiranim zahtjevima prije izvršavanja skripti. Dvostruko čitanje istog registra u jednom izvršavanju stoji jednu transakciju. |
| Isolated | Kao Normal, ali se registri uređaja ne spajaju s registrima drugih uređaja. |
| No prefetch | Bez međuspremnika. Svaki MODBUSR i MODBUSRBLOCK stvarna je transakcija, redoslijedom kojim je napisan. |
Napomene
- No prefetch odaberite za uređaje kojima je potreban točan redoslijed transakcija; vrijednost pročitanu jednom tada spremite u varijablu umjesto da je čitate ponovno.
- Jedno čitanje bloka bolje je od petlje pojedinačnih čitanja —
MODBUSRBLOCK(H, 100, 100)zamjenjuje 100 transakcija. MODBUSWNEiMODBUSWBLOCKNEuspoređuju s vrijednošću u međuspremniku — vidi MODBUSWNE.- Veličina grupiranih zahtjeva i načini prefetcha postavljaju se kako je opisano u odjeljku Prefetch.
Primjer — jedan blok umjesto četiri čitanja
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);Vidi također — Tipovi podataka Modbus, Primjeri.