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

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

min, max, abs und sgn

min und max setzen Grenzen, abs misst den Abstand, sgn sagt die Richtung. Vier kleine Befehle, die viele Sprünge ersparen.

Lektion 10 Min. Woche 4

Das lernst du heute

  • Grenzen mit min und max setzen
  • Abstand mit abs
  • Richtung mit sgn

Eine Pumpe verträgt Setting von 0 bis 10. Rechnet dein Programm 14 aus, ist das bestenfalls sinnlos, bei −3 vielleicht schlimmer. Statt jeden Fall mit einem Sprung abzufangen, begrenzt du den Wert einfach.

min und max

BefehlErgebnis
min r? a bder kleinere der beiden Werte
max r? a bder größere der beiden Werte

Klingt verdreht, ist aber logisch: Mit min setzt du eine Obergrenze, mit max eine Untergrenze.

min r0 r0 10         # hoechstens 10
max r0 r0 0          # mindestens 0

Nach diesen zwei Zeilen liegt r0 sicher zwischen 0 und 10. Den kleinsten von drei Werten findest du in zwei Schritten: min r3 r0 r1, dann min r3 r3 r2.

abs: der Abstand

abs streicht das Vorzeichen. Aus −3 wird 3, aus 3 bleibt 3. Damit fragst du nach dem Abstand zum Sollwert, egal in welche Richtung:

sub r1 r0 294.15     # Abweichung von 21 C
abs r2 r1            # wie weit weg, ohne Richtung
slt r3 r2 2          # 1 = weniger als 2 Grad daneben

sgn: die Richtung

sgn liefert nur das Vorzeichen: −1 für negativ, 1 für positiv, 0 für genau null. Auf einer Anzeige wird das zum Pfeil: −1 heißt „zu kalt“, 1 heißt „zu warm“.

Hinweis

sgn gibt bei NaN eine 0 zurück, abs, min und max reichen NaN weiter. Ein ausgefallener Sensor sieht bei sgn also aus wie „genau richtig“. Wie du NaN abfängst, lernst du in Woche 6.

Zusammen: eine begrenzte Stellgröße

sub r4 294.15 r0     # wie viel fehlt bis 21 C?
mul r4 r4 2          # 2 Liter pro Grad
max r4 r4 0          # nie negativ
min r4 r4 10         # nie ueber 10
s d3 Setting r4
Tipp

Erst rechnen, dann begrenzen, dann schreiben. In dieser Reihenfolge bekommt ein Gerät nie einen Wert außerhalb seines Bereichs.

Schaubild

Datenfluss eines Rechenbefehls add r1 r0 273.15 r0 = 21 273.15 + r1 = 294.15 das Ziel steht immer vorne
Jeder dieser Befehle liest einen oder zwei Werte und legt das Ergebnis im Register ganz vorne ab.

Übung

Aufgabe

d0 misst die Raumtemperatur, Sollwert sind 21 °C (294,15 K). d1 und d2 sind LED-Anzeigen, d3 eine Volumenpumpe für warmes Gas.

  • d1 zeigt den Abstand zum Sollwert in Grad, ohne Vorzeichen.
  • d2 zeigt die Richtung: −1 zu kalt, 1 zu warm, 0 genau richtig.
  • d3 Setting = (Sollwert − Temperatur) · 2, begrenzt auf 0 bis 10.

Keine bedingten Sprünge.

Hinweise

Hinweis 1

r1 ist schon die Abweichung Ist − Soll. abs und sgn arbeiten direkt damit.

Hinweis 2

Soll − Ist ist dasselbe wie −(Ist − Soll): mul r4 r1 -2.

Hinweis 3

Begrenzen mit max r4 r4 0 und min r4 r4 10.

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