Interpolacija i pragovi
Linearna interpolacija LINEAR i preklapanje na pragovima HYSTERESIS za preslikavanje vrijednosti, prigušivanje svjetla i upravljanje grijanjem u skriptama TapHome.
LINEAR pretvara vrijednost iz jednog raspona u drugi duž pravca. HYSTERESIS preklapa između dviju izlaznih vrijednosti s mrtvom zonom, tako da izlaz ne skače amo-tamo oko jednog praga.
LINEAR
LINEAR preslikava vrijednost iz ulaznog raspona u izlazni raspon duž pravca kroz dvije točke, in1 → out1 i in2 → out2 — na primjer neobrađenu vrijednost registra u postotke ili dnevno svjetlo u svjetlinu svjetla.
| |
Parametri
| Naziv | Tip | Opis |
|---|---|---|
value | broj | Ulazna vrijednost. |
in1, out1 | broj | Prva točka: ulaz in1 daje izlaz out1. |
in2, out2 | broj | Druga točka: ulaz in2 daje izlaz out2. |
LinearType | enum, neobavezno | Što se događa kada je value izvan raspona in1 – in2. |
LinearType | Rezultat izvan ulaznog raspona |
|---|---|
DEFAULT (ili izostavljeno) | Isto kao BOUNDS. Na verzijama Core starijim od 2022.2 ekstrapolira kao INFINITE. |
BOUNDS | Vrijednost se ograničava na raspon, pa rezultat ostaje između out1 i out2. |
STRICT | NaN. |
INFINITE | Pravac se nastavlja (ekstrapolacija). |
Vraća — double. Ulaz NaN daje NaN. Kada je in1 jednako in2, nagib se ne može izračunati i umjesto njega koristi se 1.
Primjer — pretvorba neobrađene vrijednosti
# raw register 0 ... 1000 -> 0 ... 100 %
LINEAR(MODBUSR(H, 10, Uint16), 0, 0, 1000, 100);
VAR raw := 250;
LINEAR(raw, 0, 0, 500, 50);
# Result: 25Učinak parametra LinearType za ulaz 11 s točkama 0 → 400 i 10 → 2000:
LINEAR(11, 0, 400, 10, 2000, BOUNDS);
# Result: 2000
LINEAR(11, 0, 400, 10, 2000, INFINITE);
# Result: 2160
LINEAR(11, 0, 400, 10, 2000, STRICT);
# Result: NaNPrimjer — prigušivanje: preslikavanje vrijednosti u svjetlinu svjetla
Razina dimera u sustavu TapHome ide od 0 do 1 (0 – 100 %). Ova formula prigušuje svjetlo od pune svjetline u mraku do isključenja pri 300 lx dnevnog svjetla; BOUNDS drži razinu između 0 i 1 i za svjetlija ili tamnija očitanja:
# Va is the daylight sensor in lx, the result is the dimmer level
LINEAR(Va, 0, 1, 300, 0, BOUNDS);
# Result: 0.5 at 150 lx, 0 at 300 lx and moreKrivulja prigušivanja koja nikad ne pada ispod 10 % — vrijednost klizača x od 0 do 1 preslikava se u 0.1 – 1:
LINEAR(x, 0, 0.1, 1, 1);Isto radi i za ventilaciju: LINEAR(co2, 400, 0, 1200, 1) daje 0 pri 400 ppm, 0.5 (50 %) pri 800 ppm i 1 pri 1200 ppm.
Vidi također — HYSTERESIS, Zaokruživanje i slučajni brojevi.
HYSTERESIS
HYSTERESIS vraća lowerState kada vrijednost padne na lowerThreshold, upperState kada naraste na upperThreshold, a previousState dok ostaje između njih.
| |
Histereza filtrira signal tako da izlaz reagira sporije od ulaza: termostat uključuje grijač kada temperatura padne ispod jedne vrijednosti, a isključuje ga tek kada naraste iznad druge.
Parametri
| Naziv | Tip | Opis |
|---|---|---|
value | broj | Izmjerena vrijednost, na primjer temperatura. |
upperThreshold | broj | Vrijednost pri kojoj i iznad koje se vraća upperState. Mora biti viša od lowerThreshold. |
lowerThreshold | broj | Vrijednost pri kojoj i ispod koje se vraća lowerState. |
upperState, lowerState | broj | Rezultati za dva praga — bilo koji brojevi, ne samo 0 i 1. |
previousState | broj | Rezultat dok je vrijednost između pragova, obično prethodni izlaz. Ne smije biti Null. |
Vraća — double: upperState, lowerState ili previousState. Za vrijednost koja je od praga udaljena najviše 0.005 smatra se da ga je dosegla. Vrijednost NaN vraća previousState.
Primjer — grijanje
Održavanje prostorije na 20 °C s histerezom ±2 °C: grijač se uključuje kada temperatura padne na 18 °C i isključuje kada naraste na 22 °C. U smart rule Skripta skripta sklopku grijača i čita i piše:
# Te is the room temperature, Sw the heater switch
Sw := HYSTERESIS(Te, 22, 18, 0, 1, Sw);U smart rule Formula prethodni rezultat je LastState, koji je pri prvom izvršavanju i nakon pogreške skripte Null:
HYSTERESIS(Te, 22, 18, 0, 1, IF(ISNULL(LastState), 0, LastState));Pogreške
- Upper threshold must be higher than lower threshold — pri spremanju skripte čiji su pragovi fiksni brojevi.
- Upper threshold (X) must be higher than lower threshold (Y) — pri izvršavanju, kada pragovi dolaze iz varijabli.
Vidi također — Skripte u smart rules, Upravljanje punjenjem spremnika pomoću histereze.