Theorie zu Teil 5: Implementierung eines Zustandsreglers
Verbesserung der Reglereigenschaften
     - Zur Verbesserung der Regelung soll nun 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.
 
     - Die folgenden zip-Files enthalten ein Simulationsprogramm des Zustands-geregelten Motors in C++:
 
     - In der Klasse ModellMotor ist hier die Zustandsrückführung realisiert und für r1 und r2 können darin einige vorausberechnete Werte eingestellt werden.
 
  | 
 
 C++ Klassen für Zustands-geregelten Motor
Aufgabe
     - Spielen Sie die unterschiedlich gewonnenen Werte für r1 und r2 durch und interpretieren Sie die Ergebnisse.
 
  | 
Optimierung
     - Wie beim PID-Regler können auch hier die Regel-Parameter auf Grundlage einer Gütefunktion optimiert werden.
 
     - Die Parameter r1 und r2 können beispielsweise über eine in mehreren Stufen verfeinerte Parameterstudie optimiert werden.
 
     - Für eine Gütefunktion F=Summe(ω2+i2+10u2) wurde das im nachfolgenden C++-Programm realisiert:
 
  | 
 
 C++ Klassen für eine Optimierung des Zustands-geregelten Motors
Aufgabe
     - Implementieren Sie das zuvor behandelte Tilger-Modell mit einer aktiven Kraft F zwischen Schwingmasse und Tilgermasse.
 
     - Optimieren Sie hierfür die Zustands-Regelung der Kraft F.
 
  | 
Aufgabe
     - Das folgende zip-File enthält das Simulationsprogramm für einen Einfachpendel.
 
     - Die zugrundeliegenden Simulationsgleichungen wurden mittels der Newton/Euler-Gleichungen bzgl. des Schwerpunktes erstellt.
 
     - Als Nullpunkt für φ wurd die senkrechte Position des Pendels gesetzt.
 
     - Nun soll das Pendel-Modell mit dem Motor-Modell in einer Klasse ModellMotorpendel zusammengefasst werden.
 
     - Dabei ist zu beachten, dass sich bei Zusammenfassen von Rotor und Pendel der Schwerpunkt verschiebt.
 
     - Das Gesamtträgheitsmoment ergibt sich als Summe der Einzelträgheitsmomente zuzüglich der Steiner-Terme (nach Satz von Steiner).
 
     - Stellen Sie zunächst das Gesamtmodell von Hand auf.
 
     - Nach den Zwangskräften muß dabei nicht aufgelöst werden.
 
     - Um sie aus dem entstehenden linearen Gleichungssystem (LGS) zu bestimmen, ist im Simulationsprogramm für den Pendel der Gauss-Algorithmus implementiert.
 
     - Schreiben Sie das Simulationsprogramm.
 
     - Ergänzen Sie einen Zustandsregler, der das Pendel in senkrechte Lage bringt und dort hält und optimieren Sie diesen.
 
     - Schreiben Sie ein Programm, das für jeden Simulationslauf eine VRML-Animation erstellt.
 
  | 
 
 C++ Klassen für ein Einfachpendel und dessen Simulation.
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 13-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.
 
     - Optimieren Sie den Zustands-Regeler für den Tilger mit Matlab mittels der Riccati-Gleichung.
 
  |