TapHome

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.

SzkriptMikor futJellemző tartalom
Inicializáló (modul, eszköz)Egyszer, indulás utánMODBUSWNE a konfigurációs regiszterekhez.
Olvasó (modul, eszköz)Minden lekérdezéskorRiasztási regiszterek és ADDERROR.
Érték olvasó (eszköz)Minden lekérdezéskorMODBUSR é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éskorAz eszközváltozó MODBUSW írása, például az alapjelé.
Szolgáltatási attribútumAmikor megnyílnak a szolgáltatási beállításokSzöveggé alakított MODBUSR.
Szolgáltatási műveletAmikor megnyomod a gombjátMODBUSW 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 és ADDINFO csak 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ódHatás a szkriptekre
NormalA 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.
IsolatedMint a Normal, de az eszköz regiszterei nem vonódnak össze más eszközök regisztereivel.
No prefetchNincs 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 a MODBUSWBLOCKNE a 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.