Dokumentace
Interpolace a prahy
Funkce LINEAR pro lineární interpolaci a HYSTERESIS pro prahové filtrování pro mapování a úpravu vstupních hodnot ve skriptech TapHome.
LINEAR
Vrací lineárně upravenou hodnotu – lineární interpolaci.
LINEAR(input, value1_input, value1_output, value2_input, value2_output, [type])Parametry
- input… vstupní hodnota
- value1_input… hodnota na vstupu na dolní hranici
- value1_output… hodnota na výstupu na dolní hranici
- value2_input… hodnota na vstupu na horní hranici
- value2_output… hodnota na výstupu na horní hranici
- [type]… volitelný parametr. Definuje, jaký má být výsledek, když je vstupní hodnota mimo rozsah value1_input ↔︎ value2_input:
- bez parametru (stejné jako s parametrem BOUNDS)… Pokud je vstupní hodnota mimo definovaný rozsah, výstupní hodnota bude jedna z krajních hodnot (minimum nebo maximum)
- INFINITE… Pokud je vstupní hodnota mimo definovaný rozsah, výsledek je extrapolovaná hodnota
- STRICT… Pokud je vstupní hodnota mimo definovaný rozsah, výstupní hodnota bude NaN (not a number)
Příklady
Example 1: LINEAR(250, 0,0, 50,500) (Výsledek je 25°C)
Example 2: LINEAR(Co2, 400,0, 1200,1)
(Pokud je hodnota ze senzoru Co2 400ppm, výstup pro návrat vzduchu bude 0%.
Pokud je Co2 1200, výstup bude 100%. A pokud např. Co2=800, výstup bude 50%)Příklady pro různé hodnoty [type]:
- input = 11
- value1_input = 0, value1_output = 400
- value2_input = 10, value2_output = 2000
Výsledek pro různé parametry [type]:
- BOUNDS (výchozí hodnota) = 2000
- INFINITE = 2160
- STRICT = NaN
HYSTERESIS
Hysteresi lze použít k filtrování signálů tak, aby výstup reagoval pomaleji, než by jinak reagoval, a zohledňoval přitom historii systému. Například termostat řídící topení může zapnout topení, když teplota klesne pod A, ale nevypne ho, dokud teplota nestoupne nad B.
Vrací 0 nebo 1.
HYSTERESIS(value, upper_bound, lower_bound, upper_output, lower_output, last_value)Příklad: udržovat teplotu 20 °C v rozsahu hystereze 2 °C. Zapnout topení, když teplota klesne pod 18 °C a vypnout, když překročí 22 °C.
heater := HYSTERESIS(temperature, 22, 18, 0, 1, heater);