Polvorgabe bei einem Zustandsregler
Verbesserung der Reglereigenschaften
- Zur Verbesserung der Regelung eines DC-Motors soll im folgenden der komplette Zustandsvektor y zurückgeführt werden.
- D.h. u wird sowohl aus ω, als auch aus i berechnet.
- Ein solches Konzept heißt Zustandsregler.
|
Bild 0-1: Prinzip-Blockschaltbild eines Zustandsreglers.
- Im einfachsten hier behandelten Fall wird der Zustand y mit einer konstanten Matrix -R multipliziert, um den Eingangsvektor u zu berechnen.
- Es funktioniert aber nur, wenn die Zustandsgrößen zu Null geregelt werden können.
- Hierzu werden die Zustandsgröße durch solche ersetzt, die in den stationären Zustand hinein verschoben sind.
- Durch entsprechende Wahl der konstanten Werte der Matrix R können nun die Eigenwerte des Gesamtsystems beeinflußt werden.
- Durch diese so genannte Polvorgabe wird das dynamische Verhalten der Regelung bestimmt.
- Nur wenn die Eigenwerte links der imaginären Achse liegen, ist das System stabil.
- Je weiter links die Eigenwerte liegen, desto schneller reagiert die Regelstrecke.
- Jedoch sind dann auch die aufzuwenden Energien sehr hoch.
- Nur die der imaginären Achse am nächsten liegenden Eigenwerte sind für die Regelung wirklich relevant.
- Diese Eigenwerte werden auch "Dominante Pole" genannt.
|
Bild 0-2: Alle Eigenwerte links der imaginären Achse: Stabiles System mit dominanten konjugiert komplexen Eigenwerten.
- Erneut soll das Motor-Modell herangezogen werden, um in diesem Fall eine Zustandsregelung zu realisieren.
- Der stationäre Zustand, in den die Regelung das System überführen soll, kann folgendermaßen bestimmt werden:
|
- Man legt ω z.B. mit 100rad/s fest.
- 2. i ergibt sich aus Jdω/dt=ki-Dω für dω/dt=0.
|
- Diese stationären Werte werden im folgenden ωstat und istat, bzw. ystat genannt.
- Die um den stationären Punkt entwickelten Zustandsgleichungen verwenden die Zustandsgrößen ω* und i*, bzw. y*.
- Für diese gilt: ω*=ω-ωstat und i*=i-istat, bzw. y*=y-ystat
- Da die stationären Werte konstant sind stimmen die Ableitungen dy*/dt und dy/dt miteinander überein.
- Zunächst wählen wir y* als Zustand und gehen deshalb davon aus, dass das Modell zum Punkt y*=0 geregelt werden soll:
|
Bild 0-3: Rückführung des Zustands beim um einen stationären Punkt entwickelten Modell.
- Im letzten Gleichungssystem tauchen nur noch die Zustandsgrößen auf.
- u wurde eliminiert.
- Die Eigenwerte dieses Zustands-geregelten Gesamtsystems ergebn sich zu:
|
Bild 0-4: Eigenwerte des Zustands-geregelten Gesamtsystems
- r2 kann nun beispielsweise aus dem forderen Summanden so gewählt werden, dass die Eigenwerte bei -10 liegen.
- r1 wird dann z.B. so angepasst, dass die Wurzel verschwindet (aperiodischer Grenzfall).
|
Bild 0-5: Festlegen der Polstellen über r1 und r2
- Nun haben wir folgendes Problem:
- Die Systemmatrix des realen System ist unveränderbar.
- Darum muss der über die Rückführung des Systemzustandes modifizierte Anteil wieder aus der Systemmatrix herausgezogen werden.
- Das modifizierte System mit y* muß ferner auf das ursprüngliche mit y zurückgeführt werden.
- Durch y*=y-ystat ergibt sich:
|
Bild 0-6: Trennung des Motor-Modells vom Regler-Anteil.
- Da der Motor nur über die Spannung geregelt wird, kann der stationäre Anteil der zweiten DGL auf die Spannung geschlagen werden.
- Der stationäre Anteil der zweiten DGL kann aber im realen System nicht berücksichtigt werden.
|
Aufgabe 1
- Setzen Sie das Zustands- geregelte Motormodell in Scilab mit folgeden Parametern um.
|
D=0.0018;
J=0.00045;
K=0.015;
R=1.0;
L=0.003;
Code 0-1: Zu verwendende Parameter für das DC-Motor-Modell.
- Konkrete Hinweise zum Vorgehen:
- Setzen Sie zuerst das Motormodell in Scilab um und erweitern es dann.
- Bedenken Sie, dass die benötigte stationäre Winkelgeschwindigkeit ωstat hier der Sollwert für den Regler ist und sich die benötigte Spannung im stationären Zustand, sowie der stationäre Strom istat daraus ergibt.
- Der Einfachheit halber wollen wir 5Volt als Spannung im stationären Zustand vorgeben und daraus ωstat und istat bestimmen.
- Setzen Sie das Zustandsgeregelte Modell so um, dass man die Lage des doppelten realen Pols vorgeben kann.
- Wenn Sie mit diesen Vorgaben einmal das ungeregelte Modell (blaue Kurve), dann das geregelte bei einer Pollage λ=-10 (rot) und λ=-20 simulieren, sollten Sie folgenden Kurvenverlauf erhalten:
- Interpretieren Sie die Kurven im Vergleich.
|
Bild 0-6: Scilab-Umsetzung für das Festlegen der Polstellen über r1 und r2
Polvorgabe mit Hilfe der Scilab-Funktion ppol
- Anstatt durch geeignete Wahl von R die gewünschten Pollagen für (A-BR) in dy/dt=(A-BR)y zu bestimmen, kann dies auch durch eine Scilab-Funktion geschehen.
- Durch Vorgabe von A, B und der "Wunschlage" der Pole, liefert diese Funktion, sofern möglich, die Matrix R.
- Es handelt sich hier um ein Optimierungsprogramm, das versucht R so zu bestimmen, dass man so nahe wie möglich an die Wunschpole herankommt.
- Folgendes Scilab-Skript liefert R für den doppelten Eigenwert bei -10:
|
D=0.0018;
J=0.00045;
k=0.015;
R=1.0;
L=0.003;
A = [
[-D/J,k/J];
[-k/L,-R/L]
];
B = [
[0];
[1/L]
]
R=ppol(A,B,[-10,-10])
//Ergebnis überprüfen:
spec(A-B*R)
Code 0-1: Polvorgabe für einen Zustandsregler mit Scilab.
- Die Rücktransformation für einen stationären Zustand ungleich von Null, bleibt einem aber auch hier nicht erspart.
|
Aufgabe 2
- Setzen Sie die Scilab-Funktion ppol ein, um für obiges Beispiel zunächst die Eigenwerte λ1,2=-10 zu realisieren.
- Setzen Sie anschließend die Eigenwerte λ1,2=-10+/-10i um.
- Erzeugen Sie Plots zur Darstellung des Verlaufs der Winkelgeschwindigkeiten für konstant 5V und die beiden Regler.
- Erzeugen Sie Plots zur Darstellung des Spannungsverlaufs für konstant 5V und die beiden Regler.
- Hinweis: Die Verläufe von u können nach der Simulation "rekonstruiert" werden.
|
Optimierung nach Riccati
- Für den Zustandsregler, der nach y*=0 regelt ergibt sich die vereinfachte Gütefunktion:
|
Bild 0-7: Gütefunktion für Zustandsregler
- Durch Einsetzen der Lösung für die Sprungantwort für den Zustandsregler in die Gütefunktion F und partielle Ableitung, kann eine direkte Optimierungsforschrift für F gewonnen werden (vergl. Otto Föllinger, Reglungstechnik, Hüthik 1992, S.468-488).
- Es entsteht ein nichtlineares Gleichungsystem, aus dessen Lösung die optimale Wahl der Elemente der Matrix R folgt.
- Aus dem nicht lineraren Gleichungssystem wird zunächst die unbekannte Matrix P bestimmt.
- Die Matrix P hat die gleichen Dimensionen, wie die Systemmatrix A
- B ist die Eingangsmatrix, vergl. Bild 7-1.
- Aus P kann dann direkt die Rückführungsmatrix R bestimmt werden.
- Die Vorschrift zur Bestimmung von R lautet:
|
Bild 0-8: Optimale Auslegung des Zustandsreglers mittels der Riccati-Gleichung.
- Da diese Riccati-Gleichung nicht linear ist, läßt sie sich in der Regel auch nicht so leicht von Hand lösen.
- Matlab bietet eine Funktion, die durch Vorgabe der Matrizen A,B,Q und S die Matrix P liefert.
- Das folgende Matlab-Makro bestimmt P und R für das Motorbeispiel:
|
Matlab-Makro zur Bestimmung von R für das Zustands-geregelte Motor-Modell über die Riccati-Gleichung.
- Ein von Kleinmann vorgeschlagenes iteratives Verfahren zur Bestimmung von P besteht nur noch aus linearen Gleichungen:
|
Bild 0-9: Iterative Bestimmung von P.
Beispiel Sommersemester 2017 - 24.05.2017
// System: x.. -2x. -x = u
// ... hat eine doppelte reelle Polstelle bei +1 => instabil
// gewünscht: Zustandsregler so auslegen, dass
// Pol bei -1+i und -1-i entsteht.
// Formal:
// [dx/dt;dv/dt] = A*[x;v] + B*u
// [dx/dt;dv/dt] = [0,1;-1,2]*[x;v] + [0;1]*u
// mit u = R*[x;v] = [r1,r2]*[x;v] =>
// [dx/dt;dv/dt] = [0,1;-1,2]*[x;v] + [0;1]*[r1,r2]*[x;v] <=>
// dy/dt = (A - B*R)*y
A=[0,1;-1,2]
spec(A)
// => lambda1 = 1, lambda2 = 1
B = [0;1]
R = ppol(A,B,[-1-%i,-1+%i])
// => r1 = 1, r2 = 4
Astern = A-B*R
// == [0,1;-2,-2]
spec(Astern)
// => lambda1 = -1-i, lambda2 = -1+i
Code 0-1: Polvorgabe, Scilabdatei: polvorgabe_bei_zustandsregler.sce