Forum: Digitale Signalverarbeitung / DSP / Machine Learning Integrator läuft voll - warum?


von Zyrano D. (kickflip)


Lesenswert?

Hi,

ich habe einen Beschleunigungssensor auf Piezobasis, den ich in meiner 
Regelstruktur integriere, um auf die Geschwindigkeit zu kommen. Jetzt 
habe ich überall gelesen, dass ich Integratoren resetten müsste, da sie 
"volllaufen"?

Was genau läuft da voll? Was ist mit dem "volllaufen" gemeint?

Ich denke, dass das irgendwie an der oberen Integrationsgrenze liegt, 
die ja nicht vorhanden ist und der Wert dann irgendwann gegen unendlich 
läuft, oder?

Viele Grüße

von Walter T. (nicolas)


Lesenswert?

Zyrano D. schrieb:
> ...die ja nicht vorhanden ist und der Wert dann irgendwann gegen unendlich
> läuft, oder?


Zumindest wenn die Eingangswerte nicht gleichanteilfrei sind. Genau.

Um genau zu sein läuft der Integrator dann bei einer praktischen 
Implementierung nicht gegen unendlich, sondern läuft entweder über 
(Integer) oder verliert komplett seine Reaktionsfähigkeit, wenn der 
Exponnent so groß ist, dass jeder Summand nur noch weggerundet wird 
(float).

: Bearbeitet durch User
von Sebastian S. (amateur)


Lesenswert?

Der Input eines Integrators ist in den seltensten Fällen exakt gleich 
Null.

Dann kommt noch hinzu, dass außer im µP, der Integrator selbst nicht 
ideal ist.

Somit ist es, ohne Korrekturmaßnahmen "normal", dass ein Integrator in 
Richtung einer der Extreme läuft.
Oder anders ausgedrückt: Fast nichts, über einen längeren Zeitraum, 
ergibt etwas.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Kommt halt auf das an, was du integrierst. Bei normalen Regelungen muss 
da im Betrieb nix resettet werden. Das regelt sich aus ;-)

Aber wenn du ganz stumpf einen Einheitssprung auf einen Integrator gibst 
und dann einfach wartest, dann laeuft der halt los... und stoesst in der 
realen Welt irgendwann an seine Grenzen und integriert nicht mehr so, 
wie er sollte.
Nur sollte sowas in einer geschlossenen Regelschleife nicht passieren.

Gruss
WK

von Burkhard (Gast)


Lesenswert?

Zyrano D. schrieb:

> Jetzt
> habe ich überall gelesen, dass ich Integratoren resetten müsste, da sie
> "volllaufen"?

Überall kann nicht sein :-)

In der Literatur gibt es den Begriff des "leaky integrators", s.a. 
https://en.wikipedia.org/wiki/Leaky_integrator . Hier wird ein drohender 
Überlauf dadurch verhindert, dass bei jedem Zeitschritt ein fester 
Anteil abgezogen wird bzw. in einer analogen Schaltung ein hoher 
Widerstand parallel zum Kondensator im Rückkopplungspfad geschaltet 
wird.

von Sebastian S. (amateur)


Lesenswert?

Übrigens:
Ich würde einen Integrator nur in Sonderfällen "resetten".
Das würde ja Null bedeuten.
Ich würde den Maximalwert begrenzen.
Bei +max oder -max bleiben nämlich zwei Sachen erhalten:
1. Das Vorzeichen der Richtung
2. Im Gegensatz zu Null, die Info: "Viel".

von A. Z. (donvido)


Lesenswert?

Zyrano D. schrieb:
> Hi,
>
> ich habe einen Beschleunigungssensor auf Piezobasis, den ich in meiner
> Regelstruktur integriere, um auf die Geschwindigkeit zu kommen. Jetzt
> habe ich überall gelesen, dass ich Integratoren resetten müsste, da sie
> "volllaufen"?

Du kannst durch Integration die Geschwindigkeit bestimmen. Du musst aber 
einen Abgleich mit bekannten oder sicher erkennbaren Zuständen machen, 
eben weil du den Gleichanteil im Beschleunigungssignal nie perfekt 
rausfiltern kannst.
Das heißt im Stillstand muss der Integrator auf 0 resettet werden, 
sofern du Stillstand sicher identifizieren kannst. Sonst sagt dir dein 
Messsignal dass du dich rückwärts bewegst, obwohl du an der 
Bushaltestelle sitzt.

Man gleicht auch gerne Gyroskope mit Beschleunigungssensoren (Vektor der 
Erdbeschleunigung) und Magnetometern ab, da der Lagewinkel durch die 
Integratordrift irgendwann wegläuft. Das nennst sich dann u.a. 
Sensorfusion.

