TapHome

Interpolare și praguri

Funcțiile LINEAR (interpolare liniară) și HYSTERESIS (filtrare prin praguri) pentru maparea și condiționarea valorilor de intrare în scripturile TapHome.

LINEAR

Returnează valoarea ajustată liniar (interpolare liniară).

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

Parametri:

  • input… valoarea de intrare
  • value1_input… valoarea de intrare la limita inferioară
  • value1_output… valoarea de ieșire la limita inferioară
  • value2_input… valoarea de intrare la limita superioară
  • value2_output… valoarea de ieșire la limita superioară
  • [type]… parametru opțional. Definește care este rezultatul când valoarea de intrare se află în afara intervalului value1_input ↔︎ value2_input:
    • fără parametru (la fel ca parametrul BOUNDS)… Dacă valoarea de intrare este în afara intervalului definit, valoarea de ieșire va fi una dintre extreme (minimul sau maximul)
    • INFINITE… Dacă valoarea de intrare este în afara intervalului definit, rezultatul este o valoare extrapolată
    • STRICT… Dacă valoarea de intrare este în afara intervalului definit, valoarea de ieșire va fi NaN (not a number)
Graficul funcției LINEAR

Exemple

Example 1: LINEAR(250,  0,0,  500,50)   (Rezultatul este 25°C)

Example 2: LINEAR(Co2,  400,0,  1200,1)
          (Dacă valoarea de la senzorul de Co2 este 400ppm, ieșirea pentru ventilația cu recuperare de căldură va fi 0%. 
           Dacă Co2 este 1200, ieșirea va fi 100%. Iar dacă, de exemplu, Co2=800, ieșirea va fi 50%)

Exemple pentru diferite valori [type]:

  • input = 11
  • value1_input = 0, value1_output = 400
  • value2_input = 10, value2_output = 2000
  • rezultatul pentru diferite valori [type]:
    • BOUNDS (valoare implicită) = 2000
    • INFINITE = 2160
    • STRICT = NaN

HYSTERESIS

Histerezisul se poate folosi pentru filtrarea semnalelor, astfel încât ieșirea să reacționeze mai lent, ținând cont de istoricul recent al sistemului. De exemplu, un termostat care comandă un încălzitor poate porni încălzitorul când temperatura scade sub A, dar nu îl oprește până când temperatura nu crește peste B.

Returnează 0 sau 1.

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

Exemplu: menținerea temperaturii de 20 °C cu un histerezis de ±2 °C. Încălzitorul pornește când temperatura scade sub 18 °C și se oprește când temperatura depășește 22 °C.

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