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

Tag 295 von 365 · Experte · Monat 10: Bits und Daten

Nachschlagetabellen

Werte vorberechnen statt jeden Takt rechnen: eine Kennlinie als Tabelle im Stack, Index aus dem Messwert mit Versatz, Schritt, floor und clamp.

Lektion 18 Min. Woche 43

Das lernst du heute

  • Werte vorberechnen
  • Tabelle im Stack
  • Index aus Messwert

Die Abluft der Werkstatt soll mit der Temperatur stärker laufen – aber nicht linear. Bis 22 °C fast nichts, ab 30 °C kräftig, ab 34 °C voll. Eine Formel dafür wäre lang und schwer zu ändern. Eine Tabelle ist kurz und jeder sieht sofort, was passiert.

Werte vorberechnen

Eine Nachschlagetabelle enthält fertige Ergebnisse. Statt zu rechnen, schaut der Chip nach. Das lohnt sich in drei Fällen:

  • Die Kennlinie hat keine einfache Formel (Knicke, Stufen, Erfahrungswerte).
  • Die Formel ist teuer, etwa mit pow, exp oder einer Schleife.
  • Jemand soll die Werte später anpassen, ohne die Rechnung zu verstehen.

Tabelle im Stack

Die Tabelle legst du einmal vor start: mit poke an. Jeder Platz ist eine Stufe:

IndexTemperaturPumpe
020–21 °C0
122–23 °C5
224–25 °C10
326–27 °C20
428–29 °C30
530–31 °C50
632–33 °C70
7ab 34 °C100

Index aus dem Messwert

Vier Schritte machen aus einer Temperatur einen Tabellenplatz: Versatz abziehen, durch die Schrittweite teilen, abrunden, begrenzen.

sub idx temp CELSIUSOFFSET
sub idx idx T_START          # Versatz
div idx idx SCHRITT          # Schrittweite
floor idx idx
clamp idx idx 0 LETZTER      # nie außerhalb der Tabelle
get wert db idx

27 °C ergibt (27 − 20) / 2 = 3,5, abgerundet 3 – die Pumpe läuft mit 20. Unter 20 °C wird der Index negativ, clamp macht 0 daraus. Über 34 °C bleibt er bei 7.

Achtung

Ein Index außerhalb der Tabelle liest fremde Daten oder hält den Chip an. Ohne clamp liefert 50 °C den Index 15 – dort steht vielleicht dein Ringpuffer. clamp ist bei jeder Tabelle Pflicht, ebenso ein gültiger Index bei NaN.

Tipp

Eine Tabelle kostet eine Zeile pro Eintrag. Bei 8 Einträgen ist das günstig, bei 50 nicht mehr. Morgen siehst du, wie Interpolation mit wenigen Stützstellen auskommt.

Schaubild

Der Stack mit Stapelzeiger Platz 0 10 Platz 1 20 Platz 2 30 Platz 3 Platz 4 sp = 3 nächster freier Platz push 40 pop r0 r0 = 30 zuletzt rein, zuerst raus
Die Temperatur wird zum Index, der Index zeigt auf einen Tabellenplatz im Stack.

Übung

Aufgabe

Die Tabelle liegt schon im Stack. Lies die Temperatur des Sensors „Werkstatt“, berechne den Index (Start 20 °C, 2 °C je Platz, 0 bis 7) und schreibe den Tabellenwert als Setting an die Pumpe „Abluft“. Ohne Sensor bekommt die Pumpe 0.

Hinweise

Hinweis 1

Index: Celsius, minus T_START, durch SCHRITT, floor, clamp idx idx 0 LETZTER.

Hinweis 2

get wert db idx holt den Tabellenwert.

Hinweis 3

Bei NaN zuerst einen gültigen Index setzen, am Ende den Wert mit select auf 0.

Quiz

3 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