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.
| |
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 resultVidi 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.
| |
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 xKada 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.
| |
Parametri
| Naziv | Tip | Opis |
|---|---|---|
number1, number2 | broj | Vrijednosti za usporedbu. |
epsilon | broj, neobavezno | Najveć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: TRUESLEEP
SLEEP pauzira skriptu Modbus ili Packet parser na zadani broj milisekundi (0 – 10 000) i vraća taj broj.
| |
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.
| |
Parametri
| Naziv | Tip | Opis |
|---|---|---|
code | cijeli broj, neobavezno | Označava poruku. Poruke s različitim kodovima prikazuju se jedna pokraj druge; nova poruka s istim kodom ili druga poruka bez koda zamjenjuje prethodnu. |
text | string | Poruka 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.
| |
Parametri
| Naziv | Tip | Opis |
|---|---|---|
deviceVariable | varijabla uređaja | Kratica vrijednosti uređaja, na primjer St. Izraz se ne prihvaća. |
milliseconds | broj | Duljina 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.