Interpolazione e soglie
Funzioni di interpolazione lineare LINEAR e di filtraggio a soglia HYSTERESIS per mappare e condizionare i valori di ingresso negli script TapHome.
LINEAR
Restituisce un valore regolato linearmente – interpolazione lineare.
LINEAR(input, value1_input, value1_output, value2_input, value2_output, [type])Parametri
- input… valore in ingresso
- value1_input… valore all’ingresso al limite inferiore
- value1_output… valore all’uscita al limite inferiore
- value2_input… valore all’ingresso al limite superiore
- value2_output… valore all’uscita al limite superiore
- [type]… parametro opzionale. Definisce cosa accade al risultato quando il valore in ingresso è fuori dall’intervallo value1_input ↔︎ value2_input:
- senza parametro (uguale a BOUNDS)… Se il valore in ingresso è fuori dall’intervallo definito, il valore in uscita sarà uno degli estremi (minimo o massimo)
- INFINITE… Se il valore in ingresso è fuori dall’intervallo definito, il risultato è un valore di estrapolazione
- STRICT… Se il valore in ingresso è fuori dall’intervallo definito, il valore in uscita sarà NaN (non è un numero)
Esempi
Example 1: LINEAR(250, 0,0, 50,500) (Risultato è 25°C)
Example 2: LINEAR(Co2, 400,0, 1200,1)
(Se il valore dal sensore Co2 è 400ppm, l'output per il recupero aria sarà 0%.
Se Co2 è 1200, l'output sarà 100%. E se, ad esempio, Co2=800, l'output sarà 50%)Esempi per differenti attributi [type]:
- input = 11
- value1_input = 0, value1_output = 400
- value2_input = 10, value2_output = 2000
- risultato per differenti parametri [type]:
- BOUNDS (valore di default) = 2000
- INFINITE = 2160
- STRICT = NaN
HYSTERESIS
L’isteresi può essere utilizzata per filtrare segnali in modo che l’uscita reagisca meno rapidamente di quanto farebbe altrimenti, tenendo in considerazione la storia recente del sistema. Ad es. un termostato che controlla un riscaldatore può accendere il riscaldatore quando la temperatura scende al di sotto di A, ma non spegnerlo finché la temperatura non sale oltre B.
Restituisce 0 o 1.
HYSTERESIS(value, upper_bound, lower_bound, upper_output, lower_output, last_value)Esempio: mantenere una temperatura di 20 °C entro una banda di isteresi di 2 °C. Accendere il riscaldatore quando la temperatura scende sotto i 18 °C e spegnerlo quando la temperatura supera i 22 °C.
heater := HYSTERESIS(temperature, 22, 18, 0, 1, heater);