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

Tag 38 von 365 · Einsteiger · Monat 2: Ordnung und Datennetz

NaN abfangen: snan, snanz, bnan

snan, snanz und bnan erkennen NaN. Wie du einen ausgefallenen Sensor bemerkst, Geräte in einen sicheren Zustand bringst und die Störung meldest.

Lektion 12 Min. Woche 6

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/lb mit Average findet kein Gerät: Name falsch, Gerät abgebaut, Kabel unterbrochen.
  • Rechnungen ohne Ergebnis, etwa 0 geteilt durch 0.
  • Ein define mit 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

BefehlErgebnis
snan r? a1, wenn a NaN ist, sonst 0
snanz r? a0, wenn a NaN ist, sonst 1 – also „Messwert gültig“
bnan a zielspringt 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ätsicherer Zustand bei Sensorausfall
Heizungaus – lieber kalt als überhitzt
Pumpe, die einen Tank fülltaus – lieber leer als geplatzt
Warnlampean – ein Ausfall ist eine Störung
AnzeigeFarbe Rot statt einer erfundenen Zahl
Achtung

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.

Tipp

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

Drei Messwerte, fünf Batchmodi Sensor „Raum“ 300 K Sensor „Raum“ 310 K Sensor „Raum“ 250 K lbn Average 286.67 Sum 860 Minimum 250 Maximum 310 Count 3 Sum bei Temperaturen: 860 K – die Heizung hält das für einen Brand.
Findet Average kein passendes Gerät, kommt NaN heraus. Jede Rechnung damit ergibt wieder NaN.

Ü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 bnan in 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

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