TapHome

Interpolation und Schwellenwerte

LINEAR (lineare Interpolation) und HYSTERESIS (Schwellenwert-Filterung) zum Abbilden und Aufbereiten von Eingabewerten in TapHome-Skripten.

LINEAR

Gibt einen linear skalierten Wert zurück – lineare Interpolation.

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

Parameter

  • input … Eingabewert
  • value1_input … Wert am Eingang am unteren Rand
  • value1_output … Wert am Ausgang am unteren Rand
  • value2_input … Wert am Eingang am oberen Rand
  • value2_output … Wert am Ausgang am oberen Rand
  • [type] … optionaler Parameter. Legt fest, wie das Ergebnis aussehen soll, wenn der Eingabewert außerhalb des Bereichs value1_input ↔︎ value2_input liegt:
    • ohne Parameter (entspricht BOUNDS) … Wenn der Eingabewert außerhalb des definierten Bereichs liegt, wird der Ausgabewert auf einen der Endwerte (Minimum oder Maximum) gesetzt.
    • INFINITE … Wenn der Eingabewert außerhalb des definierten Bereichs liegt, wird ein extrapolierter Wert zurückgegeben.
    • STRICT … Wenn der Eingabewert außerhalb des definierten Bereichs liegt, wird der Ausgabewert NaN (not a number).
LINEAR Function Graph

Beispiele

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

Beispiele für verschiedene [type]-Attribute:

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

Ergebnis für verschiedene [type]-Parameter:

  • BOUNDS (Standardwert) = 2000
  • INFINITE = 2160
  • STRICT = NaN

HYSTERESIS

Hysterese kann verwendet werden, um Signale zu filtern, sodass die Ausgabe langsamer reagiert, indem sie die jüngere Systemhistorie berücksichtigt. Zum Beispiel könnte ein Thermostat, der eine Heizung steuert, die Heizung einschalten, wenn die Temperatur unter A fällt, die Heizung aber erst ausschalten, wenn die Temperatur über B steigt.

Gibt 0 oder 1 zurück.

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

Beispiel: Halten Sie eine Temperatur von 20 °C mit einer Hysterese von 2 °C. Schalten Sie die Heizung ein, wenn die Temperatur unter 18 °C fällt, und aus, wenn sie 22 °C überschreitet.

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