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

3 Einführendes Beispiel

Eine Kamera soll einem sich bewegenden roten Ball nachgeführt werden.

In einem vereinfachten ersten Modellentwurf für eine Simulation wird davon ausgegangen, dass die Kamera Teil eines drehbar gelagerten homogenen Vollzylinders der Masse m und mit dem Radius r repräsenteirt wird. Vorhandene Reibung wird als lineare rotatorische Dämpfung D zusammengefaßt. Als Stellgröße wird das Moment M festgelegt, das an dem Zylinder angreift.

Angenommene Parameter:

Bezeichnung Wert Einheit Beschreibung
m 0.2 kg Masse des Zylinders
r 0.03 m Radius des Zylinders
D 0.01 Nms/rad rotatorische Dämpfung des Zylinders

Tabelle 3-1: Parameterliste

Rotatorisch angetriebenes Kamerasystem.

Bild 3-1: Rotatorisch angetriebenes Kamerasystem.

Entwicklung eines Museumsroboters, der in einem Test einen roten Ball und dann eine Person mit rotem T-Shirt verfolgen soll.
Aufgabe 1 - Systemgleichungen
  • Stellen Sie die dynamischen Gleichungen des oben beschriebenen Systems auf.
  • M wird zunächst als bekanntes äußeres Moment angenommen.
  • Lösung

$ J \ddot \phi = M -D \omega $

Formel 3-1: Dynamische Gleichung gemäß Eulergleichung


Aufgabe 2 - Simulation mit Scilab
  • Formulieren Sie das zugehörige Simulationsmodell in Scilab.
  • Testen Sie die Simulation mit Anfangsbedingungen φ=0rad und ω=0rad/s und einem konstanten M=5Nm.

$ \left[\begin{array}{cc} \dot \phi \\ \dot \omega \end{array}\right] = \left[\begin{array}{cc} 0 & 1 \\ -\left(D/J\right) & 0 \end{array}\right] \cdot \left[\begin{array}{cc} \phi \\ \omega \end{array}\right] + \left[\begin{array}{cc} 0 \\ 1 \end{array}\right] \cdot M $

Formel 3-2: Dynamische Gleichung zerlegt als DGLS erster Ordnung


$ \dot \vec y = A \cdot \vec y + B \cdot \vec u $

Formel 3-3: Allgemeine Darstellung.


  • Lösung
m = 0.2;
r = 0.03;
D = 0.01;
J = 0.5*m*r*r;
function f = rechteSeite(t,y)
    M      = 5.0;
    phi    = y(1,1);
    omega  = y(2,1);
    f(1,1) = omega;
    f(2,1) = M/J -(D/J)*omega;
endfunction

t = linspace(0,1,1000);
y0 = [0,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)',t,y(2,:)');

Code 3-1: Scilab-Simulationsmodell zum Motorspiegel.

Aufgabe 3 - Ergänzen eines Zustandsreglers
  • Ergänzen Sie sowohl in den dynmaischen Gleichungen und dann ebenso in der Scilab-Simulation einen Zustandsregler.
  • das bedeutet, M wird durch eine Zustandsrückkopplung ersetzt, was zu einer Verschiebung der Eigenwerte führt.
Blockschaltbild eines Zustandsreglers

Bild 3-2: Blockschaltbild eines Zustandsreglers

$ \left[\begin{array}{cc} \dot \phi \\ \dot \omega \end{array}\right] = \left[\begin{array}{cc} 0 & 1 \\ -\left(D/J\right) & 0 \end{array}\right] \cdot \left[\begin{array}{cc} \phi \\ \omega \end{array}\right] - \left[\begin{array}{cc} 0 & 0 \\ 5 & 2 \end{array}\right] \cdot \left[\begin{array}{cc} \phi \\ \omega \end{array}\right] $

Formel 3-4: Zus \tan dsregler für den Motorspiegel im Zeitbereich \left(Beispielwertre\right).


$ H\left(s\right) = R\left(s\right) \cdot G\left(s\right) $

Formel 3-5: Offener Regelkreis im Laplacebereich allgemein.


$ H\left(s\right) = \frac { 5 + 2s }{ 1 } \cdot \frac { 1 }{ Js² + Ds \ & } $

Formel 3-6: Offener Regelkreis im Laplacebereich hier.


  • Wenn für den offenen Regelkreis gilt:

$ H\left(s\right) = \frac { Z }{ N } $

Formel 3-7: Offener Regelkreis im Laplacebereich allgemein \left(Zähler durch Nenner\right).


  • ...so gilt für den geschlossenen:

$ Q\left(s\right) = \frac { Z }{ Z + N } $

Formel 3-8: Geschlossener Regelkreis im Laplacebereich.


  • ...und somit hier:

$ Q\left(s\right) = \frac { 5 + 2s }{ Js² + \left(D+2\right)s + 5 } $

Formel 3-9: Geschlossener Regelkreis im Laplacebereich hier.


  • Lösung
