Das lernst du heute
- Wiederverwendbare Vorlage bauen
- Einstellblock
- Dokumentation
Du hast in diesem Jahr Dutzende Zweipunktregler geschrieben: Heizung hier, Kühlung da, jedes Mal fast derselbe Code. Diese Woche baust du die Vorlage, die du ab jetzt kopierst. Eine gute Vorlage hat drei Teile: einen Einstellblock, in dem alles steht, was man anpassen muss, eine Logik, die man nie wieder anfassen muss, und eine Dokumentation, die sagt, wie man sie benutzt.
Die Idee
Ein Unterprogramm regeln erledigt einen Regelkreis. Was es braucht, bekommt es in Registern:
| Register | Inhalt |
|---|---|
name | Name von Sensor und Gerät, z. B. HASH("Wohnraum") |
typ | Prefab des Geräts: Heizung oder Kühler |
unten, oben | Grenzen in Kelvin |
richtung | 1 = Gerät heizt, 0 = Gerät kühlt |
Beim Heizen schaltet „zu kalt“ ein und „zu warm“ aus, beim Kühlen genau umgekehrt. Das Unterprogramm tauscht dafür mit zwei select die Rollen von ein und aus – die eigentliche Hysterese ist danach für beide Richtungen dieselbe Zeile.
Der Zustand steckt im Gerät
Jeder Regelkreis braucht sein eigenes Gedächtnis: War das Gerät an? Statt dafür Register oder den Stack zu verbrauchen, liest das Unterprogramm den Zustand einfach am Gerät zurück:
lbn an typ name On Average # Zustand steckt im Geraet selbst
snan tmp an
select an tmp 0 an
So kostet jeder weitere Kreis nur sechs Zeilen im Hauptteil, und das Unterprogramm bleibt unverändert.
Sicherer Zustand je Richtung
Fehlt der Sensor eines Kreises, geht eine Heizung aus und ein Kühler an. Die Anzeige „Regler“ zeigt, wie viele Kreise gerade ohne Sensor laufen.
Die Anlage
| Gerät | Prefab | Name |
|---|---|---|
| Gassensor und Wandheizung | StructureGasSensor, StructureWallHeater | „Wohnraum“ |
| Gassensor und Wandkühler | StructureGasSensor, StructureWallCooler | „Kuehlraum“ |
| LED-Anzeige | StructureConsoleLED5 | „Regler“ |
Teilziele
- Der Wohnraum heizt mit Hysterese (19/21 °C).
- Der Kühlraum kühlt mit Hysterese (6/2 °C).
- Sensorausfall: Heizung aus, Kühler an, die Anzeige zählt die ausgefallenen Kreise.
- Die Kreise sind unabhängig: Fällt einer aus, regelt der andere weiter.
Schreib in den Kopf der Vorlage, wie man einen dritten Kreis anlegt: sechs move-Zeilen und ein jal regeln. Wer die Vorlage übernimmt, muss das Unterprogramm dann gar nicht lesen.
Schaubild
Projektaufgabe
Aufgabe
Bau die Vorlage: Einstellblock, Geräte und Register stehen schon da. Es fehlen die beiden Aufrufe in der Schleife, die Anzeige der ausgefallenen Kreise und das Unterprogramm regeln, das für Heizen und Kühlen dieselbe Hysterese benutzt.
Teilziele
- Teilziel 1: Wohnraum heizt mit Hysterese
- Teilziel 2: Kühlraum kühlt mit Hysterese
- Teilziel 3: Sensorausfall je Richtung
- Teilziel 4: Kreise sind unabhängig
Hinweise
Hinweis 1
Pro Kreis: fünf move für name, typ, unten, oben, richtung, dann jal regeln.
Hinweis 2
Im Unterprogramm: slt ein t unten, sgt aus t oben, dann mit select nach richtung tauschen.
Hinweis 3
Hysterese: seqz aus aus, and an an aus, or an an ein. Bei NaN: select an ok an tmp mit tmp = seqz richtung.
Quiz
2 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Alle Teilziele des Projekts bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden