Einführendes Beispiel
(EN google-translate)
(PL google-translate)
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 0-1: Parameterliste

Bild 0-1: Rotatorisch angetriebenes Kamerasystem.

Aufgabe 1 - Systemgleichungen
|
|
$ J \ddot \phi = M -D \omega $
Formel 0-1: Dynamische Gleichung gemäß Eulergleichung
Aufgabe 2 - Simulation mit Scilab
|
$ \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 0-2: Dynamische Gleichung zerlegt als DGLS erster Ordnung
$ \dot \vec y = A \cdot \vec y + B \cdot \vec u $
Formel 0-3: Allgemeine Darstellung.
|
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 0-1: Scilab-Simulationsmodell zum Motorspiegel.
Aufgabe 3 - Ergänzen eines Zustandsreglers
|

Bild 0-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 0-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 0-5: Offener Regelkreis im Laplacebereich allgemein.
$ H\left(s\right) = \frac { 5 + 2s }{ 1 } \cdot \frac { 1 }{ Jsē + Ds \ & } $
Formel 0-6: Offener Regelkreis im Laplacebereich hier.
|
$ H\left(s\right) = \frac { Z }{ N } $
Formel 0-7: Offener Regelkreis im Laplacebereich allgemein \left(Zähler durch Nenner\right).
|
$ Q\left(s\right) = \frac { Z }{ Z + N } $
Formel 0-8: Geschlossener Regelkreis im Laplacebereich.
|
$ Q\left(s\right) = \frac { 5 + 2s }{ Jsē + \left(D+2\right)s + 5 } $
Formel 0-9: Geschlossener Regelkreis im Laplacebereich hier.
|
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 0-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 0-3: Zustandsregler im Scilab-Modell mit integrierendem "Zusatzzustand".
Aufgabe 4 - Reglerauslegung
|
|
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 0-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 0-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 0-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.
|
$ \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 0-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 0-6: Umsetzung mit Skilab und Analyse der Eigenwerte, bzw. Polstellen.
Aufgabe 5 - Umsetzung
|