m = 0.2;
r = 0.03;
D = 0.01;
J = 0.5*m*r*r;
function f = rechteSeite(t,y)
    phi    = y(1,1);
    omega  = y(2,1);
    
    w      = 0;       //Sollwert-Winkel
    ediff  = w-phi;   //Regeldifferenz
    omdiff =  -omega; //differenzierte Regeldifferenz

    M = 5*ediff + 2*omdiff;
    
    f(1,1) = omega;
    f(2,1) = M/J -(D/J)*omega;
endfunction

t = linspace(0,1,1000);
y0 = [1,0]'; //Anfänglich 1 rad Abweichung vom Sollwert.
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)',t,y(2,:)');

Code 3-2: Zustandsregler im Scilab-Modell ergänzt.

Regelstrecken ohne Ausgleich (s. Vorlesung) lassen sich schwer regeln. Abhilfe kann das Hinzufügen eines Zusatzzustandes schaffen, welches dem Integral der Zustandsgröße mit der niedrigsten Ableitung entspricht.

Wird diese neue Größe im Zustandsregler zurückgeführt, entsteht im Regler so ein I-Anteil, der die Abweichung von Null aufintegriert.

Hier eine Umsetzung in Scilab:

m = 0.2;
r = 0.03;
D = 0.01;
J = 0.5*m*r*r;
function f = rechteSeite(t,y)
    phi      = y(1,1);
    omega    = y(2,1);
    phiinteg = y(3,1);

    M = -500*phi - 20*omega -1000*phiinteg ;
    
    f(1,1) = omega;
    f(2,1) = M/J -(D/J)*omega;
    f(3,1) = phi; //Liefert als dritenn Systemzustand das Integral von phi.
endfunction

t = linspace(0,1,1000);
y0 = [1,0,0]'; //Anfänglich 1 rad Abweichung vom Sollwert.
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)',t,y(2,:)');

Code 3-3: Zustandsregler im Scilab-Modell mit integrierendem "Zusatzzustand".

Aufgabe 4 - Reglerauslegung
  • Legen Sie den Regler insofern robust aus, als die Regelung im Bereich einer Zylindermasse m zwischen 0.1 und 0.3kg technisch stabil ist.
  • Vergleichen Sie dies in geeigneten Simulationsexperimenten mit einer ungünstigen Auslegung des Reglers.
  • Lösung

Der Einbau eines Zustandsreglers verschiebt die Eigenwerte resultiert in einem Gesamtsystem mit veränderten Eigenwerten (Polstellen der Übertragungsfunktion). Somit kann über geschickte Wahl der Regelparameter ein System mit günstig gelegenen Eigenwerten im oben verlangten Sinne erstellt werden.

Scilab bietet eine Möglichkeit die Regelparameter eines Zustandsreglers zu einer gewünschten Lage der Polstellen zu finden.

Doch zunächst soll gezeigt werden, wie mit Hilfe von Scilab aktuelle Pole berechnet und auch visualisiert werden können:

m = 0.2;
r = 0.03;
D = 0.01;
J = 0.5*m*r*r;

s = poly(0,"s");

G = syslin('c',[1],[J*s*s+D*s]);
R = syslin('c',[5+2*s],[1]);

H = R*G
Q = H/(1+H)

//Pole und Nullstellen der Strecke:
//plzr(G)
//Umwandlung in Zustandsform, dann Eigenwerte bestimmen:
strecke=tf2ss(G)
clean(ss2tf(strecke))
Astrecke = strecke(2)//A-Matrix auslesen
ewStrecke = spec(Astrecke)
disp("Eigenwerte der Regelstrecke:")
disp(ewStrecke) //aus einem Skript heraus gezielt anzeigen

//Pole und Nullstellen des geregelten Systems:
//plzr(H)
//Umwandlung in Zustandsform, dann Eigenwerte bestimmen:
geregelt=tf2ss(Q)
clean(ss2tf(geregelt))
Ageregelt = geregelt(2)//A-Matrix auslesen
ewSyst = spec(Ageregelt)

disp("Eigenwerte des geregelten Systems:")
disp(ewSyst) //aus einem Skript heraus gezielt anzeigen

//Direkte Simulation der Übertragungsfunktion mit csim:
t = linspace(0,0.001,1000);
anz = size(t);
u = ones(anz(1),anz(2)); //AB bei csim immer Null, Input hier: Sprung auf 1, es folgt daraus die Sprungantwort.
ystrecke   = csim(u,t,G);
ygeregelt  = csim(u,t,Q);

//plot(t,ystrecke(1,:)');
//plot(t,ygeregelt(1,:)');
plot(t,ystrecke(1,:)',t,ygeregelt(1,:)');

Code 3-4: Polstellen der Übertragungsfunktionen bzw. Eigenwerte der Systemmatrizen bestimmen, sowie Umwandlungen von der Laplace- (transfer-) zur Zustandsform (state-space ss)

