Viacriadkový skriptovací jazyk so zvýraznením syntaxe, ktorý je možné použiť v pravidlách Equation, Formula a Script, ako aj v rozhraniach Modbus a Packet parser.

Základy
Priradenie
|
|
Viacriadkový algoritmus
Každý riadok je oddelený bodkočiarkou.
|
|
Vrátená hodnota
- Výsledok posledného riadku kódu
- RETURN(expression) ukončí vykonávanie algoritmu a vráti výraz v zátvorkách
|
|
Dočasná premenná
Existuje len počas jedného vykonania skriptu.
|
|
IF klauzula
Excel štýl
|
|
Viacriadkový štýl
|
|
SWITCH
Testuje výraz proti zoznamu prípadov a vráti hodnotu prvého zodpovedajúceho prípadu; ak žiadny nevyhovuje, vráti predvolenú hodnotu.
|
|
Príklad:
|
|

Slučka
LOOP / WHILE … opakuje sériu príkazov podľa zadanej podmienky, až kým sa táto podmienka nesplní. CONTINUE … preskočí vykonanie zvyšných príkazov v aktuálnom cykle a pokračuje ďalším cyklom. BREAK … ukončí slučku.
Príklad s podmienkou na začiatku:
|
|
Príklad s podmienkou na konci:
|
|
NaN (not a number) hodnota
NaN sa môže vrátiť v prípade, že skutočná hodnota nie je známa.
|
|
Funkcia ISNAN(expression) vráti TRUE, ak výraz nie je číslo.
ISNULL
Vráti true, ak je parameter NULL, inak false. Používa sa pre typy String a Bytearray. Príklad: ak sa XML element nenájde, návratová hodnota je NULL.
Syntax funkcie je:
|
|
Sleep
Pozastaví skript na daný počet milisekúnd. Používajte iba vo veľmi špecifických prípadoch.
|
|
Komentáre
Nový riadok začínajúci znakom #
|
|
Číselné literály
Hexadecimálne čísla
Výrazy môžu interpretovať aj hexadecimálne čísla. Prefix 0x je povinný a zvyšok nie je citlivý na veľkosť písmen.
0x0A = 10
|
|
Binárne čísla
0b1010 = 10
|
|
Matematické výrazy
+, -, *, /
|
|
Logické výrazy
AND, OR, !, =, !=, >, <
|
|
Funkcie
LINEAR
Vráti lineárne upravenú hodnotu – lineárnu interpoláciu.
|
|
Parametre
- input… vstupná hodnota
- value1_input… hodnota na vstupe na dolnej hranici
- value1_output… hodnota na výstupe na dolnej hranici
- value2_input… hodnota na vstupe na hornej hranici
- value2_output… hodnota na výstupe na hornej hranici
- [type]… voliteľný parameter. Definuje, aký má byť výsledok, keď je vstupná hodnota mimo rozsahu value1_input ↔︎ value2_input:
- bez parametra (rovnako ako s parametrom BOUNDS)… Ak je vstup mimo definovaného rozsahu, výstup bude jedna z krajností (minimálna alebo maximálna hodnota)
- INFINITE… Ak je vstup mimo definovaného rozsahu, výsledok je extrapolovaná hodnota
- STRICT… Ak je vstup mimo definovaného rozsahu, výstupná hodnota bude NaN (not a number)
Príklady
|
|
Príklady pre rôzne atribúty [type]:
- input = 11
- value1_input = 0, value1_output = 400
- value2_input = 10, value2_output = 2000
Výsledok pre rôzne parametre [type]:
- BOUNDS (predvolená hodnota) = 2000
- INFINITE = 2160
- STRICT = NaN
HYSTERÉZA
Hysteréza sa používa na filtrovanie signálov tak, aby výstup reagoval pomalšie, pričom zohľadňuje históriu systému. Napríklad termostat riadiaci vykurovanie môže zapnúť kúrenie, keď teplota klesne pod A, ale nevypnúť ho, kým teplota nestúpne nad B.
Vráti 0 alebo 1.
|
|
Príklad: udržiavať teplotu 20 °C v rámci hysterézy 2 °C. Zapnúť kúrenie, keď teplota klesne pod 18 °C a vypnúť, keď teplota presiahne 22 °C.
|
|
Matematické funkcie
MIN
Funkcia MIN vracia najmenšiu hodnotu zo zadaných numerických hodnôt. Prijíma medzi 1 a 100 argumentmi alebo jednu kolekciu. Hodnoty NaN a NULL sa ignorujú.
|
|
Príklady:
|
|
MINSTRICT
Funkcia MINSTRICT vracia minimum zo zadaných numerických hodnôt. Prijíma medzi 1 a 100 argumentmi alebo jednu kolekciu. Ak je niektorá zo zadaných hodnôt NaN alebo NULL, funkcia vráti NaN/NULL.
|
|
Príklady:
|
|
MAX
Funkcia MAX vráti maximum zo zadaných numerických hodnôt. Prijíma medzi 1 a 100 argumentmi alebo jednu kolekciu. Hodnoty NaN a NULL sa ignorujú.
|
|
Príklady:
|
|
MAXSTRICT
Funkcia MAXSTRICT vracia maximum zo zadaných numerických hodnôt. Prijíma medzi 1 a 100 argumentmi alebo jednu kolekciu. Ak je ktorákoľvek zo zadaných hodnôt NaN alebo NULL, funkcia vráti NaN/NULL.
|
|
Príklady:
|
|
AVG
Funkcia AVG vypočíta priemer (mean) zo zadaných numerických hodnôt. Prijíma medzi 1 a 100 argumentmi alebo jednu kolekciu. Hodnoty NaN sa ignorujú.
|
|
Príklady:
|
|
AVGSTRICT
Funkcia AVGSTRICT vypočíta priemer zo zadaných numerických hodnôt. Prijíma medzi 1 a 100 argumentmi alebo jednu kolekciu. Ak je niektorá zo zadaných hodnôt nie číslo, výsledok je NaN.
|
|
Príklady:
|
|
ROUND
|
|
Vráti zaokrúhlenú hodnotu.
|
|
ABS
Funkcia ABS vráti absolútnu hodnotu (t. j. modul) ľubovoľného zadaného čísla.
|
|
Príklady:
|
|
DEWPOINT
|
|
Vráti teplotu rosného bodu pre aktuálnu teplotu a relatívnu vlhkosť. Rosný bod sa počíta podľa tejto rovnice.
|
|
POWER
Funkcia POWER umocní dané číslo zadaným exponentom.
|
|
Príklady:
- POWER(2,3) … 2^3 = 8
- POWER(10, -3) … 0,001
- POWER(25, 0) … 1
MOD
Funkcia MOD vráti zvyšok z delenia dvoch čísel.
|
|
Argumenty:
- number - číslo, ktoré sa delí
- divisor - hodnota, ktorou sa číslo delí
Príklady:
- MOD(6, 4) … 2
- MOD(6, 2.5) … 1
CEIL
Funkcia CEIL zaokrúhľuje zadané číslo smerom od nuly na najbližší násobok zadanej významnosti.
|
|
Argumenty:
- number - číslo, ktoré sa má zaokrúhliť
- significance (optional) - násobok, na ktorý sa má číslo zaokrúhliť. Ak nie je uvedený, rovná sa 1. (Zvyčajne by mal mať rovnaké znamienko (kladné alebo záporné) ako zadané číslo.)
Príklady:
- CEIL(22.25,0.1) … 22.3
- CEIL(22.25,1) … 23
- CEIL(22.25) … 23
- CEIL(-22.25,-1) … -23
- CEIL(-22.25,1) … -22
- CEIL(-22.25) … -22
- CEIL(-22.25,-5) … -25
FLOOR
Funkcia FLOOR zaokrúhľuje zadané číslo smerom k nule na najbližší násobok zadanej významnosti.
|
|
Argumenty:
- number - číslo, ktoré sa má zaokrúhliť
- significance (optional) - násobok, na ktorý sa má číslo zaokrúhliť. Ak nie je uvedený, rovná sa 1. (Zvyčajne by mal mať rovnaké znamienko (kladné alebo záporné) ako zadané číslo.)
Príklady:
- FLOOR(22.25,0.1)… 22.2
- FLOOR(22.25,1) … 22
- FLOOR(22.25) … 22
- FLOOR(-22.25,-1) … -22
- FLOOR(-22.25,1) … -23
- FLOOR(-22.25) … -23
- FLOOR(-22.25,-5) … -20
RAND
Funkcia RAND generuje náhodné reálne číslo medzi 0 a 1.
|
|
Príklady:
- RAND()
RANDINT
Funkcia RANDINT generuje náhodné celé číslo medzi dvoma zadanými celými číslami.
|
|
Príklady:
- RANDINT(1,5)
- RANDINT(-2,2)
SIGN
Funkcia SIGN vráti aritmetické znamienko (+1, -1 alebo 0) zo zadaného čísla. T. j. ak je číslo kladné, SIGN vráti +1, ak je záporné, vráti -1 a ak číslo je 0, vráti 0.
|
|
Príklady:
- SIGN(100) … 1
- SIGN(0) … 0
- SIGN(-100) … -1
SQRT
Funkcia SQRT vypočíta kladnú druhú odmocninu zo zadaného čísla.
|
|
Príklady:
- SQRT(25) … 5
LOG
Funkcia LOG vypočíta logaritmus zadaného čísla so zadaným základom.
|
|
Argumenty:
- number - kladné reálne číslo, pre ktoré sa má logaritmus vypočítať
- base (optional) - voliteľný argument, ktorý špecifikuje základ logaritmu. Ak nie je uvedený, základ je predvolene 10.
Príklady:
- LOG(4,0.5) … -2
- LOG(100) … 2
LN
Funkcia LN vypočíta prirodzený logaritmus daného čísla.
|
|
kde number je kladné reálne číslo, pre ktoré sa má logaritmus vypočítať.
Príklady:
- LN(100) … 4,60517
Bitové operácie
GETBIT
Vráti hodnotu bitu na určenej pozícii.
|
|
Argumenty:
- number - číslo, z ktorého sa má hodnota konkrétneho bitu získať
- bit_position - pozícia bitu, počítaná od 0 sprava
Príklady:
- GETBIT(2, 0) → prvý bit čísla 2 (0b0010) je 0
- GETBIT(4,2) → tretí bit čísla 4 (0b0100) je 1
GETBITS
Vráti hodnotu určeného počtu bitov na zadanom mieste.
|
|
Príklady:
- GETBITS(216, 3, 2) → číslo 216 = 0b1101 1000; hodnota 4. bitu zľava je 1, 5. bitu je 1, takže výsledok je 0b0011 = 3
- GETBITS(0xFF, 0, 4) → číslo 0xFF = 255 = 0b1111 1111; hodnota prvých 4 bitov sprava je 0b1111 = 0xF = 15
GETBYTE
Vráti hodnotu bajtu v zadanom čísle.
|
|
Argumenty:
- number - číslo, z ktorého sa má hodnota konkrétneho bajtu získať
- byte_position - pozícia bajtu, počítaná od 0 sprava
Príklady:
|
|
SETBYTE
Priradí novú hodnotu špecifikovanému bajtu v zadanom čísle a vráti výsledné číslo.
|
|
Príklady:
|
|
SETBIT
Priradí novú hodnotu špecifikovanému bitu v čísle a vráti nové číslo.
|
|
Argumenty:
- number - číslo, ktoré sa má upraviť
- bit_position - pozícia bitu, počítaná od 0 sprava
- new_value - 0 alebo 1 – hodnota, ktorá sa má nastaviť na daný bit
Príklady:
- SETBIT(1, 1, 1) → 3
- SETBIT(3, 1, 1) → 3
- SETBIT(4, 2, 0) → 4
- SETBIT(12, 1, 0) → 14
SETBITS
Priradí novú hodnotu zadaným bitom v čísle a vráti nové číslo.
|
|
Príklady:
- SETBITS(192, 4, 2, 3) → 240
- SETBITS(192, 5, 2, 3) → 224
« (POSUN BITOV DOĽAVA)
|
|
Excel: BITLSHIFT(number, shift_amount)
» (POSUN BITOV DOPRAVA)
|
|
Excel: BITRSHIFT(number, shift_amount)
& (BITOVÉ AND)
|
|
Excel: BITAND(number1, number2)
| (BITOVÉ OR)
|
|
Excel: BITOR(number1, number2)
Pozrite si príklad bitových operácií v Google Sheets: https://docs.google.com/spreadsheets/d/1hF5FMpGMJbgYh-YLwWrq2n186_ATyGyLUb689__IhLY/edit?usp=sharing
Alebo vyskúšajte interaktívny nástroj na http://bitwisecmd.com/
Text, reťazec a bajtové pole
LENGTH
Vráti dĺžku objektu alebo počet bajtov. Objekt môže byť číslo, boolean, reťazec alebo kolekcia.
|
|
Príklady:
|
|
BYTECOLLECTION
Vytvorí Collection
|
|
Príklady:
|
|
INDEXOF
Vráti index zadaného prvku v reťazci alebo v kolekcii. Vráti -1, ak prvok nemožno nájsť.
|
|
Príklady:
|
|
COPY
Skopíruje zadaný reťazec alebo kolekciu (alebo ich časť).
|
|
Príklady:
|
|
REPLACE
Vráti nový reťazec alebo kolekciu, v ktorej sa všetky výskyty zadanej hodnoty nahradia novou hodnotou.
|
|
Príklady:
|
|
SPLIT
Rozdelí reťazec na podreťazce podľa zadaných separátorov.
|
|
Príklady:
|
|
COMPARE
Porovná dva reťazce a vráti celé číslo, ktoré udáva ich relatívne poradie.
|
|
Príklady:
|
|
APPEND
Pridá hodnotu do kolekcie alebo reťazca a vráti nový objekt s pridanou hodnotou.
|
|
Príklady:
|
|
INSERT
Vloží hodnotu do kolekcie alebo reťazca. Vráti kolekciu alebo reťazec s vloženou hodnotou.
|
|
Príklady:
|
|
REMOVEAT
Odstráni prvky z kolekcie alebo reťazca na základe indexu prvku a dĺžky. Vráti kolekciu alebo reťazec bez špecifikovaných prvkov.
|
|
Príklady:
|
|
GETAT
Získa hodnotu prvku z kolekcie alebo reťazca na základe zadaného indexu.
|
|
Príklady:
|
|
SETAT
Nastaví hodnotu prvku v kolekcii alebo reťazci na zadanom indexe.
|
|
Príklady:
|
|
ENCODE
Zakóduje zadaný reťazec pomocou jedného z formátov a vráti nový reťazec.
|
|
Podporované formáty:
- XML
- Base64
Príklady:
|
|
DECODE
Dekóduje zadaný reťazec pomocou jedného z formátov a vráti nový reťazec.
|
|
Podporované formáty:
- XML
- Base64
Príklady:
|
|
EQUALS
Porovná dve čísla s pohyblivou desatinnou čiarkou. Čísla sa považujú za rovné, ak | n1 - n2 | < epsilon. Predvolená hodnota prahu (*epsilon) je 0,005 a je voliteľným parametrom.
|
|
Príklady:
|
|
Triedenie
Existuje viacero variantov ORDER:
Vzostupne – ORDER, ORDERSTRICT – ORDERINDEX, ORDERINDEXSTRICT
Zostupne – ORDERDESC, ORDERDESCSTRICT – ORDERINDEXDESC, ORDERINDEXDESCSTRICT
ORDER
Funkcia ORDER triedi zadané vstupné hodnoty vzostupne a vráti ich v novej kolekcii. Prijíma n hodnôt (až 100 argumentov) alebo jednu kolekciu. Hodnoty nemusia byť numerické, ale musia byť porovnateľné (napr. čísla, TIMESPAN, DATETIME, reťazce). Zmiešané typy (napr. čísla a reťazce) nie sú povolené. Hodnoty NaN a NULL sa ignorujú a nie sú zahrnuté vo výslednej kolekcii.
|
|
Príklady:
|
|
ORDERINDEX
Funkcia ORDERINDEX triedi vstupné hodnoty vzostupne a namiesto hodnôt vráti kolekciu indexov, ktoré udávajú pozície pôvodných hodnôt v zoradenom poradí. Prijíma n hodnôt (až 100 argumentov) alebo jednu kolekciu. Hodnoty nemusia byť numerické, ale musia byť porovnateľné. Zmiešané typy nie sú povolené. Hodnoty NaN a NULL sa ignorujú a nie sú zahrnuté vo výslednej kolekcii.
|
|
Príklady:
|
|
ORDERSTRICT
Funkcia ORDERSTRICT triedi vstupné hodnoty vzostupne a vráti ich v novej kolekcii. Prijíma n hodnôt (až 100 argumentov) alebo jednu kolekciu. Hodnoty nemusia byť numerické, ale musia byť porovnateľné. Hodnoty NaN a NULL sú zahrnuté a sú vždy zoradené ako prvé.
|
|
Príklady:
|
|
ORDERINDEXSTRICT
Funkcia ORDERINDEXSTRICT triedi vstupné hodnoty vzostupne a namiesto hodnôt vráti kolekciu indexov, ktoré udávajú pozície pôvodných hodnôt v zoradenom poradí. Prijíma n hodnôt (až 100 argumentov) alebo jednu kolekciu. Hodnoty nemusia byť numerické, ale musia byť porovnateľné. Hodnoty NaN a NULL sú zahrnuté a sú vždy zoradené ako prvé.
|
|
Príklady:
|
|
ORDERDESC
Funkcia ORDERDESC triedi vstupné hodnoty zostupne a vráti ich v novej kolekcii. Hodnoty nemusia byť numerické, ale musia byť porovnateľné. Hodnoty NaN a NULL sa ignorujú a nie sú zahrnuté vo výslednej kolekcii.
|
|
Príklady:
|
|
ORDERINDEXDESC
Funkcia ORDERINDEXDESC triedi vstupné hodnoty zostupne a namiesto hodnôt vráti kolekciu indexov, ktoré udávajú pozície pôvodných hodnôt v zoradenom poradí. Hodnoty nemusia byť numerické, ale musia byť porovnateľné. Hodnoty NaN a NULL sa ignorujú a nie sú zahrnuté vo výslednej kolekcii.
|
|
Príklady:
|
|
ORDERDESCSTRICT
Funkcia ORDERDESCSTRICT triedi vstupné hodnoty zostupne a vráti ich v novej kolekcii. Prijíma n hodnôt (až 100 argumentov) alebo jednu kolekciu. Hodnoty nemusia byť numerické, ale musia byť porovnateľné. Hodnoty NaN a NULL sú zahrnuté a vždy sú zoradené ako prvé.
|
|
Príklady:
|
|
ORDERINDEXDESCSTRICT
Funkcia ORDERINDEXDESCSTRICT triedi vstupné hodnoty zostupne, podobne ako ORDERDESC, avšak namiesto zoradených hodnôt vráti kolekciu indexov, ktoré udávajú pozície pôvodných hodnôt v zoradenom poradí. Hodnoty nemusia byť numerické, ale musia byť porovnateľné. Hodnoty NaN a NULL sú zahrnuté a vždy sú zoradené ako prvé.
|
|
Príklady:
|
|
Dátum a čas
DATETIME
Vytvára objekt DateTime. Vlastnosť DateTime.Ticks je počet milisekúnd od 1.1.0001 00:00:00.000. DateTime má vlastnosti: TICKS, YEAR, MONTH, DAY, DAYOFWEEK, DAYOFYEAR, HOUR, MINUTE, SECOND, MILLISECOND, KIND, UTCDATETIME, LOCALDATETIME, UNIXTIME
|
|
Príklady:
|
|
NOW
Vráti objekt DateTime nastavený na aktuálny dátum a čas v lokálnom časovom pásme.
|
|
Príklady:
|
|
TIMESPAN
Funkcia TIMESPAN vytvorí premennú, ktorá predstavuje časové trvanie, uvedené v dňoch, hodinách, minútach, sekundách a milisekundách. TIMESPAN má vlastnosti na priamy prístup ku každej zložke časového intervalu: DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS. TIMESPAN má tiež vlastnosti na prístup k celkovej hodnote času v konkrétnych jednotkách (vrátane zlomkových hodnôt): TOTALDAYS, TOTALHOURS, TOTALMINUTES, TOTALSECONDS, TOTALMILLISECONDS.
|
|
Príklady:
|
|
LOCALTIMEZONE
Vráti lokálne časové pásmo ako počet milisekúnd od UTC času.
|
|
Príklady:
|
|
DATETIMEADD
Pridá špecifikovaný počet rokov, mesiacov, dní, hodín, minút, sekúnd a milisekúnd k existujúcemu DateTime a vráti nový DateTime.
|
|
Príklady:
|
|
Konverzie dátových typov
TODOUBLE
Konvertuje reťazec na číslo. Vráti NaN v prípade chyby.
|
|
Príklady:
|
|
TOSTRING
Vráti reťazcovú reprezentáciu zadanej hodnoty alebo kolekcie podľa zadaného kódovania. Kódovanie je voliteľné (štandardne sa používa iso-8859-1).
|
|
Príklady:
|
|
|
|
TOBCD
Prevádza zadané číslo do binárne kódovaného desiatkového čísla (BCD). Schéma kódovania je BCD-8421.
|
|
Príklady:
|
|
FROMBCD
Dekóduje zadané číslo, ktoré je zakódované v binárne kódovanom desiatkovom formáte (BCD). Schéma kódovania je BCD-8421.
|
|
Príklady:
|
|
TOBYTEARRAY
Prevádza reťazec na bajtové pole podľa zvoleného kódovania. Kódovanie je voliteľné (predvolené iso-8859-1).
|
|
Príklady:
|
|
RGBTOHSV
Prevádza definíciu farby z RGB a vráti farbu vo formáte Hue / Saturation / Brightness.
|
|
Príklad:
|
|
HSVTORGB
Konvertuje farbu definovanú pomocou Hue / Saturation / Brightness a vráti farbu v RGB formáte.
|
|
Príklad:
|
|
Parsovacie funkcie
PARSETEXT
Vráti časť vstupného textu na základe ľavých a pravých vyhľadávacích vzorov.
|
|
Príklady:
|
|
PARSEJSON
Vráti hodnotu prvku zo stringu vo formáte JSON. Prvok je určený pomocou JSON path.
|
|
Príklady:
S json =
|
|
|
|
PARSEXML
Vráti hodnotu prvku zo stringu XML. Prvok je určený pomocou XML path.
|
|
Príklady:
S xml=
|
|
|
|
Ak xml obsahuje názvové priestory, musíte úplne špecifikovať názvy prvkov s názvovými priestormi, napr. PARSEXML(xml, “//DIDL-Lite:container[dc:title=‘My Playlist’’]/DIDL-Lite:res”);
Paketový parser
Viac informácií nájdete na stránke o Packet parseri
SENDHTTPREQUEST
SENDDATA
MQTTPUBLISH
FTPDOWNLOAD
FTPUPLOAD
COMPLETESERVICEATTRIBUTE
COMPLETESERVICEACTION
Modbus
Modbus