Das lernst du heute
- NaN erkennen
- Mit select absichern
- Bei NaN in einen sicheren Zweig springen
Jemand baut den Sensor im Labor ab, um ihn zu versetzen. Der Chip merkt davon nichts – er liest einfach weiter. lbn mit Average liefert jetzt NaN, und das wandert still durch jede Rechnung. Ab heute bekommt jede Steuerung im Kurs einen Schutz dagegen.
Woher NaN kommt
lbn/lbmitAveragefindet kein Gerät: Name falsch, Gerät abgebaut, Kabel unterbrochen.- Rechnungen ohne Ergebnis, etwa 0 geteilt durch 0.
- Ein
definemit einem anderen define als Wert.
Was dann passiert: Jede Rechnung mit NaN ergibt NaN. Jeder Vergleich wie slt oder sgt ergibt 0. sgn liefert 0. Auf einer Anzeige steht Unsinn, in eine Pumpe wandert ein Wert, den niemand vorhergesehen hat.
Die drei Werkzeuge
| Befehl | Ergebnis |
|---|---|
snan r? a | 1, wenn a NaN ist, sonst 0 |
snanz r? a | 0, wenn a NaN ist, sonst 1 – also „Messwert gültig“ |
bnan a ziel | springt zum Label, wenn a NaN ist |
Absichern mit select
Wenn das Programm weiterlaufen soll, ersetzt du den kaputten Wert durch einen sicheren:
snan fehlt druck
select menge fehlt 0 menge # bei NaN: Pumpe steht
In einen sicheren Zweig springen
Wenn bei einem Ausfall mehrere Geräte anders reagieren müssen, springst du weg:
lbn temp SENSOR HASH("Raum") Temperature Average
bnan temp stoerung
# ... normaler Betrieb ...
j start
stoerung:
sbn HEIZUNG HASH("Heizung") On 0
j start
Welche Richtung ist sicher?
Das entscheidest du je Gerät, bevor du den Code schreibst:
| Gerät | sicherer Zustand bei Sensorausfall |
|---|---|
| Heizung | aus – lieber kalt als überhitzt |
| Pumpe, die einen Tank füllt | aus – lieber leer als geplatzt |
| Warnlampe | an – ein Ausfall ist eine Störung |
| Anzeige | Farbe Rot statt einer erfundenen Zahl |
Ein Vergleich mit NaN ist nie wahr. Das sieht wie ein eingebauter Schutz aus – slt schaltet die Heizung bei NaN tatsächlich aus. Aber sgn, Rechnungen und Anzeigen bekommen trotzdem Unsinn ab, und niemand erfährt vom Ausfall. Ein Schutz, der nur zufällig funktioniert, ist keiner.
Teste jede Steuerung auch ohne Sensor. Im Simulator nimmst du das Gerät einfach heraus – die Übungen ab heute tun das in einem eigenen Test.
Schaubild
Übung
Aufgabe
Ein sicherer Heizregler. Im Netz: Gas-Sensor „Raum“, Wandheizung „Heizung“, LED-Anzeige „Raumtemp“, Blinklicht „Sensorfehler“.
- Normalbetrieb: Heizung an unter 19 °C (292,15 K), Anzeige zeigt die Temperatur in °C, Farbe grün.
- Das Blinklicht zeigt mit
snan, ob der Sensor fehlt. - Fehlt der Sensor: mit
bnanin einen Störungszweig – Heizung aus, Anzeige rot.
Hinweise
Hinweis 1
Direkt nach dem lbn: snan fehlt temp, dann die Lampe schalten.
Hinweis 2
bnan temp stoerung springt weg, bevor irgendetwas mit NaN gerechnet wird.
Hinweis 3
Im Zweig stoerung: Heizung aus, Anzeige rot, j start.
Quiz
5 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