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

PID-Regler in Zustandsdifferentialgleichung

 

modellbau-horst
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2012, 00:05     Titel: PID-Regler in Zustandsdifferentialgleichung
  Antworten mit Zitat      
Hallo zusammen,

ich stehe vor einem kleinen Problem und komme irgendwie nicht weiter...

Kurze Erläuterung: Ich habe ein Kontrollsystem, das durch eine (mehrdimensionale) Differentialgleichung gegeben ist: \frac{d}{dt} x(t) = f(x(t),u(t))

Ich kann also auf die Zustände x(t) des Systems durch u(t) von außen Einfluss nehmen. Nun habe ich festgestellt, dass "zwischen" meiner Einflussnahme (d.h. der Wahl von u) und dem System noch ein PID-Regler steckt. Das heißt das von mir gewählte u durchläuft erst noch einen PID-Regler, bevor es am System wirken kann.

Nun würde ich diesen PID-Regler gerne in mein DGL-Modell einbringen.
Also bisher sah das System so aus: (Anmerkung: u ist konstant und wirkt nur auf einen Zustand, also eindimensional)
\frac{d}{dt} x_{1} = ...
\frac{d}{dt} x_{2} = ...
...
\frac{d}{dt} x_{7} = u


Jetzt habe ich mich zunächst an einem PT1-Regler versucht:
T \cdot \frac{d}{dt} y + y = K \cdot e
bzw.
\frac{d}{dt} y = \frac{K}{T} \cdot e +  \frac{1}{T} \cdot y



Mit e:=u und y:= x_{8} verlängere ich mein System also zu:

\frac{d}{dt} x_{1} = ...
\frac{d}{dt} x_{2} = ...
...
\frac{d}{dt} x_{7} = x_{8}

<br />
\frac{d}{dt} x_{8} = \frac{K}{T} \cdot u +  \frac{1}{T} \cdot x_{8}


Wenn ich die DGL nun mit ode45 löse und plotte, sieht das soweit nicht schlecht aus. Doch nun stehe ich auf dem Schlauch... wie mache ich weiter, um auch I- und D-Anteil miteinzubringen? Ich meine irgendwann mal was gesehen zu haben, dass man das System noch mehr erweitern kann, um diese Anteile zu berücksichtigen.

Noch ein Punkt, der mich dabei irritiert: Für die Regelabweichung e habe ich einfach meinen (konstanten) Sollwert u eingesetzt. Aber eigentlich sollte das doch die Differenz aus Sollwert und Istwert sein.... aber wie kann ich diese direkt im DGL-Modell berechnen lassen?

Wäre super, wenn jemand mein Problem sieht und mir jemand helfen kann!

Schon mal im Voraus herzlichen Dank!
Euer Horst
Private Nachricht senden Benutzer-Profile anzeigen


vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2012, 16:19     Titel:
  Antworten mit Zitat      
Hallo Horst,

ich hätte eine andere Idee: Wieso nimmst du nicht dein System und wandelst es in ein Single-Input-Single-Output System um und schaltest den PID Regler davor. Meines Wissens nach lässt sich gar kein PID Regler in einem Zustandsraummodell integrieren. Hinzu kommt, dass du wie du gesagt hast ja nur von u in deinem System ausgehst, aber nicht von der Regelabweichung e. Du hast also keine Rückführung...

Mit dem Regler glaube ich verwechselst du auch was. Bin mir aber nicht sicher ob du einen PI oder PD meinst? Mit einer Polplatzierung für das Zustandsraummodell erhälst du praktisch einen PD-Regler, um jedoch einen PID Verhalten zu bekommen, müsstest du noch einen PI Regler davor schalten.

Besitzt du die Control System Toolbox? Wenn ja, ist das Umwandeln der Systeme kein Problem. Wenn nicht, ist es auch kein Problem, aber ein bisschen Schreibarbeit Wink

Gruß Vega
Private Nachricht senden Benutzer-Profile anzeigen
 
modellbau-horst
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2012, 17:29     Titel:
  Antworten mit Zitat      
Hallo Vega,

vielen Dank für deine Antwort.

Ich habe inzwischen noch ein wenig überlegt. Die beiden letzten Systemgleichungen lauteten:

