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.
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
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.
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.