Forum: Digitale Signalverarbeitung / DSP / Machine Learning Wieso ist Zustandsbeobachter zu langsam?


von Sebastian H. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche gerade einen Zustandsbeobachter zu simulieren, aber 
irgendwie stimmt wohl etwas nicht mit meiner Berechnung. Ich habe das 
Zustandsmodell aus dem PDF im Anhang um eine Zustandsgröße erweitert:
Die Zustandsgrößen sind nun: Drehwinkel, Winkelgeschwindigkeit, 
Lastmoment.
Der Drehwinkel ist der Ausgang y(t) des Systems.

Der Beobachter stimmt für die Winkelgeschwindigkeit (mit und ohne 
Störung) recht gut, nur beim beobachtete Lastmoment ist reagiert er viel 
zu langsam.

Das der Beobachter nicht sprunghaft reagiert ist schon mir klar, nur 
dass das so langsam geht macht mich etwas stutzig.


Vielleicht findet einer von euch meinen Fehler.
Im Anhang findet ihr das PDF, M-File und das Simulinkmodell.

Danke!

Gruß,
Sebastian H.

von Detlef _. (detlef_a)


Lesenswert?

Könnte es sein, daß die Eigenwerte Deines Beobachters (~ -1000) zuweit 
weg liegen von den Eigenwerten des Systems (-1.25). Leg die Eigenwerte 
des Beobachters doch mal in die Nähe der Eigenwerte des Systems.

Cheers
Detlef

von Sebastian H. (Gast)


Lesenswert?

Hi,

danke schon mal, dass Du Dir mein Problem mal angeschaut hast! Also ich 
hab die Eigenwerten des Beobachters jetzt mal weiter in die Nähe des 
Systems gelegt. Ich hab bei -1.25 an angefangen und bin schrittweise bis 
-1000. Ab -100 ändert sich nicht mehr viel. Mir ist dabei aber auch 
aufgefallen, dass Lastmoment beim zu beobachteten System nicht mal 
nährungsweise sprungartig zunimmt. Der Beobachter "sieht" also schon 
richtig. Das würde doch bedeuten, dass in dem Gleichungssystem was nicht 
stimmt. Irgendwie ist das schon seltsam, der Drehwinkel und die 
Winkelgeschwindigkeit stimmen doch auch...???

Gruß,
Sebastian H.

von Sebastian H. (Gast)


Lesenswert?

Das beobeachtete Lastmoment abgeleite ist irgendwie genau das was ich 
sehen will: das Lastmoment. Also ist das Gleichungssystem richtig und 
doch falsch.

von Detlef _. (detlef_a)


Angehängte Dateien:

Lesenswert?

Habs mal simuliert: Ein vorgegebenes, konstantes Lastmoment von 0.123 
hat der Beobachter mit Deinen Polvorgaben innerhalb von 0.1sec 
herausgefunden. Vielleicht hast Du nen Problem mit Simulink oder dem 
Integrationsverfahren. Habs ohne Simulink mit 'ode45' probiert, ging 
nicht, 'od15s' funzte dann, Gründe allerdings unklar.

Cheers
Detlef

von Sebastian H. (Gast)


Angehängte Dateien:

Lesenswert?

Seltsam wieso sich unsere Ergebnisse so stark unterscheiden. Was hast Du 
für eine maximale Schrittweite vorgegeben? (1e-6)

Ich hab hier mal mein Ergebnis der Simulink-Simulation.
Pole auf -100.0, -100.1, -100.2.

Gelb: vorgegebenes Lastmoment (2.5)
Blau: beobachtetes Lastmoment
Lila: beobachtetes Lastmoment abgeleitet

Die Ergebnisse von ode45 und ode15s sind gleich.

Lege ich die Pole auf -1000 ist der Beobachter (+ Ableitung) genau das 
was ich haben will.

Ich werde es jetzt mal direkt mit estim() versuchen. Vielleicht schaut 
es da anders aus.

Gruß
Sebastian H.

von Sebastian H. (Gast)


Angehängte Dateien:

Lesenswert?

Er funktioniert! Hab die falschen Matrizen für die Simulation genommen.
Pole bei ~ -1000 => Schätzfehler des beobachteten Lastmoments innerhalb 
von 9ms unter 1%.

Gruß,
Sebastian H.

von Detlef _. (detlef_a)


Lesenswert?

Math rules !

Gute Nacht
Detlef

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.