Logika a diagnostika
Funkce skriptu TapHome pro neznámé hodnoty a diagnostiku zařízení: ISNULL, ISNAN, EQUALS, SLEEP, ADDERROR, ADDWARNING, ADDINFO a DEBOUNCE.
Tyto funkce testují hodnoty na Null a NaN, porovnávají desetinná čísla s tolerancí, pozastavují skript zařízení a hlásí zprávy na zařízení. NaN je neznámé číslo, Null je chybějící hodnota — viz Datové typy. Minimální verze Core pro každou funkci je uvedena v Požadavcích na verzi.
ISNULL
ISNULL vrátí TRUE, když je hodnota Null, tedy chybějící hodnota — například LastState při prvním běhu smart rule Vzorec nebo PARSEJSON s ignorováním chyb, když cesta nebyla nalezena.
| |
Vrací — bool. Přijme hodnotu libovolného typu. NaN je číslo, ne chybějící hodnota, takže ISNULL(NaN) je FALSE.
Příklad
IF(ISNULL(LastState), 0, LastState);
# Result: 0 on the first run of a Formula smart rule, then the previous resultViz také — ISNAN, Skripty ve smart rules.
ISNAN
ISNAN vrátí TRUE, když je číslo NaN, tedy neznámá hodnota — například hodnota zařízení, které je v chybě nebo ještě nebylo přečteno.
| |
Vrací — bool.
Poznámky — NaN se nikdy ničemu nerovná. Porovnání s literálem NaN, například x = NaN, je odmítnuto už při uložení skriptu. Argument musí být číslo: ISNAN(Null) zastaví skript chybou za běhu, proto když může hodnota i chybět, testujte nejprve ISNULL.
Příklad — zápis 0, když je zařízení v chybě nebo vrací NaN
Pomocí IF(ISNAN(x), 0, x) předáte číslo dál, i když je zdrojové zařízení v chybě:
IF(ISNAN(x), 0, x);
# Result: 0 while the device is in error or returns NaN, otherwise xKdyž může být hodnota i Null, ověřte to nejprve — OR nevyhodnotí pravou stranu, když je levá už TRUE:
IF(ISNULL(value) OR ISNAN(value), 0, value);Chyby — Comparison with NaN is always false. Use the IsNaN method to check for NaN value. (při uložení skriptu).
EQUALS
EQUALS vrátí TRUE, když se dvě čísla liší nejvýše o toleranci (epsilon, výchozí 0.005); použijte ho místo = u desetinných hodnot, jako jsou teploty.
| |
Parametry
| Název | Typ | Popis |
|---|---|---|
number1, number2 | number | Porovnávané hodnoty. |
epsilon | number, nepovinný | Největší rozdíl, který se ještě počítá jako shoda. Výchozí 0.005. |
Vrací — bool. Dvě hodnoty NaN se považují za shodné, takže EQUALS(NaN, NaN) je TRUE. Argument Null je chyba za běhu.
Příklad
EQUALS(21.499, 21.5);
# Result: TRUE
EQUALS(21.4, 21.5, 0.01);
# Result: FALSE
EQUALS(NaN, NaN);
# Result: TRUESLEEP
SLEEP pozastaví skript Modbus nebo Packet parser na zadaný počet milisekund (0 – 10 000) a toto číslo vrátí.
| |
Poznámky — Zatímco skript čeká, modul nedotazuje svá zařízení, proto pauzu držte krátkou, typicky jako mezeru, kterou zařízení potřebuje mezi dvěma zápisy.
Příklad
MODBUSW(H, 100, Uint16, 1);
SLEEP(200);
MODBUSW(H, 101, Uint16, 1);Chyby
- SLEEP function not allowed in this context. — skript patří ke smart rule (Rovnice, Vzorec nebo Skript) nebo k oznámení; nelze ho uložit.
- Interval ‘X’ is out of range (0-10000) — za běhu.
Dostupnost — skripty Modbus a Packet parser.
ADDERROR, ADDWARNING, ADDINFO
ADDERROR, ADDWARNING a ADDINFO zobrazí na zařízení v aplikaci TapHome chybu, varování nebo informační zprávu a vrátí TRUE.
| |
Parametry
| Název | Typ | Popis |
|---|---|---|
code | celé číslo, nepovinný | Identifikuje zprávu. Zprávy s různými kódy se zobrazují vedle sebe; nová zpráva se stejným kódem nebo druhá zpráva bez kódu nahradí tu předchozí. |
text | string | Zpráva zobrazená v aplikaci. |
Poznámky — Zprávy se vyhodnocují při každém běhu: zpráva zmizí, jakmile ji běh skriptu přestane vyvolávat.
Příklad
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"));Chyby — ADDERROR function not supported here. (nebo ADDWARNING, ADDINFO) v jakémkoli skriptu, který není uveden v části Dostupnost.
Dostupnost — skripty pro čtení modulů a zařízení Modbus; skripty pro čtení, zápis a listener skripty modulu Packet parser. Ne ve skriptech Modbus pro zápis a inicializaci, v servisních atributech a servisních akcích obou integrací, ve smart rules ani v oznámeních.
Viz také — Funkce Modbus, Funkce Packet parser.
DEBOUNCE
DEBOUNCE po zadaný počet milisekund ignoruje hodnoty, které se pro jednu hodnotu zařízení přečtou ze zařízení, a po uplynutí této doby hodnotu zkontroluje znovu; zápisů do zařízení se netýká.
| |
Parametry
| Název | Typ | Popis |
|---|---|---|
deviceVariable | proměnná zařízení | Zkratka hodnoty zařízení, například St. Výraz není přijat. |
milliseconds | number | Délka okna, 0 nebo více. |
Vrací — interval. U hodnoty zařízení bez filtru zákmitů volání nic neudělá.
Příklad
DEBOUNCE(St, 500);Chyby
- DEBOUNCE - Function is not available — skript není skriptem zařízení uvedeným v části Dostupnost.
- DEBOUNCE - invalid argument, must be a device variable
Dostupnost — Core 2026.1, sestavení 36599 a novější · skripty Modbus pro čtení a zápis zařízení, skripty Packet parser pro čtení a zápis a listener skripty.