Zustandsregler entwerfen

OP #1486404
Lesenswert?

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 #1486867
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren