Modbus szkriptek és prefetch
A TapHome Modbus modul és eszköz szkriptjei — inicializáló, olvasó, érték olvasó, érték író szkript, szolgáltatási attribútumok és szolgáltatási műveletek —, és hogyan hat rájuk a prefetch és a regiszter-gyorsítótár.
A Modbus modulnak és minden eszközének több szkriptje van, és a Modbus függvények mindegyikben működnek. Az, hogy a szkriptek milyen gyakran futnak, és mely regisztereket olvassák a buszról, az eszköz lekérdezési intervallumától és prefetch módjától függ. Azt, hogy melyik szkript mikor fut és milyen változókat lát, részletesen a Modbus integráció írja le.
Modbus modulok és eszközök szkriptjei
Minden Modbus szkriptnek megvan a saját futási pillanata és jellemző tartalma.
| Szkript | Mikor fut | Jellemző tartalom |
|---|---|---|
| Inicializáló (modul, eszköz) | Egyszer, indulás után | MODBUSWNE a konfigurációs regiszterekhez. |
| Olvasó (modul, eszköz) | Minden lekérdezéskor | Riasztási regiszterek és ADDERROR. |
| Érték olvasó (eszköz) | Minden lekérdezéskor | MODBUSR és egy átalakítás. Az utolsó utasítás az eszköz értéke. |
| Érték író (eszköz) | Amikor az érték megváltozik, valamint Periodic write (időszakos írás) beállítás esetén minden lekérdezéskor | Az eszközváltozó MODBUSW írása, például az alapjelé. |
| Szolgáltatási attribútum | Amikor megnyílnak a szolgáltatási beállítások | Szöveggé alakított MODBUSR. |
| Szolgáltatási művelet | Amikor megnyomod a gombját | MODBUSW a művelet paramétereivel, amelyek a rövidítésükkel érhetők el. |
Megjegyzések
- A modulon vagy az eszközön definiált változók megtartják az értéküket a szkript futásai között — ezekkel adhatsz át értéket egy olvasó szkriptből egy szolgáltatási attribútumnak. A modulváltozók a Core 2026.1, build 39507 verziótól gyűjtemények is lehetnek.
- Az
ADDERROR,ADDWARNINGésADDINFOcsak ezen szkriptek némelyikében működik — lásd: ADDERROR.
Példa — hőmérséklet-érzékelő érték olvasó szkriptje
MODBUSR(H, 20, Int16) / 10;Példa — szolgáltatási művelet ID paraméterrel
MODBUSW(H, 20, Float, ID);Prefetch és a regiszter-gyorsítótár
A Modbus eszköz prefetch módja dönti el, hogy a szkriptjei a modul gyorsítótárából vagy a buszról olvassák a regisztereket.
| Mód | Hatás a szkriptekre |
|---|---|
| Normal | A szkriptek által használt regiszterek csoportosított kérésekben olvasódnak ki a szkriptek futása előtt. Ugyanazon regiszter kétszeri kiolvasása egy futáson belül egy tranzakcióba kerül. |
| Isolated | Mint a Normal, de az eszköz regiszterei nem vonódnak össze más eszközök regisztereivel. |
| No prefetch | Nincs gyorsítótár. Minden MODBUSR és MODBUSRBLOCK valódi tranzakció, a leírt sorrendben. |
Megjegyzések
- A No prefetch módot olyan eszközökhöz válaszd, amelyek pontos tranzakciósorrendet igényelnek; ilyenkor az egyszer kiolvasott értéket tárold változóban ahelyett, hogy újra kiolvasnád.
- Egyedi olvasások ciklusa helyett válassz egyetlen blokkolvasást — a
MODBUSRBLOCK(H, 100, 100)100 tranzakciót vált ki. - A
MODBUSWNEés aMODBUSWBLOCKNEa gyorsítótárban lévő értékkel hasonlít össze — lásd: MODBUSWNE. - A csoportosított kérések méretét és a prefetch módokat a Prefetch részben leírtak szerint állíthatod be.
Példa — egy blokk négy olvasás helyett
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);Lásd még — Modbus adattípusok, Példák.