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

Tag 23 von 365 · Einsteiger · Monat 1: Erste Schritte

Vergleiche gegen Null: sltz, sgtz & Co.

Statt zwei Werte zu vergleichen, bildest du die Abweichung und fragst nur noch: kleiner, größer oder gleich null?

Lektion 10 Min. Woche 4

Das lernst du heute

  • Sltz, sgtz, slez, sgez, seqz, snez kennen
  • Abweichungen vom Sollwert bewerten
  • seqz als logisches Nicht

Bei einer Heizung interessiert dich selten die Temperatur selbst. Wichtig ist, wie weit sie vom Sollwert weg ist und in welche Richtung. Genau dafür gibt es eine eigene Gruppe von Set-Befehlen: Sie vergleichen einen Wert mit null.

Die sechs z-Befehle

BefehlRegister = 1, wenn
sltz r? aa < 0
sgtz r? aa > 0
slez r? aa ≤ 0
sgez r? aa ≥ 0
seqz r? aa = 0
snez r? aa ≠ 0

Sonst kommt 0 heraus. Das z steht für zero. Gegenüber slt r1 r0 0 sparst du die Null und ein paar Zeichen – bei 4096 Zeichen pro Chip zählt das irgendwann.

Erst die Abweichung, dann der Vergleich

l r0 d0 Temperature
sub r0 r0 293.15   # Abweichung von 20 C
sltz r1 r0         # 1 = zu kalt
sgtz r2 r0         # 1 = zu warm

r0 ist jetzt negativ, wenn es zu kalt ist, positiv, wenn es zu warm ist, und genau null nur im seltenen Fall exakt 20 °C. Die Abweichung kannst du gleich auf eine Anzeige schreiben: Ein Wert von −2,5 sagt mehr als 290,65.

Ein kleines Band einbauen

Würde die Heizung bei jeder winzigen Abweichung anspringen, schaltet sie dauernd. Verschieb die Grenze einfach mit einer Addition:

add r1 r0 1        # erst unter -1 negativ
sltz r1 r1         # Heizung an unter 19 C
sub r2 r0 1        # erst ueber +1 positiv
sgtz r2 r2         # Kuehlung an ueber 21 C

Zwischen 19 und 21 °C bleibt beides aus. Das ist noch keine echte Hysterese mit Gedächtnis – die kommt in Woche 7 –, aber für viele Räume reicht es.

seqz als „nicht“

Bei Werten, die nur 0 oder 1 sind, dreht seqz den Wert um: aus 1 wird 0, aus 0 wird 1. snez macht umgekehrt aus jeder Zahl ungleich null eine saubere 1.

seqz r3 r1         # 1, wenn die Heizung NICHT laeuft
Tipp

Die Sprungbefehle aus Woche 3 gibt es genauso gegen null: bltz, bgtz, blez, bgez, beqz, bnez. Die z-Set-Befehle sind ihre sprungfreien Geschwister.

Hinweis

Liefert der Sensor NaN, sind sltz und sgtz beide 0 – Heizung und Kühlung bleiben dann aus.

Schaubild

Vergleich und select als Weiche temp = 313 sgt r1 temp 303 r1 = 1 select Color.Red Color.Green 4 wenn r1 ≠ 0 wenn r1 = 0
Ein Vergleich wird zu 0 oder 1. Bei den z-Befehlen ist die zweite Zahl immer die Null – eine Angabe weniger.

Übung

Aufgabe

An d0 hängt ein Gas-Sensor, an d1 eine Wandheizung, an d2 ein Wandkühler und an d3 eine LED-Anzeige. Sollwert sind 20 °C (293,15 K).

  • r0 = Abweichung vom Sollwert, die Anzeige an d3 zeigt sie
  • Heizung an, wenn die Abweichung unter −1 liegt (kälter als 19 °C)
  • Kühler an, wenn die Abweichung über +1 liegt (wärmer als 21 °C)
  • Benutze die z-Befehle, keine bedingten Sprünge – nur j start für die Schleife

Hinweise

Hinweis 1

Für die Heizung: erst add r1 r0 1, dann sltz r1 r1.

Hinweis 2

Für den Kühler genauso mit sub und sgtz.

Hinweis 3

Die Anzeige bekommt einfach s d3 Setting r0.

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