TapHome

Logika és diagnosztika

TapHome szkriptfüggvények az ismeretlen értékekhez és az eszközök diagnosztikájához: ISNULL, ISNAN, EQUALS, SLEEP, ADDERROR, ADDWARNING, ADDINFO és DEBOUNCE.

Ezek a függvények megvizsgálják, hogy egy érték Null vagy NaN, tűréssel hasonlítanak össze tizedes számokat, szüneteltetik az eszköz szkriptjét, és üzeneteket jeleznek az eszközön. A NaN ismeretlen szám, a Null hiányzó érték — lásd Adattípusok. Az egyes függvényekhez szükséges legkisebb Core verzió a Verziókövetelmények oldalon található.

ISNULL

Az ISNULL akkor ad vissza TRUE értéket, ha az érték Null, vagyis hiányzik — ilyen például a LastState a Képlet smart rule első futásakor, vagy a hibák figyelmen kívül hagyásával hívott PARSEJSON, ha nem találja az útvonalat.

1
ISNULL(value)

Visszatérési érték — bool. Bármilyen típusú értéket elfogad. A NaN szám, nem hiányzó érték, ezért az ISNULL(NaN) értéke FALSE.

Példa

IF(ISNULL(LastState), 0, LastState);
# Result: 0 on the first run of a Formula smart rule, then the previous result

Lásd még — ISNAN, Szkriptek a smart rule-okban.

ISNAN

Az ISNAN akkor ad vissza TRUE értéket, ha egy szám NaN, vagyis ismeretlen érték — például egy hibás vagy még be nem olvasott eszköz értéke.

1
ISNAN(number)

Visszatérési érték — bool.

Megjegyzések — a NaN soha nem egyenlő semmivel. A NaN literállal való összehasonlítást, például az x = NaN kifejezést, a szkript mentésekor elutasítja. Az argumentumnak számnak kell lennie: az ISNAN(Null) futásidejű hibával leállítja a szkriptet, ezért ha az érték hiányozhat is, előbb az ISNULL függvénnyel vizsgáld.

Példa — 0 beírása, ha az eszköz hibában van vagy NaN értéket ad vissza

Az IF(ISNAN(x), 0, x) segítségével akkor is számot adsz tovább, ha a forráseszköz hibában van:

IF(ISNAN(x), 0, x);
# Result: 0 while the device is in error or returns NaN, otherwise x

Ha az érték Null is lehet, azt vizsgáld először — az OR nem értékeli ki a jobb oldalát, ha a bal oldal már TRUE:

IF(ISNULL(value) OR ISNAN(value), 0, value);

Hibák — Comparison with NaN is always false. Use the IsNaN method to check for NaN value. (a szkript mentésekor).

Lásd még — ISNULL, EQUALS.

EQUALS

Az EQUALS akkor ad vissza TRUE értéket, ha két szám legfeljebb egy tűréshatárral (epsilon, alapértelmezetten 0.005) tér el egymástól; tizedes értékeknél, például hőmérsékleteknél, az = helyett ezt használd.

1
2
EQUALS(number1, number2)
EQUALS(number1, number2, epsilon)

Paraméterek

NévTípusLeírás
number1, number2számAz összehasonlítandó értékek.
epsilonszám, nem kötelezőA legnagyobb eltérés, amely még egyenlőnek számít. Alapértelmezés: 0.005.

Visszatérési érték — bool. Két NaN érték egyenlőnek számít, ezért az EQUALS(NaN, NaN) értéke TRUE. A Null argumentum futásidejű hibát okoz.

Példa

EQUALS(21.499, 21.5);
# Result: TRUE
EQUALS(21.4, 21.5, 0.01);
# Result: FALSE
EQUALS(NaN, NaN);
# Result: TRUE

SLEEP

A SLEEP a megadott számú ezredmásodpercre (0 – 10 000) szünetelteti a Modbus vagy Packet parser szkriptet, és ezt a számot adja vissza.

1
SLEEP(milliseconds)

Megjegyzések — amíg a szkript vár, a modul nem kérdezi le az eszközeit, ezért a szünet legyen rövid, jellemzően annyi, amennyi időt az eszköz két írás között igényel.

Példa

MODBUSW(H, 100, Uint16, 1);
SLEEP(200);
MODBUSW(H, 101, Uint16, 1);

Hibák

  • SLEEP function not allowed in this context. — a szkript egy smart rule-hoz (Egyenlet, Képlet vagy Szkript) vagy egy értesítéshez tartozik; nem menthető.
  • Interval ‘X’ is out of range (0-10000) — futás közben.

Elérhetőség — Modbus és Packet parser szkriptek.

ADDERROR, ADDWARNING, ADDINFO

Az ADDERROR, az ADDWARNING és az ADDINFO hibát, figyelmeztetést vagy tájékoztató üzenetet jelenít meg az eszközön a TapHome alkalmazásban, és TRUE értéket ad vissza.

1
2
3
4
5
6
ADDERROR(text)
ADDERROR(code, text)
ADDWARNING(text)
ADDWARNING(code, text)
ADDINFO(text)
ADDINFO(code, text)

Paraméterek

NévTípusLeírás
codeegész szám, nem kötelezőAz üzenet azonosítója. A különböző kódú üzenetek egymás mellett jelennek meg; az azonos kódú új üzenet, vagy egy második kód nélküli üzenet felváltja az előzőt.
textstringAz alkalmazásban megjelenő üzenet.

Megjegyzések — az üzenetek minden futáskor újra kiértékelődnek: az üzenet eltűnik, amint a szkript egy futása már nem jelzi.

Példa

VAR alarm := MODBUSR(H, 599, Uint16);
IF(alarm > 0, ADDERROR("There are " + alarm + " active alarms"));
IF(GETBIT(MODBUSR(H, 600, Uint16), 0) = 1, ADDERROR(1, "Alarm 1 active"));
IF(GETBIT(MODBUSR(H, 600, Uint16), 1) = 1, ADDWARNING(2, "Filter change due"));

Hibák — ADDERROR function not supported here. (vagy ADDWARNING, ADDINFO) minden olyan szkriptben, amely nem szerepel az Elérhetőség alatt.

Elérhetőség — a Modbus modulok és eszközök olvasó szkriptjei; a Packet parser olvasó, író és listener szkriptjei. Nem érhető el a Modbus író és inicializáló szkriptjeiben, egyik integráció szolgáltatási attribútumaiban és szolgáltatási műveleteiben sem, valamint a smart rule-okban és az értesítésekben.

Lásd még — Modbus függvények, Packet parser függvények.

DEBOUNCE

A DEBOUNCE a megadott számú ezredmásodpercig figyelmen kívül hagyja egy eszközérték eszközről beolvasott értékeit, és az idő leteltekor újra ellenőrzi az értéket; az eszközre történő írásokat nem érinti.

1
DEBOUNCE(deviceVariable, milliseconds)

Paraméterek

NévTípusLeírás
deviceVariableeszközváltozóAz eszközérték rövidítése, például St. Kifejezést nem fogad el.
millisecondsszámAz ablak hossza, 0 vagy több.

Visszatérési érték — az intervallum. Pergésmentesítő szűrő nélküli eszközértéken a hívás nem csinál semmit.

Példa

DEBOUNCE(St, 500);

Hibák

  • DEBOUNCE - Function is not available — a szkript nem az Elérhetőség alatt felsorolt eszközszkriptek egyike.
  • DEBOUNCE - invalid argument, must be a device variable

Elérhetőség — Core 2026.1, build 36599 és újabb · a Modbus eszközök olvasó és író szkriptjei, a Packet parser olvasó, író és listener szkriptjei.