TapHome

Interpolácia a prahy

Funkcie LINEAR (lineárna interpolácia) a HYSTERESIS (prahové filtrovanie) na mapovanie a úpravu vstupných hodnôt v TapHome skriptoch.

LINEAR

Vráti lineárne upravenú hodnotu – lineárnu interpoláciu.

LINEAR(input, value1_input, value1_output, value2_input, value2_output, [type])

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)
LINEAR Funkčný graf

Príklady

Example 1: LINEAR(250,  0,0,  50,500)   (Výsledok je 25°C)

Example 2: LINEAR(Co2,  400,0,  1200,1)
          (Ak je hodnota zo senzora Co2 400ppm, výstup pre návrat vzduchu bude 0%. 
           Ak je Co2 1200, výstup bude 100%. A ak napr. Co2=800, výstup bude 50%)

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.

HYSTERESIS(value, upper_bound, lower_bound, upper_output, lower_output, last_value)

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.

heater := HYSTERESIS(temperature,   22, 18,   0, 1,   heater);