\frac{d}{dt} x_{7} = x_{8}

<br />
\frac{d}{dt} x_{8} = \frac{K}{T} \cdot u -  \frac{1}{T} \cdot x_{8} (ich hatte hier vorher versehentlich ein Plus)

d.h.

\frac{d}{dt} x_{7} = x_{8}

<br />
\frac{d}{dt} x_{8} = \frac{1}{T} \cdot (K u -  x_{8})

Mit K=1 steht in der Klammer also genau die Regelabweichung e. Also ist \frac{d}{dt} x_8 dann ein Vielfaches der Regelabweichung und x_8 ist ja dann das Integral darüber, das dann als Steuerung bei x_7 angreift, d.h. ich habe hier einen I-Regler implementiert, oder?

Um jetzt noch einen D- bzw. P-Anteil zu erhalten, müsste ich also \frac{d}{dt} x_8 und \frac{d^2}{dt^2} x_8 in meine vorletzte Zeile hinein bekommen....

Zu deinem Ansatz:
Ja, ich besitze die Control System Toolbox, habe aber ehrlich gesagt noch nie damit gearbeitet. Was bedeutet eine Umwandlung zu einem SISO System? Wie geht das? Was hat das für Folgen? Kann ich immer noch alle Zustände des Systems auswerten?
Ich weiß, das waren auf einmal vielleicht ein paar Fragen zu viel, aber evtl. kannst du mir ja noch eine kleine Hilfestellung für den Anfang geben... wäre super! Smile

Nichtsdestotrotz hätte ich es am liebsten im Zustandsraummodell hineingedeichselt...
Zitat:
Meines Wissens nach lässt sich gar kein PID Regler in einem Zustandsraummodell integrieren.

Das wäre natürlich schade... das mit der Rückführung habe ich ja gewissermaßen schon umschifft. Ich habe in meinem System ja zumindest schon einmal das Integral über die Regelabweichung, nur nicht die Regelabweichung selbst....

Viele Grüße und schon mal vielen Dank!
Horst
Private Nachricht senden Benutzer-Profile anzeigen
 
vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2012, 21:57     Titel:
  Antworten mit Zitat      
Hallo,

im Prinzip bildest du mit
 \frac{d}{dt} x_{7} = x_{8} und   \frac{d}{dt} x_{8} = \frac{1}{T} \cdot (K u - x_{8})
wenn u der Sollwert und x_{8} die Ausgangsgröße ist. Aber ich denke das Proplem wird sein, dass du ja diese Regelabweichung nicht mehr auf die Strecke aufschaltest, wie es beim "Standartregelkreis" der Fall ist. Die Strecke merkt ja nur was von dem Sollwert.

Ein Siso System ist im Prinzip die Übertragungsfunktion für nur einen Eingang und nur einen Ausgang. Wenn du ein die Toolbox hast, dann kannst du mit
Code:
sys_ss = ss(A,B,C,D)

dein Zustandsraummodell erstellen. Mit
Code:
sys_üt = tf(sys_ss)

kannst du das System dann in eine Übertragungsfunktion umformen. Mit
Code:

kannst du dann deinen Regler erstellen, wobei" num" und "den" die Null- bzw. Polstellen repräsentieren. Die Rückführung kann mit einem Befehl der irgendwie so ähnlich wie "feedback" lautet, oder die Abkürzung davon, erstellt werden. Müsste ich bei Bedarf nochmal nachschauen.
Ob man dann nachher nochmal das System so Umwandeln kann, dass die ursprünglichen Zustandsgrößen wieder vorhanden ist, weiß ich jetzt leider nicht. Aber mit ein bisschen Aufwand sollte man auch daran kommen...

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
modellbau-horst
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2012, 17:20     Titel:
  Antworten mit Zitat      
Hallo Vega,

ich glaube du hast im ersten Satz das entscheidende Wort vergessen... Smile Was bilde ich im Prinzip damit?

Zitat:
Aber ich denke das Proplem wird sein, dass du ja diese Regelabweichung nicht mehr auf die Strecke aufschaltest, wie es beim "Standartregelkreis" der Fall ist. Die Strecke merkt ja nur was von dem Sollwert.


