Zustandsregler entwerfen

OP #1486404
Hallo,

ich habe als Aufgabe aus einer gegebenen Zustandsbeschreibung eines 
inversen Pendels ein Optimalregler zu entwickeln. Ich möchte die 
Zustandsbeschriebung in Matlab simulieren lassen und mir ausplotten, 
dann berechne ich mir mit dem lqr-Befehl die Rückführung, die ich für 
die Optimalregelung brauche. Leider ist bereits in dem Strukturbild wohl 
ein Fehler, da ich es schon nciht simulieren kann. Weiß einer einen Rat, 
wo der Fehler sein kann und ich das Strukturbild aus der 
Zustandsbeschriebung in Matlab simulieren kann?
Bitte um Eure Hilfe...

Gruß,
Angehängte Dateien:
Gast #1486826
Hallo,

habt ihr bereits den Fehler erkennen können? Es eilt, denn ich muss am 
kommenden Montag darüber einen Vortrag halten...
Bitte um Eure Hilfe....

Gruß,
Gast #1486867
Ich weiß irgendwie nicht, was dein Problem ist. Das System ist doch 
total instabil, da ist es doch klar, dass es sich nicht wie erwartet 
simulieren lässt. Also Regler entwerfen und gut ist.

Übrigens schreibt mir mein Matlab ne recht genaue Beschreibung hin, 
warum die Simulation abbricht. Ich würde fast vermuten, dass es bei dir 
auch so ist. Also vielleicht einfach mal lesen. ;-)
Gast #1487648
Ok, ich habe den Zustandsregler für eine optimale Regelung ausgelegt. 
Durch den lqr-Befehl kann man einen Rückführvektor einer solchen 
Regelung bekanntlich berechnen lassen. Ich habe auch die Fehlermeldung 
gelesen und die Fixed-Step-Time reduziert. Leider bekomme ich den Fehler 
so nicht weg und meinem Ziel ein geregeltes inverses Pendel durch den 
Pendelwinkel auf einem Plot komme ich nicht näher.
Kannst Du vielleicht nochmal sagen, was ich ändern muss um den Fehler 
weg zu bekommen......
Angehängte Dateien:
Gast #1487992
Das geht schon, so aber nicht. ;-)

Also eine Zustandsrückführung wird so genannt, weil man die Zustände 
für eine Rückführung benutzt. ;-) Außerdem ist die Rückführung -k*x.

Damit sollte es dann mehr oder weniger gehen. ;-)

ps: Vielleicht noch als kleiner Tipp, wie wärs mal, sich ein bisschen 
mit Matlab zu beschäftigen, wenn man schon optimale Regelungen machen 
will. ;-)
Gast #1488757
ich habe in einem regelungstechnischen buch, lunze, gefunden, wie ich 
die wichtungsmatrizen genau berechne.
Q=q*C'*C
R=I
bei R nehme ich doch die einheitsmatrix in entsprechender dimension. 
aber bei Q, für q nehme ich unterschiedliche Werte an (1,...,10) und C' 
ist die Transponierte oder was? Ich habe das mal getestet, leider ohne 
erfolg. wie geht´s denn richtig....
Angehängte Dateien:
Gast #1489067
So wie du oben die Matrizen berechnet hast, geht das schon sehr gut.

Das Problem ist jetzt noch, dass du nicht weißt, wass eine 
Zustandsrückführung ist. Ich empfehle dir das entsrechnde Kapitel noch 
einmal ordentlich zu lesen.

Das Problem ist das folgende, um mich zu zitieren:
Also eine Zustandsrückführung wird so genannt, weil man die Zustände
für eine Rückführung benutzt. ;-) Außerdem ist die Rückführung -k*x.

Hast du dir mal das Ergebnis für k angeguckt? Dann müsste dir eigentlich 
was auffallen. Es ist ein Vektor. Um genau zu sein, hat er die 
Dimensionen 1x4. Also brauchst du auch irgendeinen Vektor, mit dem du 
das k multiplizieren kannst, oder? Das sind die Zustände. ;-) Deshalb 
nennt man das auch so.
Gast #1489615
ich habe mir in literatur nochmal durchgelesen, wie eine 
zustandsrückführung aussieht. die einzelnen zustände werden jeweils mit 
dem wert des rückführvektors multipliziert und negativ auf den eingang 
rückgeführt.
soweit, sogut, aber wenn ich nun simuliere, kommt folgende meldung.

??? Error using ==> lqr at 45
In the "lqr(A,B,Q,R,N)" command, the A and Q matrices must have the same 
size.

Error in ==> invpen at 51
k=lqr(A,b,Q,R)

Was stimmt denn nun nicht in meiner Matrizenberechnung?
Angehängte Dateien:
#1489838
Die Tatsache, dass die Matizen nicht passen, ist nur ein Symptom.

http://de.wikipedia.org/wiki/Optimale_Regelung sagt:

"Dann ergibt sich ein lineares Regelgesetz. d.h. der Regler ist ein 
Zustandsregler mit vollständiger Zustandsrückführung."

Du brauchst alle Zustandsgrößen. Bis auf den Pendelwinkel kennst Du die 
nicht.

Siehe dazu: http://de.wikipedia.org/wiki/Beobachter_(Regelungstechnik)

Cheers
Detlef
Gast #1489987
Ich gehe mal hier davon aus, dass das primäre Ziel die optimale Regelung 
ist und deshalb anzunehmen ist, dass alle Zustandsgrößen zur Verfügung 
stehen. Das ist hier jedoch nicht das Problem.

Das Problem ist, dass mit dem lqr kein Regler gefunden werden kann, da 
die Matrizen Q und R nicht die richtige Größe haben. Die Matrizen aus 
deinem zweiten Dateien-Post gingen. Vielleicht hast du an denen noch 
etwas geändert. Ich konnte das System mit exakt den Werte simulieren, 
die du angegeben hattest. Die einzigen Änderungen habe ich hier hin 
geschrieben.

Die Rückführung sieht jetzt ganz gut aus. Aber willst du wirklich die 
Summer aller Zustände auf dem Scope sehen? Ich glaube kaum. ;-)

Noch als Tipp am Rande: Simulink kennt auch Vektoren. Dazu musst du die 
Blöcke Mux und Demux verwenden. Der Gain-Block kann dann auch 
Matrizenmultiplikation. (wenn man das einstellt) ;-)
Gast #1490363
den zweiten dateien-post meintest du, aber da steht gar kein lqr drin...
ich habe dann den dritten interpretiert.
irgendwie klappt es nicht, kannst du bitte nochmal sagen, wie du das mit 
den matrizen machst. ich habe meinen jetzigen stand beider dateien hier 
angefügt. wie läuft es jetzt???
Angehängte Dateien:
Gast #1490535
Ich hatte jetzt leider keine Zeit den Fehler in deinen Dateien zu 
suchen. Ich hänge aber mal die Dateien, mit denen es bei mir 
funktioniert, an. Ist zwar didaktisch nicht besonders wertvoll, aber da 
ja deine Zeit auch immer weniger wird. ;-)
Angehängte Dateien:
Gast #1490793
Hallo,

alles super. Ich habe gesehen, dass mein Fehler auch in dem plot-Befehl 
gewesen ist. Ich hätte das Structure richtig auswerten müssen. So ist 
nun alles prima. Das Ergebnis habe ich angefügt. Das Pendel fängt bei 
60° an und schwingt/pendelt sich dann sehr schnell ein.

Gruß,
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.