Die Standarddarstellung eines Zustandsregler im Zeitbereich:

$ \dot \vec y = A \cdot \vec y - B \cdot R \cdot \vec y $

Formel 3-10: Die S \tan darddarstellung eines Zus \tan dsregler im Zeitbereich.


Die Scilab-Methode ppol bietet die Möglichkeit, Solleigenwerte vorzugeben und dann den passenden Zustandsregler dazu bestimmen zu lassen:

m = 0.2;
r = 0.03;
D = 0.01;
J = 0.5*m*r*r;

s = poly(0,"s");

G = syslin('c',[1],[J*s*s+D*s]);
R = syslin('c',[5+2*s],[1]);

H = R*G
Q = H/(1+H)
//Pole und Nullstellen der Strecke:
//plzr(G)
//Umwandlung in Zustandsform, dann Eigenwerte bestimmen:
strecke=tf2ss(G)
clean(ss2tf(strecke))
Astrecke = strecke(2)//A-Matrix auslesen
ewStrecke = spec(Astrecke)
//disp("Eigenwerte der Regelstrecke:")
//disp(ewStrecke) //aus einem Skript heraus gezielt anzeigen

//Pole und Nullstellen des geregelten Systems:
//plzr(H)
//Umwandlung in Zustandsform, dann Eigenwerte bestimmen:
geregelt=tf2ss(Q)
clean(ss2tf(geregelt))
Ageregelt = geregelt(2)//A-Matrix auslesen
ewSyst = spec(Ageregelt)


//Jetzt testweise R bei Vorgabe dieser EW finden lassen:
strecke=tf2ss(G)
clean(ss2tf(strecke))
Astrecke = strecke(2)//A-Matrix auslesen
Bstrecke = strecke(3)//B-Matrix auslesen

disp("A-Matrix der Strecke:");
disp(Astrecke);
disp("B-Matrix der Strecke:");
disp(Bstrecke);

Rneu     = ppol(Astrecke,Bstrecke,ewSyst');
//Rneu     = ppol(Astrecke,Bstrecke,[-5,-15]);

disp("Neu berechnete R-Matrix:");
disp(Rneu);

//Ergibt sich unter Verwendung von Rneu wieder das zuvor gebildete System mit der Übertragungsfunktion Q?:

Aneu = Astrecke - Bstrecke*Rneu;
ewNeu = spec(Aneu);

disp("Eigenwerte des neuen Systemdesigns:");
disp(ewNeu);

disp("Sich aus dem zuvor geregelten System ergebende Eigenwerte:");
disp(ewSyst);

Code 3-5: Verwendung von ppol zum Design einer Rückführmatrix R (Zeitbereich! - das ist etwas anderes, als die Reglerübertragungsfunktion R(s)!! ) durch Vorgabe der Polstellen.

  • Wie sehen nun die Übertragungsfunktionen und Eigenwerte bei dem um einen integralen Zustand erweiterten System aus?
  • Hier zunächst das DGLS, wobei q das Integral von φ ist:

$ \left[\begin{array}{cc} \dot \phi \\ \dot \omega \\ \dot q \end{array}\right] = \left[\begin{array}{cc} 0 & 1 & 0 \\ 0 & -D/J & 0 \\ 1 & 0 & 0 \end{array}\right] \cdot \left[\begin{array}{cc} \phi \\ \omega \\ q \end{array}\right] - \left[\begin{array}{cc} 0 \\ 1 \\ 0 \end{array}\right] \cdot \left[\begin{array}{cc} 500 & 20 & 1000 \end{array}\right] \cdot \left[\begin{array}{cc} \phi \\ \omega \\ q \end{array}\right] $

Formel 3-11: Zus \tan dsraumdarstellung des erweiterten dynamischen Systems.


m = 0.2;
r = 0.03;
D = 0.01;
J = 0.5*m*r*r;

A = [ 0 , 1 , 0 ; 0 , -D/J , 0 ; 1 , 0 , 0 ];
B = [ 0 ; 1 ; 0 ];
R = [ 500 , 20 , 1000 ];

Asyst = A - B*R;

ewSyst = spec(Asyst);

disp("Eigenwerte des erweiterten geregelten Systems:");
disp(ewSyst);

s = poly(0,"s");
//Z = syslin('c',A,B,eye(3,3));
//plzr(Z)
Q = syslin('c',Asyst,B,eye(3,3));
//Ansicht der Polstellen des erweiterten geregelten Systems:
plzr(Q)

Code 3-6: Umsetzung mit Skilab und Analyse der Eigenwerte, bzw. Polstellen.

Aufgabe 5 - Umsetzung
  • Wie läßt sich das bisher nur simulierte System unter Verwendung des Scilab-Reglers real umsetzen?
  • Inwiefern muß das Modell erweitert / korrigiert werden?
  • Wie könnte die Parameteridentifikation am realen System durchgeführt werden?