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:




Praktische Einführung in die Optimierung der Parameter von Regelkreisen mit Hilfe von Scilab

  • Für einen Optimierer benötigt man folgende Elemente:
  1. Das zu optimierende System - entweder als reales HIL-System oder als Simulationsmodell
  2. Eine Simulationsumgebung, die es erlaubt das zu optimierende System für bestimmte Parameter in seinem Verhalten zu testen.
  3. Eine zu minimierende Gütefunktion, die aus einem Test eine Zahl extrahiert, die Aufschluß über die Brauchbarkeit der verwendeten Parameter gibt.
  4. Ein Optimierer, der aufgrund der Ergebnisse vergangener Tests mit den bisherigen Parametersätzen neue zu testende Parametersätze generiert und diesen Prozeß abbricht, wenn ein bestimmtes Gütemaß erreicht, bzw. keine Parametersätze mehr gefunden werden, die eine weitere Verbesserung der Tests bewirken.
Ablauf einer Parameteroptimierung für ein Simulationsmodell mit Regelkreis.

Bild 0-1: Ablauf einer Parameteroptimierung für ein Simulationsmodell mit Regelkreis.

Optimierung der Parameter des PID-Reglers für das PT2-Übertragungsglied der Heizregelstrecke

  • Ein weiteres mal wird das einfache Regelsystem aus der Einführung verwendet.
  • Hier nun, um den Vorgang der Parameteroptimierung zu veranschaulichen.
  • Anders als in der gebräuchlichen Definition eines PID-Reglers wird, um das Optimierungsverhalten zu verbessern, bei der Übertragungsfunktion der P-Anteil (Faktor K) nicht vor alle Terme gezogen, sondern wirklich nur vor den proportionalen Anteil.
  • Außerdem wurde der Parameter W als der Kehrwert der üblichen Nachstellzeit TN verwendet, um eine mögliche Unstetigkeit bei TN=0 zu vermeiden.
  • Die Übertragungsglieder für die Strecke G(s) und R(s) sind damit wie folgt definiert:
Zu optimierendes Regelsystem. Zu optimieren sind die Parameter K, W und T.

Bild 0-2: Zu optimierendes Regelsystem. Zu optimieren sind die Parameter K, W und T.

Steuerung von Scicos-Modellen durch Scilab

  • Häufig lassen sich Modelle recht komfortabel mit Scicos aufbauen.
  • Jedoch lassen sich prozedurale Abläufe, wie der hier umzusetzende Optimierungsvorgang leichter mit Hilfe eines Scilab-Skriptes umsetzen.
  • Im folgenden Bild ist zunächst das umgesetzte Scicos-Modell gezeigt.
heizregler001.cos - Scicos-Modell des Regelsystems

Bild 0-3: heizregler001.cos - Scicos-Modell des Regelsystems

  • Wegen Schwierigkeiten, yout nach einer von Scilab gesteuerten Simulation im Workspace zu aktualisieren, wird bis auf weiteres von dieser Methode Abstand genommen.

Darstellung des Gesamtmodells im Zeitbereich und Optimierung mit Scilab

  • Die Differentialgleichung der Regelstrecke wird durch die Substitution dy/dt=v in als Differentialgleichungssystem 1. Ordnung dargestellt.
  • Dabei entspricht y[1] in der Funktion rechteSeite(..) gerade y und y[2] der durch Substitution gewonnenen Zustandsgröße v.
  • Um die notwendige Integration der Regeldifferenz w-y zu bewerkstelligen, wird ein dritter Systemzustand y[3] definiert, dessen Ableitung gerade w-y ist.
  • Die Eingangsgröße u, die dem Ausgang des Reglers entspricht kann nun mit Hilfe aller drei Zustandsgrößen bestimmt werden.
Darstellung des Regelsystems im Zeitbereich (Das y in der dritten Zeile entspricht schon dem Zustandsvektor im Programm und entspricht nur insofern dem y in Zeile 2, als gilt: y in Zeile 2 = y[1] in Zeile 3)

Bild 0-4: Darstellung des Regelsystems im Zeitbereich (Das y in der dritten Zeile entspricht schon dem Zustandsvektor im Programm und entspricht nur insofern dem y in Zeile 2, als gilt: y in Zeile 2 = y[1] in Zeile 3)

  • Hinweise zu dem folgenden Scilab-Skript:
  • Die Funktion "rechteSeite(..)" entspricht dem geregelten System.
  • Die Funktion "berechneFehler(..)" ist das Gütemaß.
  • Die Funktion "optim(..)" ist eine Standardfunktion von Scilab zur Parameteroptimierung.
  • Durch Definition von parK,parW,parT,t,y,rechteSeite als globale Variablen, bzw. Funktionen, bleibt "rechteSeite" von "berechneFehler" aus aufrufbar, auch nachdem "berechneFehler" "optim" übergeben wurde.
