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

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

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

Bild 1.8-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 1.8-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

riccatineu.zip - Beispiele mit Scilab
  • Für den Zustandsregler, der nach y*=0 regelt ergibt sich die vereinfachte Gütefunktion:
BILDBESCHREIBUNG

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

Bild 1.8-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 1.8-9: Iterative Bestimmung von P.