kramann.info
© Guido Kramann

Login: Passwort:










Robuste Systemintegration
1 Grundlagen
..1.1 Newton
....1.1.1 LinearSchwinger
....1.1.2 Daempfung
....1.1.4 ODE
....1.1.5 Saaluebung
..1.2 NewtonEuler
....1.2.1 Traegheitsmomente
....1.2.2 Modellgleichungen
....1.2.3 Einfachpendel
..1.3 Scilab
....1.3.1 Erste_Schritte
....1.3.2 Skripte
....1.3.3 Funktionen
..1.4 Laplace
....1.4.1 Eigenwerte
....1.4.2 PT1
..1.5 Regleroptimierung
....1.5.1 Guetefunktion
....1.5.2 Heuristiken
....1.5.3 Scilab
..1.6 Einstellregeln
....1.6.1 Totzeit
....1.6.2 Methode1
....1.6.3 Methode2
....1.6.4 Scilab
..1.7 Zustandsregler
..1.8 Polvorgabe
..1.8 Polvorgabe_alt
..1.9 Beobachter
....1.9.1 Haengependel
..1.10 Daempfungsgrad
..1.11 Processing
....1.11.1 Installation
....1.11.2 Erste_Schritte
....1.11.3 Mechatronik
....1.11.4 Bibliotheken
....1.11.5 Uebung
....1.11.6 Snippets
......1.11.6.1 Dateioperationen
......1.11.6.2 Bilder
......1.11.6.3 GUI
......1.11.6.4 Text
......1.11.6.5 PDF
......1.11.6.8 Maus
......1.11.6.10 Zeit
......1.11.6.13 Animation
......1.11.6.15 Simulation
....1.11.7 Referenzen
..1.12 Breakout
2 Beispiel
3 Beispielloesung
4 Praxis
5 javasci
6 Fehlertoleranz1
7 Reglerentwurf
..7.1 Sprungantwort
..7.2 Messdaten
..7.3 Systemidentifikation
..7.4 Polvorgabe
..7.5 Beobachter
..7.6 Robuster_Entwurf
..7.7 SIL
8 Systementwicklung
9 Arduino
..9.1 Lauflicht
..9.2 Taster
..9.3 Sensor
..9.12 Motor_PWM1
..9.13 Motor_PWM2_seriell
..9.14 Motor_PWM3_analogWrite
..9.15 Scheduler
..9.20 AV
..9.21 Mikrofon
..9.22 Universal
....9.22.1 Laborplatine
....9.22.2 LED_Leiste
....9.22.3 Motortreiber
....9.22.4 Sensoreingaenge
....9.22.5 Taster
....9.22.6 Tests
....9.22.7 Mikrofon
....9.22.8 Lautsprecher
....9.22.9 Fahrgestell
..9.23 Zauberkiste
..9.24 OOP
....9.24.1 Uebungen
..9.25 AVneu
....9.25.1 Tests
..9.26 DA_Wandler
..9.27 CompBoard
....9.27.1 Tastenmatrix
....9.27.2 ASCIIDisplay
..9.28 CTC
..9.29 Tonerzeugung
10 EvoFuzzy
..10.1 Fuzzy
....10.1.1 Fuzzylogik
....10.1.2 FuzzyRegler
....10.1.3 Uebung9
....10.1.5 Softwareentwicklung
......10.1.5.1 AgileSoftwareentwicklung
......10.1.5.2 FuzzyRegler
......10.1.5.3 Uebung
....10.1.6 Umsetzung
......10.1.6.1 FuzzyRegler
......10.1.6.2 Simulation
......10.1.6.3 Optimierung
......10.1.6.4 Uebung
....10.1.7 Haengependel
......10.1.7.1 Haengependel
......10.1.7.2 Simulation
......10.1.7.3 FuzzyRegler
......10.1.7.4 Optimierer
......10.1.7.5 Genetisch
....10.1.8 Information
....10.1.9 Energie
..10.2 Optimierung
....10.2.1 Gradientenverfahren
....10.2.2 Heuristiken
....10.2.3 ModifizierteG
....10.2.4 optim
..10.3 Genalgorithmus
..10.4 NeuronaleNetze
....10.4.1 Neuron
....10.4.2 Backpropagation
....10.4.3 Umsetzung
....10.4.4 Winkelerkennung
..10.5 RiccatiRegler
11 Agentensysteme
12 Simulation
20 Massnahmen
21 Kalmanfilter
..21.1 Vorarbeit
..21.2 Minimalversion
..21.3 Beispiel
30 Dreirad
31 Gleiter
..31.1 Fehlertoleranz
80 Vorlesung_2014_10_01
81 Vorlesung_2014_10_08
82 Vorlesung_2014_10_15
83 Vorlesung_2014_10_22
84 Vorlesung_2014_10_29
kramann.info
© Guido Kramann

Login: Passwort:




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

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

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:
  1. Man legt ω z.B. mit 100rad/s fest.
  2. 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:
BILDBESCHREIBUNG

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:
BILDBESCHREIBUNG

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

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:
BILDBESCHREIBUNG

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:
BILDBESCHREIBUNG

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:
BILDBESCHREIBUNG

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:
BILDBESCHREIBUNG

Bild 0-9: Iterative Bestimmung von P.

  • Optimieren Sie den Zustands-Regeler für den Tilger mit Matlab mittels der Riccati-Gleichung.