Wieso ist Zustandsbeobachter zu langsam?

Gast #522393
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.
Angehängte Dateien:
Gast
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.
Gast
Das beobeachtete Lastmoment abgeleite ist irgendwie genau das was ich 
sehen will: das Lastmoment. Also ist das Gleichungssystem richtig und 
doch falsch.
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
Angehängte Dateien:
Gast
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.
Angehängte Dateien:
Gast
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.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.