Der PID, den ich haben möchte, soll nur die von mir gewählte Steuerung u möglichst schnell annähern. Er soll das System, auf welches das u (bzw. x_8) dann wirkt, gar nicht mehr beeinflussen. Das heißt wiederum für mein Verständnis, dass dies ein I-Regler ist, da er zunächst die Soll-Steuerung u mit der aktuellen Ist-Steuerung x_8 vergleicht, das dann integriert und auf das System aufschaltet.

Ich glaube, ich habe diese Zweiteilung vorher nicht deutlich genug gemacht.

Vielen Dank für die ersten Befehle/Tipps für die Toolbox, werde ich einmal ausprobieren!

Viele Grüße
Horst
Private Nachricht senden Benutzer-Profile anzeigen
 
vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2012, 22:06     Titel:
  Antworten mit Zitat      
Hallo Horst,

oh ja, da scheint was zu fehlen Very Happy . Ich wollte schreiben im Prinzip bildest du die Regelabweichung, nur schaltest du diese nirgendwo mehr auf.

Zitat:
Der PID, den ich haben möchte, soll nur die von mir gewählte Steuerung u möglichst schnell annähern. Er soll das System, auf welches das u (bzw. x_8) dann wirkt, gar nicht mehr beeinflussen. Das heißt wiederum für mein Verständnis, dass dies ein I-Regler ist, da er zunächst die Soll-Steuerung u mit der aktuellen Ist-Steuerung x_8 vergleicht, das dann integriert und auf das System aufschaltet.


Also mit dem vorstehenden Absatz habe ich einige Probleme das nachzuvollziehen. Ich versuch‘s nochmal zusammen zu fassen:
Code:
Der PID, den ich haben möchte, soll nur die von mir gewählte Steuerung u möglichst schnell annähern.
Für mein Verständnis soll das heißen, du hast einen Sollwert (hier u) der von dem PID möglichst schnell erreicht werden soll?! Oder Soll u der Reglerausgang, also die Stellgröße für die nachfolgende Regelstrecke sein?
Zitat:
Er soll das System, auf welches das u (bzw. x_8) dann wirkt, gar nicht mehr beeinflussen.
Das macht für mich keinen Sinn. Wieso willst einen Regler einsetzen, der kein System beeinflusst?
Zitat:
Das heißt wiederum für mein Verständnis, dass dies ein I-Regler ist, da er zunächst die Soll-Steuerung u mit der aktuellen Ist-Steuerung x_8 vergleicht, das dann integriert und auf das System aufschaltet.
Und hier schreibst du wieder das du die Regelabweichung auf das System aufschaltest. Das kann ich aus den Differentialgleichungen nicht erkennen. Wie gesagt, so richtig schlau werde ich aus diesem Absatz nicht...
Vielleicht kannst du es ja noch etwas besser umschreiben.
Schau auch mal hier http://de.wikipedia.org/wiki/Zustan......BCberlagertem_Regelkreis nach, hier findest du etwas zum ursprünglichen Thema Zustandsregelung in Verbindung mit einem PI Regler.

Gruß vega
Private Nachricht senden Benutzer-Profile anzeigen
 
al3ko
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 12.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2012, 23:44     Titel:
  Antworten mit Zitat      
Hi,

ich finde das Thema sehr interessant. Ich frage mich, was du mit der Zustandsraum Darstellung des PID Reglers zu bezwecken gedenkst.

M.W.n. läufst du damit ins Leere, weil du damit nichts anfangen kannst. Normale Regelung im Zustandsraum mit einer K Matrix in der Rückführung ist Standard und in jeglicher Literatur zu finden. Möchte man nun den bleibende Regelabweichung eliminieren, muss man noch einen Integrierer in das Blockschaltbild reinpacken.

Diesbezüglich kann ich folgende Literatur empfehlen:
Linear Systems Control von Elbert Hendricks. Er widmet ein Kapitel dem Integralanteil in der Regelung.

Möchtest du nun deine Regelung pimpen, also schneller machen, verwendest du LQR Regelung. Dort kannst du nämlich die Schnelligkeit deiner Regelung gewichten - und das macht ja letztendlich der D-Anteil in deinem PID Regler.

Insofern verstehe ich dein Vorhaben gar nicht.

