Der naive Regler lautet „unter 20 °C an, sonst aus“. In der Praxis zittert die Temperatur um 20 °C herum, und die Heizung schaltet jeden Takt an und aus. Das nervt, und manche Geräte verschleißen dabei oder fressen Anlaufstrom.
Zwei Grenzen
Eine Hysterese benutzt zwei Schwellen:
- unter der unteren Grenze: einschalten
- über der oberen Grenze: ausschalten
- dazwischen: so lassen, wie es ist
Für das „so lassen“ braucht der Chip ein Gedächtnis – das Register, in dem der aktuelle Zustand steht.
Das Muster mit and/or
alias temp r0
alias heizen r1
alias tmp r2
# ...
slt tmp temp OBEN # noch unter der oberen Grenze?
and heizen heizen tmp # wenn nicht: aus. Sonst Zustand behalten
slt tmp temp UNTEN # unter der unteren Grenze?
or heizen heizen tmp # dann auf jeden Fall an
sbn HEIZUNG HASH("Heizung") On heizen
Lies es so: „Die Heizung bleibt an, solange es unter OBEN ist. Und sie geht an, sobald es unter UNTEN ist.“ Vier Zeilen, kein Sprung.
Dasselbe Muster funktioniert für Kühlung (mit sgt statt slt), Pumpen, Generatoren und Filter. Die Vorlagen im IC10-Coder benutzen es überall.
Sensor weg?
Liefert der Sensor NaN, sind beide Vergleiche falsch – heizen wird 0. Die Heizung geht also aus. Das ist hier die sichere Richtung: lieber kalt als ein überhitzter Raum.
Schaubild
Übung
Aufgabe
Gas-Sensor „Raum“, Wandheizung „Heizung“ (beide im Datennetz). Baue einen Hysterese-Regler:
- unter 19 °C (292,15 K) Heizung an
- ab 21 °C (294,15 K) Heizung aus
- dazwischen den Zustand behalten
- fällt der Sensor aus, Heizung aus
Hinweise
Hinweis 1
Vier Zeilen zwischen lbn und sbn reichen: zweimal slt, einmal and, einmal or.
Hinweis 2
Erst prüfen, ob es noch unter OBEN ist, und damit den alten Zustand „verunden“.
Hinweis 3
Dann prüfen, ob es unter UNTEN ist, und das „verodern“.