Interpolácia a prahy
Lineárna interpolácia LINEAR a prahové spínanie HYSTERESIS na mapovanie hodnôt, stmievanie svetiel a riadenie kúrenia v skriptoch TapHome.
LINEAR prevedie hodnotu z jedného rozsahu do druhého po priamke. HYSTERESIS prepína medzi dvoma výstupnými hodnotami s pásmom necitlivosti, takže výstup okolo jedného prahu nepreskakuje sem a tam.
LINEAR
LINEAR mapuje hodnotu zo vstupného rozsahu do výstupného rozsahu po priamke prechádzajúcej dvoma bodmi, in1 → out1 a in2 → out2 — napríklad surovú hodnotu registra na percentá alebo denné svetlo na jas svietidla.
| |
Parametre
| Názov | Typ | Popis |
|---|---|---|
value | číslo | Vstupná hodnota. |
in1, out1 | číslo | Prvý bod: vstup in1 dá výstup out1. |
in2, out2 | číslo | Druhý bod: vstup in2 dá výstup out2. |
LinearType | enum, voliteľný | Čo sa stane, keď je value mimo rozsahu in1 – in2. |
LinearType | Výsledok mimo vstupného rozsahu |
|---|---|
DEFAULT (alebo vynechaný) | Rovnaké ako BOUNDS. Pri Core staršom ako 2022.2 extrapoluje ako INFINITE. |
BOUNDS | Hodnota sa obmedzí na rozsah, takže výsledok ostane medzi out1 a out2. |
STRICT | NaN. |
INFINITE | Priamka pokračuje ďalej (extrapolácia). |
Návratová hodnota — double. Vstup NaN dá NaN. Keď sa in1 rovná in2, sklon sa nedá vypočítať a namiesto neho sa použije 1.
Príklad — prepočet surovej hodnoty
# raw register 0 ... 1000 -> 0 ... 100 %
LINEAR(MODBUSR(H, 10, Uint16), 0, 0, 1000, 100);
VAR raw := 250;
LINEAR(raw, 0, 0, 500, 50);
# Result: 25Vplyv LinearType pre vstup 11 s bodmi 0 → 400 a 10 → 2000:
LINEAR(11, 0, 400, 10, 2000, BOUNDS);
# Result: 2000
LINEAR(11, 0, 400, 10, 2000, INFINITE);
# Result: 2160
LINEAR(11, 0, 400, 10, 2000, STRICT);
# Result: NaNPríklad — stmievanie: mapovanie hodnoty na jas svietidla
Úroveň stmievača je v TapHome od 0 do 1 (0 – 100 %). Tento vzorec stmieva svetlo z plného jasu za tmy až po vypnutie pri 300 lx denného svetla; BOUNDS drží úroveň medzi 0 a 1 aj pri jasnejších či tmavších hodnotách senzora:
# Va is the daylight sensor in lx, the result is the dimmer level
LINEAR(Va, 0, 1, 300, 0, BOUNDS);
# Result: 0.5 at 150 lx, 0 at 300 lx and moreKrivka stmievania, ktorá nikdy neklesne pod 10 % — hodnota posuvníka x od 0 do 1 sa mapuje na rozsah 0,1 – 1:
LINEAR(x, 0, 0.1, 1, 1);Rovnako to funguje pri vetraní: LINEAR(co2, 400, 0, 1200, 1) dá 0 pri 400 ppm, 0,5 (50 %) pri 800 ppm a 1 pri 1 200 ppm.
Pozrite aj — HYSTERESIS, Zaokrúhľovanie a náhodné čísla.
HYSTERESIS
HYSTERESIS vráti lowerState, keď hodnota klesne na lowerThreshold, upperState, keď stúpne na upperThreshold, a previousState, kým ostáva medzi nimi.
| |
Hysteréza filtruje signál tak, aby výstup reagoval pomalšie ako vstup: termostat zapne kúrenie, keď teplota klesne pod jednu hodnotu, ale vypne ho až vtedy, keď stúpne nad inú.
Parametre
| Názov | Typ | Popis |
|---|---|---|
value | číslo | Meraná hodnota, napríklad teplota. |
upperThreshold | číslo | Hodnota, pri ktorej a nad ktorou sa vráti upperState. Musí byť vyššia ako lowerThreshold. |
lowerThreshold | číslo | Hodnota, pri ktorej a pod ktorou sa vráti lowerState. |
upperState, lowerState | číslo | Výsledky pre oba prahy — ľubovoľné čísla, nielen 0 a 1. |
previousState | číslo | Výsledok, kým je hodnota medzi prahmi, zvyčajne predchádzajúci výstup. Nesmie byť Null. |
Návratová hodnota — double: upperState, lowerState alebo previousState. Hodnota, ktorá je od prahu vzdialená najviac 0,005, sa považuje za dosiahnutie prahu. Hodnota NaN vráti previousState.
Príklad — kúrenie
Miestnosť sa udržiava na 20 °C s hysterézou ±2 °C: kúrenie sa zapne, keď teplota klesne na 18 °C, a vypne, keď stúpne na 22 °C. V smart rule Skript sa spínač kúrenia číta aj zapisuje:
# Te is the room temperature, Sw the heater switch
Sw := HYSTERESIS(Te, 22, 18, 0, 1, Sw);V smart rule Vzorec je predchádzajúcim výsledkom LastState, ktorý je Null pri prvom spustení a po chybe skriptu:
HYSTERESIS(Te, 22, 18, 0, 1, IF(ISNULL(LastState), 0, LastState));Chyby
- Upper threshold must be higher than lower threshold — pri uložení skriptu, ktorého prahy sú pevné čísla.
- Upper threshold (X) must be higher than lower threshold (Y) — pri vykonávaní, keď prahy pochádzajú z premenných.
Pozrite aj — Skripty v smart rules, Riadenie plnenia nádrže s hysterézou.