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ß,
Was kommt denn für eine Fehlermeldung? Sieht eigentlich soweit gut aus.
Vielleicht stellst du hier auch mal die Matlab/Simulink-Files rein, dann ist das Suchen nicht so mühsam.
ein warning wird angezeigt, dass der erste integrator nicht angeschlossen ist...... und eben der fehler, der das system nicht simulieren lässt....
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ß,
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. ;-)
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......
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. ;-)
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....
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.
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?
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
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) ;-)
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???
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. ;-)
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ß,
Wobei das Pendel bei 60° sicher schon weit aus dem aus dem Bereich raus ist, der als linear angenommen werden kann...
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.