Wenn es aber darum geht, den PID Regler mit in das Zustandsraummodell einzubinden, würde ich einfach beide Übertragungsfunktionen (PID Regler und Strecke) multiplizieren. Du erhältst eine Übertragungsfunktion, die du nun mit Hilfe von Algebra in ein Zustandsraum überführen kannst.

Allerdings sehe ich noch nicht, dass dir das irgendwas bringen wird.


Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
modellbau-horst
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2012, 17:10     Titel:
  Antworten mit Zitat      
Vielen Dank für eure Hinweise! Ich bin leider kein Ingenieur geschweige denn Regelungstechniker, deswegen ist es mir wohl ein wenig schwer gefallen, das Problem exakt mit den richtigen Begriffen zu beschreiben und auf den Punkt zu bringen. Entschuldigung hierfür! Aber ich versuche es noch einmal Smile

Also ich habe einen konstanten Sollwert u, den ich in das erste "System" (ich weiß nicht ob der Begriff System hier passend ist, aber ich verwende ihn mal) hineingebe. In diesem ersten System steckt ein PID-Regler, der die Eingangsgröße u ziemlich schnell annähert. Diese Annäherung ist hier x_8 und somit der Ausgangswert des ersten Systems. Dieses x_8 wirkt dann als Eingang auf das zweite "System". Das heißt x_8 ist die Schnittstelle zwischen dem ersten System und dem zweiten System. Auf das zweite System wirkt dann also nach einer kurzen Übergangsphase konstant das angenäherte u.

In meinem Beispiel ist das erste System durch die Variable x_8 (und deren Ableitung) und das zweite System durch die Variablen x_1 bis x_7 (und deren Ableitungen) dargestellt. Ich möchte nun, dass sich nach Eingabe eines Sollwerts u die Variable x_8 in einem PID-ähnlichen Verhalten dem Sollwert u nähert.

Ich habe dieses x_8 nun mal für u=2 geplottet… das sieht soweit sehr gut aus, siehe unten.

Man sieht, wie sich der Zustand x_8 nach geringer Zeit an die 2 annähert. Jetzt würde ich allerdings dieses Verhalten noch ein wenig weiter beeinflussen bzw. abändern wollen, da das "erste System" in der Realität auch ein deutliches Überschwingen aufweist und kein so schönes Verhalten wie im Bild hat.

Zitat:
Wenn es aber darum geht, den PID Regler mit in das Zustandsraummodell einzubinden, würde ich einfach beide Übertragungsfunktionen (PID Regler und Strecke) multiplizieren. Du erhältst eine Übertragungsfunktion, die du nun mit Hilfe von Algebra in ein Zustandsraum überführen kannst.

Ja, so ein Umweg wäre wahrscheinlich denkbar… muss ich einmal testen. Ich hatte gehofft, ich könnte den PID "einfach" durch Hinzufügen ein paar weiterer DGLs x_8, x_9, x_{10} beschreiben....

Ich hoffe, das Problem ist jetzt zumindest klar und vielleicht sind jetzt auch meine vorherigen Bemerkungen ein wenig verständlicher Wink

Noch eine kurze Bemerkung zu den Gründen: Ich hätte gern ein Gesamtmodell in einem Differentialgleichungssystem, da dieses Gesamtsystem dann komplett wieder in diverse Regler gesteckt wird. Dabei spielt sich alles im Zustandsraum resp. Differentialgleichungen ab, weshalb ich auch hier diesen direkten Weg gewählt habe, um Übertragungsfunktion und Frequenzbereich zu umgehen. (Ich weiß, dass es das nicht leichter macht. Smile )

Soweit schon einmal vielen Dank für eure Ansätze!

Viele Grüße
Horst

plot_t_x8.png
 Beschreibung:
Variable x_8 gegen die Zeit aufgetragen.

Download
 Dateiname:  plot_t_x8.png
 Dateigröße:  3.82 KB
 Heruntergeladen:  1449 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
al3ko
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 12.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2012, 11:54     Titel:
  Antworten mit Zitat      
Wenn ich dich richtig verstehe, versuchst du eine Kaskadenregelung zu realisieren, allerdings auf Basis von Zustandsraummodellen. So etwas habe ich tatsächlich noch nie gesehen, müsste aber theoretisch nach dem gleichen Muster geschehen.

