TapHome

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)
LINEAR Function Graph

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);