www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Zustandsregler entwerfen


Autor: Mathias Wieland (etezabel)
Datum:
Angehängte Dateien:

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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was kommt denn für eine Fehlermeldung?

Sieht eigentlich soweit gut aus.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht stellst du hier auch mal die Matlab/Simulink-Files rein, dann 
ist das Suchen nicht so mühsam.

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ok, hier sind die matlab-files.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein warning wird angezeigt, dass der erste integrator nicht 
angeschlossen ist......
und eben der fehler, der das system nicht simulieren lässt....

Autor: Gast (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

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

Autor: Gast (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:
Angehängte Dateien:
  • aus.txt (293 Bytes, 211 Downloads)

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

Autor: Gast (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

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

Autor: Detlef _a (detlef_a)
Datum:

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

Autor: Gast (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

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

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

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

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei das Pendel bei 60° sicher schon weit aus dem aus dem Bereich raus 
ist, der als linear angenommen werden kann...

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.