Ohne deine vorigen Posts wirklich verstanden zu haben, wäre hier wie ich herangehen würde:

- Beschreibe dein System ohne PID Regler als Zustandsraummodell.
- Das Zustandsraummodell brichst du auseinander, so dass du einen Satz von Differentialgleichungen hast.
- Dein System hat einen Steuereingang u. Nun nimmst du den PID Regler als einfache Differentialgleichung, finden kannst du sie überall im Internet oder in der Fachliteratur. Hier z.B.
http://www.rn-wissen.de/index.php/Regelungstechnik#PID-Regler
- Der Ausgang des PID Reglers ist nun der Steuereingang deines Systems.
- Der Eingang deines PID Reglers ist die Regeldifferenz e.

Ob dieser Ansatz Früchte tragen wird, sei mal dahingestellt Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2012, 18:34     Titel:
  Antworten mit Zitat      
Bin mir auch nicht sicher, ob ich nun weiß, was du umsetzen möchtest. Um hier letztendlich Licht ins dunkel zu bringen, könntest du vielleicht ein Signalflussplan skizzieren. Ich denke das würde vieles einfacher machen...
Also wenn du wie al3ko sagt eine Kaskadenregelung umsetzen möchtest, brauchst du definitiv zwei Rückführungen. Wenn ich das richtig sehe, hast du diese noch nicht im System?!
Mich interessiert mittlerweile auch, welches System du konkret modellieren möchtest. Hat es zufällig was mit einem quadrocopter zu tun (wg. deinem Alias)?

Gruß vega
Private Nachricht senden Benutzer-Profile anzeigen
 
modellbau-horst
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.05.2012, 13:22     Titel:
  Antworten mit Zitat      
Sorry, dass ich mich so lange nicht gemeldet habe, die letzten 2 Wochen ging's drunter und drüber und ich bin nicht mehr dazugekommen, über mein Problem zu sinnieren.

Hm ja, Kaskadenregelung trifft's nicht ganz. Ich habe zwei kaskadierte Systeme. Der PID, den ich suche, wirkt allerdings nur auf dem ersten System.

Das zweite System kenne ich komplett (inklusive Zustands-DGL). Vom ersten System weiß ich nur, wie es ungefähr auf einen Eingang reagiert (und zwar mit leichtem Überschwingen aber schneller Sollwertannäherung) und eben dass in diesem ersten System auch ein PID-Regler mitspielt.

Jetzt bin ich hergegangen und habe eine Übertragungsfunktion von einer PT2-Regelstrecke mit PID-Regler genommen und so lange an den Parametern gespielt, bis die Sprungantwort so aussah, wie ich sie mir vorstelle.

num=[Kd Kp Ki];
den=[r1 r2+Kd r3+Kp Ki];

Anschließend habe ich diese Übertragungsfunktion in den Zustandsbereich transformiert über [A,B,C,D] = tf2ss(num,den)

D.h. ich habe folgende Zustands-DGL für das erste System:
\frac{d}{dt} z = Az + Bu
y = Cz + Du

Diese habe ich jetzt an das erste System gehängt:

\frac{d}{dt} x_{1} = ...
\frac{d}{dt} x_{2} = ...
...
\frac{d}{dt} x_{7} = y = Cz + Du
\frac{d}{dt} z = Az + Bu

Das Ergebnis sieht soweit gut aus... zumindest qualitativ.

Einziges Problem ist jetzt: Die Sprungantwort des ersten Systems ist nur geschätzt/geraten/gefühlt, ich habe leider keine Daten darüber. Ich hoffe, ich kann diese Daten noch bald auslesen, sodass dann ein exaktes Fitting der Sprungantworten möglich ist.

Vielen Dank für eure Tipps, die haben mir auf jeden Fall weitergeholfen!
Grüße, Horst

P.S.: Nein, ich beschäftige mich mit keinem Quadrocopter Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Bensko89

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2016, 17:31     Titel:
  Antworten mit Zitat      
Hi modellbau-horst,

bist du mit deinem Projekt voran gekommen? Wäre daran interessiert.

Grüße
 
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.