stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 130

Tag 130 von 365 · Fortgeschritten · Monat 5: Speicher und Struktur

Bedingt aufrufen gegen Null

beqzal, bnezal, bltzal, bgtzal, blezal und bgezal rufen auf, je nachdem wie ein Wert zu null steht. Ideal, um eine Fehlerbehandlung nur bei Bedarf anzuspringen.

Lektion 13 Min. Woche 19

Das lernst du heute

  • Beqzal, bnezal, bltzal, bgtzal, blezal, bgezal
  • Fehlerbehandlung als Unterprogramm

Drei Zonen, drei Sensoren. Fällt einer aus, soll eine Warnlampe angehen und die Anzeige sagen, wie viele fehlen. Diese Fehlerbehandlung steht in einem Unterprogramm, und aufgerufen wird es nur, wenn wirklich etwas fehlt.

Die Familie gegen null

Befehlruft auf, wenn
beqzal a ziela = 0
bnezal a ziela ≠ 0
bltzal a ziela < 0
bgtzal a ziela > 0
blezal a ziela ≤ 0
bgezal a ziela ≥ 0

Wie bei den Sprüngen gegen null bildest du vorher die Abweichung oder einen Zähler. Dann reicht ein Operand.

sub abw t SOLL
bltzal abw heizbedarf     # zu kalt: Heizung anfordern

Fehlerbehandlung als Unterprogramm

Erst zählst du die Fehler, dann rufst du die Behandlung einmal auf:

move fehlend 0
lbn t SENSOR HASH("Zone1") Temperature Average
snan tmp t
add fehlend fehlend tmp
# ... dasselbe fuer Zone2 und Zone3
bnezal fehlend fehler     # nur wenn etwas fehlt

Das Unterprogramm fehler setzt die Störungsmeldung, und weil es hinter der Hauptschleife steht, stört es den normalen Ablauf nicht. Kommen später weitere Fehlerarten hinzu, landen sie alle im selben Block.

Grundzustand nicht vergessen

Wie gestern gilt: Ein Unterprogramm, das nicht aufgerufen wird, setzt nichts zurück. Vor den Aufrufen stehen deshalb move stoerung 0 und move heizen 0. Ist der Fehler behoben, geht die Lampe im nächsten Durchlauf von selbst aus.

Achtung

bnezal ruft bei NaN auf, denn NaN ist ungleich null. Alle anderen z-Aufrufe tun es bei NaN nicht. Willst du auf einen Ausfall reagieren, ist ein eigener Zähler wie fehlend deshalb klarer als ein bnezal direkt auf den Messwert.

Tipp

Zeig den Fehlerzähler auf einer Anzeige. „2“ sagt einem Spieler sofort, dass er zwei Sensoren suchen muss.

Schaubild

Aufruf und Rücksprung eines Unterprogramms Hauptschleife 2 l r0 d0 Temperature 3 jal celsius 4 s d2 Setting r1 5 l r0 d1 Temperature 6 jal celsius 7 s d3 Setting r1 8 j start celsius: sub r1 r0 273.15 j ra ra = 4 zurück zu Zeile ra
Zähle die Fehler, und ruf die Fehlerbehandlung nur auf, wenn der Zähler nicht null ist.

Übung

Aufgabe

Drei Gassensoren „Zone1“ bis „Zone3“ (andere Gassensoren gibt es im Netz nicht), Wandheizungen „Zonen“, Blinklicht „Stoerung“, LED „Fehlend“.

  • Zähle die fehlenden Sensoren. Ist die Zahl nicht null, ruf mit bnezal das Unterprogramm fehler auf, das die Störung setzt. Die LED zeigt die Zahl.
  • Bilde das Mittel aller Gassensoren minus 20 °C. Ist es negativ, ruf mit bltzal das Unterprogramm heizbedarf auf.
  • Grundzustand vor den Aufrufen: Störung aus, Heizung aus.

Hinweise

Hinweis 1

Pro Zone: lbn, snan tmp t, add fehlend fehlend tmp.

Hinweis 2

Grundzustand, dann bnezal fehlend fehler.

Hinweis 3

Mittel aller Gassensoren mit lb … Temperature Average, minus SOLL, dann bltzal abw heizbedarf.

Quiz

4 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.

Tag abschließen

  • Übung im Simulator 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

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall