WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

LQR-Regelung eines gedämpften Schwingers

 

michigrunf
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2016, 12:08     Titel: LQR-Regelung eines gedämpften Schwingers
  Antworten mit Zitat      
Hallo zusammen,

mir ist ein gedämpfter Schwinger mit folgender Systemgleichung gegeben:

\ddot{y} + 2 \delta \cdot \dot{y} + \omega_0^2 \cdot \sin(y - \theta) = 0

\theta ist dabei mein Systemeingang u. Da das System ja asymptotisch stabil ist, kann man u einfach auf einen festen Wert setzen und warten, bis sich das System auf diesen Wert eingeschwungen hat. Was ich nun gerne tun würde, ist dies durch eine Regelung zu optimieren, sodass das Schwingen und die Einschwingdauer (t_90-Zeit) reduziert werden.

Dazu habe ich testweise mal eine LQR Regelung simuliert, mit der Erwartung, dass diese -ähnlich wie beim invertierten Pendel- zunächst einen deutlich größeren Control-Input generiert als eine einfache Steuerung und am Ende durch einen entsprechend entgegengesetzt gerichteten Input das System wieder abbremst. Wie man am Plot sehen kann, funktioniert mein Code oder der Ansatz aber nicht wie gedacht. Was mache ich da falsch?

(Das zur Simulation verwendete Matlab-Skript habe ich angehängt.)


Im Fall der Steuerung ist u konstant 0.

lqr1.m
 Beschreibung:

Download
 Dateiname:  lqr1.m
 Dateigröße:  1.31 KB
 Heruntergeladen:  569 mal
Private Nachricht senden Benutzer-Profile anzeigen


@Johannes

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2016, 12:40     Titel:
  Antworten mit Zitat      
Dein Eingang und dein Zustand x1=x hängen vom Sinus ab.
Somit ist deine Zustandsdarstellung die du für LQR verwendest falsch.
Die Darstellung die du verwendest würde für eine DGL der Art xpp = -2*delta*xp - w0^2 * x passen.
Dein System ist nichtlinear und daher würde ich raten es im Arbeitspunkt zu linearisieren. Alternativ kannst du auch einen nichtlinearen Regler entwerfen.

Grüße,
Johannes
 
michigrunf
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2016, 13:45     Titel:
  Antworten mit Zitat      
Hallo Johannes,

Danke für deine schnelle Antwort! Eine Linearisierung habe ich vorgenommen, das hätte ich im ersten Beitrag wohl noch erwähnen sollen. Und zwar sieht die so aus:

\ddot{y} + 2 \delta \cdot \dot{y} + \omega_0^2 \cdot \sin(y - \theta) = 0

Mit der Annahme y - \theta << 1 gilt: sin(y - \theta) \approx y - \theta

Damit erhält man:
\ddot{y} + 2 \delta \cdot \dot{y} + \omega_0^2 \cdot y = \omega_0^2 \cdot \theta

Dies lässt sich in die von dir genannte Form bringen. Setzt man nun x_1 = y, folgt:
\dot{x}_1 = \dot{y} = x_2
\dot{x}_2 = \ddot{y} = -2 \delta \cdot x_2 - \omega_0^2 \cdot x_1 + \omega_0^2 \theta

Damit ergibt sich folgende Zustandsraumdarstellung:

<br />
A =
<br />
\begin{bmatrix}
<br />
0 & 1 \\
<br />
-\omega_0^2 & -2 \delta
<br />
\end{bmatrix}
<br />
\quad\quad B =
<br />
\begin{bmatrix}
<br />
0 \\
<br />
\omega_0^2
<br />
\end{bmatrix}
<br />

Das Ergebnis ist dann das im Plot gezeigte.

Da die Annahme zur Sinusnäherung bei dem System eigentlich nicht gilt, habe ich die Linearisierung mal in die Simulation eingebaut gehabt (ist im Code noch drin, aber auskommentiert), sodass A und B (und darauf aufbauend dann auch die LQR Gain Matrix) ständig mit dem momentanen Arbeitspunkt neu gebildet werden:

<br />
A =
<br />
\begin{bmatrix}
<br />
0 & 1 \\
<br />
-\omega_0^2 \cdot \cos(x_1 - \theta) \quad & -2 \delta
<br />
\end{bmatrix}
<br />
\quad\quad B =
<br />
\begin{bmatrix}
<br />
0 \\
<br />
\omega_0^2 \cdot \cos(x_1 - \theta)
<br />
\end{bmatrix}
<br />

Das Ergebnis ist aber nahezu identisch zum linearisierten Modell.


Edit:
Hier noch ein händisch gemachtes Beispiel mit Bang-Bang-Control, das grob zeigt, in welche Richtung das am Ende gehen könnte/sollte:
(Möglicherweise ist das in diesem Fall sogar der optimale Ansatz...)
Private Nachricht senden Benutzer-Profile anzeigen
 
@Johannes

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2016, 00:18     Titel:
  Antworten mit Zitat      
Hi Michi,

hatte leider nicht früher Zeit um mir dein Modell einmal genauer anzusehen.
Ich habe Q und R mal ein bischen variiert und wenn du
Q = [1 0;0 0] und  R = 0.2 wählst dann sieht das schon deutlich dynamischer aus.

Q muss lediglich positiv semidefinit sein deswegen kannst du auf die Gewichtung eines Zustands (hier Drehrate) verzichten. Je kleiner R desto weniger wird u im Gütemaß gewichtet.

Bang-Bang Control ist ein zeitoptimaler Ansatz bei beschränkter Stellgröße und basiert auf dem Satz von Feldbaum (n-1 Umschaltungen). Streng genommen gelten die n-1 Umschaltungen nur bei reelen Eigenwerten von A. In deinem Fall reicht aber eine Umschaltung trotz eines konjugiert komplexen Polpaars aus.

Viele Grüße,
Johannes
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.