edit: Du könntest zum Beispiel deinen Beschelunigungssensor mit einem 
einfachen Fahrradtacho "fusionieren". Dann hast du das beste aus beiden 
Bereichen. Mit dem Tacho die exakte Geschwindigkeit und mit dem 
Beschleunigungssensor Messwerte zwischen der Abtastung des Tachos.

: Bearbeitet durch User
von Andreas B. (bitverdreher)


Lesenswert?

Sebastian S. schrieb:
> Übrigens:
> Ich würde einen Integrator nur in Sonderfällen "resetten".
> Das würde ja Null bedeuten.
> Ich würde den Maximalwert begrenzen.
> Bei +max oder -max bleiben nämlich zwei Sachen erhalten:
> 1. Das Vorzeichen der Richtung
> 2. Im Gegensatz zu Null, die Info: "Viel".

Genau so.

von Zyrano D. (kickflip)


Lesenswert?

Danke für die vielen Kommentare. Ich glaube die sind sehr hilfreich, 
aber mag einer vielleicht nochmal eine Ebene tiefer anfangen?

Also ich verstehe, wie ein Beschleunigungssensor auf Piezobasis 
funktioniert und ich weiß, dass ich in meiner zyklischen zeitdiskreten 
Regelstruktur über Integration auf die Geschwindigkeit komme. Ich nulle 
den Sensor immer am Anfang jedes Zyklus.

Was genau da vollläuft habe ich leider nicht genau verstanden. :D

von A. Z. (donvido)


Lesenswert?

Nimm das Beschleunigungssignal, integriere es und lass den Sensor mal ne 
Weile liegen. Irgendwann zeigt dein Aufbau eine Geschwindigkeit ungleich 
0 mit Tendenz in eine Richtung. -> Dein Integrator läuft voll.

Versuch doch jetzt noch zusätzlich aus der Geschwindigkeit die Position 
zu bestimmen. ;)

von Andreas B. (bitverdreher)


Lesenswert?

Zyrano D. schrieb:
> Ich nulle
> den Sensor immer am Anfang jedes Zyklus.

Das kannst Du nur machen wenn sich der Sensor exakt in the richtigen 
Position befindet (Soll=Ist Wert)

> Was genau da vollläuft habe ich leider nicht genau verstanden. :D
Ganz einfach: Der Wert des Integrals. Irgendwann ist halt die Grenze der 
Zahlendarstellung erreicht, je nachdem wieviele Bytes Du für diese 
Zahlendarstellung opferst.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Zyrano D. schrieb:
> aber mag einer vielleicht nochmal eine Ebene tiefer anfangen?

Einfaches Beispiel: WC-Spuelung mit Spuelkasten.
Der Wasserstand im Spuelkasten ist das Integral ueber das reingelaufene 
Wasser. Schliesst das Ventil aus irgendeinem Grund nicht rechtzeitig, 
laeuft der Integrator ueber.
Passiert aber normalerweise nicht, weil die mechanische Regelung dafuer 
sorgt, dass wenn die Regeldifferenz aus Wassersoll- und iststand = 0 
ist, d.h. der Spuelkasten voll ist, das Ventil dicht macht und halt nix 
weiter im Spuelkasten aufintegriert wird.

Gruss
WK

von Achim S. (Gast)


Lesenswert?

Zyrano D. schrieb:
> Ich nulle
> den Sensor immer am Anfang jedes Zyklus.

Was ist bei dir ein Zyklus? Wenn die Zyklen kurz genug sind, hast du 
ggf. kein Problem. Aber je länger die Zyklen werden, desto stärker 
werden auch kleinste Nullpunktsfehler vom Integrator aufintegriert - bis 
er irgendwann "vollläuft".

von Sebastian S. (amateur)


Lesenswert?

Was eventuell sinnvoll sein könnte ist:
Das Teil nach dem Einschalten "resetten".

Dabei sollte man aber nicht aus den Augen verlieren, dass das Resetten 
ja auch eine "Behauptung" aufstellt, nämlich = Null.
Dazu muss aber feststehen, dass tatsächlich keine Beschleunigung 
stattfindet...
Und noch was: Das Integral über die Beschleunigung kann man auch als 
Geschwindigkeit interpretieren. Also Beschleunigung gleich Null bedeutet 
aber nicht gleich Geschwindigkeit gleich null.

Im Gegentum. Dem Auto ist es egal, welche Beschleunigung gerade vorlag, 
als ihm der Baum in den Weg gesprungen ist. Das Integral der 
Beschleunigung ist aber etwas, was man im Auge behalten sollte (oder in 
dem Falle im Ohr).

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

Der Integrator bracuht einen Anfangswert. dieser ist im einfachsten Fall 
0.

Also Starte die Schaltung bei Null, lasse ihn eine Weile integrieren und 
Starte erneut.


mfG

von Zyrano D. (kickflip)


Lesenswert?

Ich danke euch! Ich glaube damit kann man es nur verstehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.