TapHome

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.

1
ISNULL(value)

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 result

Viz 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.

1
ISNAN(number)

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 x

Když 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).

Viz také — ISNULL, EQUALS.

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.

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

Parametry

NázevTypPopis
number1, number2numberPorovnávané hodnoty.
epsilonnumber, 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: TRUE

SLEEP

SLEEP pozastaví skript Modbus nebo Packet parser na zadaný počet milisekund (0 – 10 000) a toto číslo vrátí.

1
SLEEP(milliseconds)

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.

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

Parametry

NázevTypPopis
codecelé čí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í.
textstringZprá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á.

1
DEBOUNCE(deviceVariable, milliseconds)

Parametry

NázevTypPopis
deviceVariableproměnná zařízeníZkratka hodnoty zařízení, například St. Výraz není přijat.
millisecondsnumberDé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.