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.
|