TapHome

Logika i dijagnostika

Funkcije skripte TapHome za nepoznate vrijednosti i dijagnostiku uređaja: ISNULL, ISNAN, EQUALS, SLEEP, ADDERROR, ADDWARNING, ADDINFO i DEBOUNCE.

Ove funkcije provjeravaju vrijednosti Null i NaN, uspoređuju decimalne brojeve s tolerancijom, pauziraju skriptu uređaja i prikazuju poruke na uređaju. NaN je nepoznati broj, Null je vrijednost koja nedostaje — vidi Tipovi podataka. Najniža verzija Core za svaku funkciju navedena je u Zahtjevima za verziju.

ISNULL

ISNULL vraća TRUE kada je vrijednost Null, odnosno kada nedostaje — na primjer LastState pri prvom izvršavanju smart rule Formula ili PARSEJSON s ignoriranjem pogrešaka kada putanja nije pronađena.

1
ISNULL(value)

Vraća — bool. Prihvaća se vrijednost bilo kojeg tipa. NaN je broj, a ne vrijednost koja nedostaje, pa je ISNULL(NaN) jednako FALSE.

Primjer

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

Vidi također — ISNAN, Skripte u smart rules.

ISNAN

ISNAN vraća TRUE kada je broj NaN, odnosno nepoznata vrijednost — na primjer vrijednost uređaja koji je u pogrešci ili još nije očitan.

1
ISNAN(number)

Vraća — bool.

Napomene — NaN nikad nije jednak ničemu. Usporedba s literalom NaN, kao x = NaN, odbija se pri spremanju skripte. Argument mora biti broj: ISNAN(Null) zaustavlja skriptu pogreškom pri izvršavanju, pa kada vrijednost može i nedostajati, najprije provjerite ISNULL.

Primjer — upis 0 kada je uređaj u pogrešci ili vraća NaN

IF(ISNAN(x), 0, x) koristite za prosljeđivanje broja i dok je izvorni uređaj u pogrešci:

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

Kada vrijednost može biti i Null, najprije provjerite to — OR ne izračunava desnu stranu kada je lijeva strana već TRUE:

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

Pogreške — Comparison with NaN is always false. Use the IsNaN method to check for NaN value. (pri spremanju skripte).

Vidi također — ISNULL, EQUALS.

EQUALS

EQUALS vraća TRUE kada se dva broja razlikuju najviše za toleranciju (epsilon, zadano 0.005); koristite ga umjesto = za decimalne vrijednosti kao što su temperature.

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

Parametri

NazivTipOpis
number1, number2brojVrijednosti za usporedbu.
epsilonbroj, neobaveznoNajveća razlika koja se još smatra jednakošću. Zadano 0.005.

Vraća — bool. Dvije vrijednosti NaN smatraju se jednakima, pa je EQUALS(NaN, NaN) jednako TRUE. Argument Null je pogreška pri izvršavanju.

Primjer

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

SLEEP

SLEEP pauzira skriptu Modbus ili Packet parser na zadani broj milisekundi (0 – 10 000) i vraća taj broj.

1
SLEEP(milliseconds)

Napomene — Dok skripta čeka, modul ne ispituje svoje uređaje, pa pauzu držite kratkom, obično koliko uređaj treba između dvaju upisa.

Primjer

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

Pogreške

  • SLEEP function not allowed in this context. — skripta pripada smart rule (Jednadžba, Formula ili Skripta) ili obavijesti; ne može se spremiti.
  • Interval ‘X’ is out of range (0-10000) — pri izvršavanju.

Dostupno — skripte Modbus i Packet parser.

ADDERROR, ADDWARNING, ADDINFO

ADDERROR, ADDWARNING i ADDINFO na uređaju u aplikaciji TapHome prikazuju poruku o pogrešci, upozorenje ili informativnu poruku i vraćaju TRUE.

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

Parametri

NazivTipOpis
codecijeli broj, neobaveznoOznačava poruku. Poruke s različitim kodovima prikazuju se jedna pokraj druge; nova poruka s istim kodom ili druga poruka bez koda zamjenjuje prethodnu.
textstringPoruka prikazana u aplikaciji.

Napomene — Poruke se izračunavaju pri svakom izvršavanju: poruka nestaje čim je izvršavanje skripte više ne prijavljuje.

Primjer

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

Pogreške — ADDERROR function not supported here. (ili ADDWARNING, ADDINFO) u svakoj skripti koja nije navedena pod Dostupno.

Dostupno — skripte za čitanje modula i uređaja Modbus; skripte za čitanje i pisanje te listener skripte modula Packet parser. Ne u skriptama za pisanje i inicijalizacijskim skriptama Modbus, servisnim atributima i servisnim radnjama obiju integracija, smart rules ni obavijestima.

Vidi također — Funkcije Modbus, Funkcije Packet parsera.

DEBOUNCE

DEBOUNCE tijekom zadanog broja milisekundi zanemaruje ono što se za jednu vrijednost uređaja očita s uređaja, a nakon isteka tog vremena vrijednost ponovno provjerava; na upise u uređaj ne utječe.

1
DEBOUNCE(deviceVariable, milliseconds)

Parametri

NazivTipOpis
deviceVariablevarijabla uređajaKratica vrijednosti uređaja, na primjer St. Izraz se ne prihvaća.
millisecondsbrojDuljina razdoblja, 0 ili više.

Vraća — interval. Na vrijednosti uređaja bez filtra titranja poziv ne radi ništa.

Primjer

DEBOUNCE(St, 500);

Pogreške

  • DEBOUNCE - Function is not available — skripta nije skripta uređaja navedena pod Dostupno.
  • DEBOUNCE - invalid argument, must be a device variable

Dostupno — Core 2026.1, build 36599 i noviji · skripte za čitanje i pisanje uređaja Modbus, skripte za čitanje i pisanje te listener skripte modula Packet parser.