TapHome

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.

SkriptaIzvršava seTipičan sadržaj
Inicijalizacijska skripta (modul, uređaj)Jednom nakon pokretanjaMODBUSWNE za konfiguracijske registre.
Skripta za čitanje (modul, uređaj)Pri svakom očitavanjuRegistri alarma i ADDERROR.
Skripta za čitanje vrijednosti (uređaj)Pri svakom očitavanjuMODBUSR 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čitavanjuMODBUSW varijable uređaja, na primjer zadane vrijednosti.
Servisni atributKada se otvore servisne postavkeMODBUSR pretvoren u tekst.
Servisna radnjaKada se pritisne njezin gumbMODBUSW 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, ADDWARNING i ADDINFO rade 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činUčinak na skripte
NormalRegistri koje koriste skripte čitaju se grupiranim zahtjevima prije izvršavanja skripti. Dvostruko čitanje istog registra u jednom izvršavanju stoji jednu transakciju.
IsolatedKao Normal, ali se registri uređaja ne spajaju s registrima drugih uređaja.
No prefetchBez 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.
  • MODBUSWNE i MODBUSWBLOCKNE uspoređ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.