www.mikrocontroller.net

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


Autor: Sebastian H. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian H. (Gast)
Datum:

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

Autor: Detlef _a (detlef_a)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian H. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian H. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Math rules !

Gute Nacht
Detlef

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.