parK=1.0;
parW=1.0;
parT=1.0;
function f = rechteSeite(t,y)
    w=0.7;
    u=parK*(w-y(1,1))+parW*y(3,1)+parT*(-y(2,1));
    f(1,1) =              y(2,1);
    f(2,1) =  -y(1,1)-2.0*y(2,1)+u;
    f(3,1) = w-y(1,1);
endfunction
t=0:0.05:10;
y0 = [0,0,0]';
t0=0;
//Damit y existiert, einmal simulieren:
y = ode(y0,t0,t,rechteSeite);
global parK,parW,parT,t,y,rechteSeite;
function fehler = berechneFehler(parameter)
    parK = parameter(1,1);
    parW = parameter(2,1);
    parT = parameter(3,1);
    t=0:0.05:10;
    y0 = [0,0,0]';
    t0=0;
    y = ode(y0,t0,t,rechteSeite);
    [zeilen,spalten] = size(y) 
    fehler = sum( abs( y(1,1:spalten) - 0.7*ones(1,spalten) ) );
endfunction
p0 = [1;1;1];
[fehlermin,popt] = optim(list(NDcost,berechneFehler),p0)
//Darstellung der Ergebnisse:
parK = p0(1,1);
parW = p0(2,1);
parT = p0(3,1);
y = ode(y0,t0,t,rechteSeite);
parK = popt(1,1);
parW = popt(2,1);
parT = popt(3,1);
yopt = ode(y0,t0,t,rechteSeite);
plot(t,y(1,:),'red',t,yopt(1,:),'blu');
//siehe help axes_properties
a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'y';
a.title.text = 'Vergleich Regelsystem optimiert/nicht optimiert';
hl=legend(['nicht optimiert';'optimiert'],a=1);

Code 0-1: Optimierung der Regelparameter in Scilab

Resultat der Optimierung, Startwerte: K=W=T=1, optimierte Werte: K=363.20773, W=78.099006, T=15.574789

Bild 0-5: Resultat der Optimierung, Startwerte: K=W=T=1, optimierte Werte: K=363.20773, W=78.099006, T=15.574789

Übung
  • Optimierungsverfahren können auch dazu verwendet werden, eine Regelstrecke zu identifizieren.
  • Angenommener Fall: Es soll ein Antriebssystem Geschwindigkeits-geregelt werden.
  • Für die Struktur dieses Antriebssystems (Regelstrecke) erscheint die Annahme als sinnvoll, sie als PT2-Übertragungsglied zu betrachten.
  • Als Sprungantwort lieferte das bereffende System folgendes Zeitverhalten (Zeitverlauf weiter unten).
  • Dabei wurde der Eingang des Systems mit einem Einheitssprung zum Zeitpunkt t=0s beaufschlagt.
  • Identifizieren Sie die Parameter dieser Regelstrecke mit Hilfe der Optimierungsfunktion optim in Scilab.
  • Orientieren Sie sich bei der Lösung der Aufgabe an obigem Optimierungsprogramm.
  • Ordnen Sie Ihr Tun in das Schema am Kapitelbeginn, Bild 5-1 ein.
 t/s        y/(m/s)
.00000E+00 .00000E+00
.20000E+00 .89529E-01
.40000E+00 .31945E+00
.60000E+00 .63417E+00
.80000E+00 .98469E+00
.10000E+01 .13314E+01
.12000E+01 .16455E+01
.14000E+01 .19084E+01
.16000E+01 .21110E+01
.18000E+01 .22514E+01
.20000E+01 .23337E+01
.22000E+01 .23660E+01
.24000E+01 .23586E+01
.26000E+01 .23225E+01
.28000E+01 .22681E+01
.30000E+01 .22049E+01
.32000E+01 .21406E+01
.34000E+01 .20809E+01
.36000E+01 .20298E+01
.38000E+01 .19894E+01
.40000E+01 .19604E+01
.42000E+01 .19423E+01
.44000E+01 .19338E+01
.46000E+01 .19332E+01
.48000E+01 .19383E+01
.50000E+01 .19473E+01

Code 0-2: Sprungantwort einer Regelstrecke