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.
| Script | Rulează | Conținut tipic |
|---|---|---|
| Inițializare (modul, dispozitiv) | O singură dată după pornire | MODBUSWNE pentru registrele de configurare. |
| Citire (modul, dispozitiv) | La fiecare interogare | Registrele de alarmă și ADDERROR. |
| Citirea valorii (dispozitiv) | La fiecare interogare | MODBUSR și o conversie. Ultima instrucțiune este valoarea dispozitivului. |
| Scrierea valorii (dispozitiv) | Când valoarea se schimbă și, cu Scriere periodică, la fiecare interogare | MODBUSW al variabilei dispozitivului, de exemplu valoarea dorită. |
| Atribut de service | Când se deschid setările de service | MODBUSR transformat în text. |
| Acțiune de service | Când se apasă butonul ei | MODBUSW 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șiADDINFOfuncț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ă.
| Mod | Efect asupra scripturilor |
|---|---|
| Normal | Registrele 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. |
| Isolated | Ca Normal, dar registrele dispozitivului nu se combină cu registrele altor dispozitive. |
| No prefetch | Fă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șiMODBUSWBLOCKNEcompară 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.