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