TapHome

Interpolacja i progi

Funkcje LINEAR (interpolacja liniowa) i HYSTERESIS (filtrowanie progowe) do mapowania i kondycjonowania wartości wejściowych w skryptach TapHome.

LINEAR

Zwraca wartość przekształconą liniowo – interpolacja liniowa.

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

Parametry

  • input… wartość wejściowa
  • value1_input… wartość wejściowa na dolnym ograniczeniu
  • value1_output… wartość wyjściowa na dolnym ograniczeniu
  • value2_input… wartość wejściowa na górnym ograniczeniu
  • value2_output… wartość wyjściowa na górnym ograniczeniu
  • [type]… parametr opcjonalny. Definiuje, jaki ma być wynik, gdy wartość wejściowa wyjdzie poza zakres value1_input ↔︎ value2_input:
    • bez parametru (taki sam efekt jak BOUNDS)… jeśli wartość wejściowa wyjdzie poza zdefiniowany zakres, wartość wyjściowa będzie jedną z wartości skrajnych (minimalną lub maksymalną)
    • INFINITE… jeśli wartość wejściowa wyjdzie poza zdefiniowany zakres, wynik to wartość ekstrapolowana
    • STRICT… jeśli wartość wejściowa wyjdzie poza zdefiniowany zakres, wartość wyjściowa będzie NaN
LINEAR Function Graph

Przykłady

Example 1: LINEAR(250,  0,0,  50,500)   (Result is 25°C)

Example 2: LINEAR(Co2,  400,0,  1200,1)
          (If value from Co2 sensor is 400ppm, output for air recovery will be 0%. 
           If Co2 is 1200, output will be 100%. And if e.g. Co2=800, output will be 50%)

Przykład dla różnych atrybutów [type]:

  • input = 11
  • value1_input = 0, value1_output = 400
  • value2_input = 10, value2_output = 2000

Wynik dla różnych parametrów [type]:

  • BOUNDS (domyślna wartość) = 2000
  • INFINITE = 2160
  • STRICT = NaN

HYSTERESIS

Histereza może być używana do filtrowania sygnałów tak, aby reakcja wyjścia była wolniejsza, z uwzględnieniem historii systemu. Na przykład termostat zarządzający grzejnikiem może włączać grzejnik, gdy temperatura spadnie poniżej A, ale nie wyłączać go, dopóki temperatura nie wzrośnie powyżej B.

Zwraca 0 lub 1.

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

Przykład: utrzymanie temperatury 20 °C w zakresie histerezy 2 °C. Włączaj grzejnik, gdy temperatura spadnie poniżej 18 °C i wyłączaj, gdy temperatura przekroczy 22 °C.

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