TapHome

Scripturi Modbus și prefetch

Scripturile unui modul și ale unui dispozitiv Modbus TapHome — inițializare, citire, citirea valorii, scrierea valorii, atribute de service și acțiuni de service — și cum le influențează prefetch-ul și cache-ul de registre.

Un modul Modbus și fiecare dintre dispozitivele sale au mai multe scripturi, iar funcțiile Modbus funcționează în toate. Cât de des rulează scripturile și ce registre citesc de pe magistrală depinde de intervalul de interogare și de modul prefetch al dispozitivului. Când rulează fiecare script și ce variabile vede este descris în detaliu în Integrarea Modbus.

Scripturile modulelor și dispozitivelor Modbus

Fiecare script Modbus are propriul moment de rulare și propriul conținut tipic.

ScriptRuleazăConținut tipic
Inițializare (modul, dispozitiv)O singură dată după pornireMODBUSWNE pentru registrele de configurare.
Citire (modul, dispozitiv)La fiecare interogareRegistrele de alarmă și ADDERROR.
Citirea valorii (dispozitiv)La fiecare interogareMODBUSR și o conversie. Ultima instrucțiune este valoarea dispozitivului.
Scrierea valorii (dispozitiv)Când valoarea se schimbă și, cu Scriere periodică, la fiecare interogareMODBUSW al variabilei dispozitivului, de exemplu valoarea dorită.
Atribut de serviceCând se deschid setările de serviceMODBUSR transformat în text.
Acțiune de serviceCând se apasă butonul eiMODBUSW cu parametrii acțiunii, disponibili după abrevierea lor.

Observații

  • Variabilele definite pe modul sau pe dispozitiv își păstrează valoarea între rulările scripturilor — folosiți-le pentru a transmite o valoare dintr-un script de citire către un atribut de service. Variabilele modulului pot fi colecții din Core 2026.1, build 39507.
  • ADDERROR, ADDWARNING și ADDINFO funcționează doar în unele dintre aceste scripturi — consultați ADDERROR.

Exemplu — scriptul de citire a valorii unui senzor de temperatură

MODBUSR(H, 20, Int16) / 10;

Exemplu — acțiune de service cu un parametru ID

MODBUSW(H, 20, Float, ID);

Prefetch și cache-ul de registre

Modul prefetch al unui dispozitiv Modbus decide dacă scripturile lui citesc registrele din cache-ul modulului sau de pe magistrală.

ModEfect asupra scripturilor
NormalRegistrele folosite de scripturi se citesc în cereri grupate înainte de rularea scripturilor. Citirea aceluiași registru de două ori într-o rulare costă o singură tranzacție.
IsolatedCa Normal, dar registrele dispozitivului nu se combină cu registrele altor dispozitive.
No prefetchFără cache. Fiecare MODBUSR și MODBUSRBLOCK este o tranzacție reală, în ordinea în care este scrisă.

Observații

  • Alegeți No prefetch pentru dispozitivele care au nevoie de o secvență exactă de tranzacții; atunci păstrați într-o variabilă valoarea citită o dată, în loc să o citiți din nou.
  • Preferați o singură citire de bloc în locul unei bucle de citiri individuale — MODBUSRBLOCK(H, 100, 100) înlocuiește 100 de tranzacții.
  • MODBUSWNE și MODBUSWBLOCKNE compară cu valoarea din cache — consultați MODBUSWNE.
  • Dimensiunea cererilor grupate și modurile prefetch se setează așa cum este descris în Prefetch.

Exemplu — un singur bloc în loc de patru citiri

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);

Consultați și — Tipuri de date Modbus, Exemple.