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

Tag 145 von 365 · Fortgeschritten · Monat 5: Speicher und Struktur

Messwerte glätten

Zappelnde Messwerte lassen Regelungen flattern. Gleitender Mittelwert und exponentielles Glätten beruhigen sie – mit Startwert, NaN-Schutz und dem Preis der Trägheit.

Lektion 15 Min. Woche 21

Das lernst du heute

  • Gleitender Mittelwert
  • Exponentielles Glätten
  • Rauschen gegen Trägheit

Der Gassensor im Hangar hängt direkt neben der Lüftung. Seine Druckwerte springen jeden Takt um ein paar kPa, und die Regelung dahinter schaltet die Pumpe im Sekundentakt an und aus. Der Druck im Raum ist dabei ganz ruhig – nur die Messung zappelt. Die Lösung: Messwerte glätten, bevor die Regelung sie sieht.

Gleitender Mittelwert

Der einfachste Weg: die letzten N Messwerte merken und den Durchschnitt bilden. Die Werte liegen in einem Ringpuffer im Stack, wie im Projekt „Messwert-Verlauf“. Ein Index läuft im Kreis und überschreibt immer den ältesten Wert:

add i i 1
mod i i N            # 0 bis N-1, dann wieder 0
poke i x             # aeltesten Wert ersetzen
move summe 0
move k 0
summieren:
get tmp db k
add summe summe tmp
add k k 1
blt k N summieren
div mittel summe N

Ein einzelner Ausreißer zählt nur noch zu einem N-tel. Dafür braucht der Mittelwert N Takte, bis ein echter Sprung ganz angekommen ist, und jeder Platz im Puffer kostet Stack.

Exponentielles Glätten

Ohne Puffer geht es mit einer einzigen Formel:

g = g + a · (x − g)

g ist der geglättete Wert, x die neue Messung, a ein Anteil zwischen 0 und 1. Jeden Takt rückt g um diesen Anteil an die Messung heran:

sub d x g
mul d d ANTEIL       # ANTEIL = 0.25
add g g d

Drei Zeilen, ein Register für den Zustand – kein Stack, keine Schleife. Mit a = 0,25 und einem Sprung von 100 auf 120 kPa zeigt g nacheinander 105, 108,75, 111,6 … und kommt dem neuen Wert immer näher.

Wichtig ist der Startwert. Beginnt g bei 0, kriecht es nach dem Einschalten erst langsam auf 100 kPa hoch – eine Regelung hält den Raum so lange für fast leer. Setz g deshalb vor der Hauptschleife auf die erste Messung.

Rauschen gegen Trägheit

Glätten hat einen Preis. Je stärker du glättest, desto später merkt der Chip eine echte Änderung:

aähnlich wie Mittelwert über63 % eines Sprungs nach
0,53 Werte1–2 Takten
0,257 Werte3–4 Takten
0,0539 Werterund 20 Takten, also 10 s

Für eine Anzeige darf es ruhig träge sein. Für eine Regelung reicht meist wenig Glättung, den Rest erledigt die Hysterese.

Achtung

Ein einziger NaN-Wert vergiftet den Filter. Fehlt der Sensor einen Takt lang, wird g + a · (NaN − g) zu NaN – und bleibt es für immer, auch wenn der Sensor längst zurück ist. Im Ringpuffer verdirbt ein NaN den Mittelwert, bis es nach N Takten überschrieben ist. Prüf die Messung mit snan, bevor sie in den Filter geht, oder fang mit dem nächsten gültigen Wert neu an.

Tipp

Not-Aus und Überdruckschutz gehören an die ungeglätteten Werte. Ein Filter, der Rauschen schluckt, verschluckt auch die ersten Takte eines echten Notfalls.

Übung

Aufgabe

Der Gassensor „Halle“ liefert einen zappelnden Druck. Die LED-Anzeige „Druck“ soll den exponentiell geglätteten Wert zeigen, mit ANTEIL = 0,25.

  • g startet mit der ersten Messung (die Zeile vor start: gibt es schon)
  • Fehlt die Messung (NaN), zeigt die Anzeige −1
  • Danach fängt der Filter mit der nächsten gültigen Messung neu an, statt NaN weiterzuschleppen

Tipp: Ist g NaN, übernimm einfach x.

Hinweise

Hinweis 1

Neu anfangen: snan tmp g, dann select g tmp x g.

Hinweis 2

Glätten: sub d x g, mul d d ANTEIL, add g g d.

Hinweis 3

Ist x NaN, wird g durch die Rechnung selbst NaN – im nächsten Takt greift dann das Neu-Anfangen.

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