Reglerauslegung durch Polvorgabe
(EN google-translate)
(PL google-translate)
Aus dem vorangehenden Unterkapitel zur Systemidentifikation haben sich folgende Modellparameter für Pixelgeschwindigkeit/PWM ergeben:
p=115509.42 q= 18.067538 r= 18.067538
Code 0-1: Optimierte Modellparameter.
Diese sollen nun Grundlage in einem Modell im Zeitbereich werden, welches wiederum als Grundlage für die Reglerauslegung genommen wird:
$ G\left(s\right) = \frac { p }{ \left(q+s\right) \cdot \left(r+s\right) } $
Formel 0-1: Pixelgeschwindigkeit/PWM im Laplacebereich.
|
$ \ddot w + \left(q+r\right) \cdot \dot w + \left(q \cdot r\right) \cdot w = p \cdot u $
Formel 0-2: Pixelgeschwindigkeit/PWM im Zeitbereich.
|
$ \ddot w + a \cdot \dot w + b \cdot w = c \cdot u $
Formel 0-3: Pixelgeschwindigkeit/PWM im Zeitbereich.
a=36 b=326 c=115509
Code 0-2: Optimierte Modellparameter, substituiert und gerundet.
clear(); function f = rechteSeite(t,y) phi = y(1,1); //Pixelposition omega = y(2,1); //Pixelgeschwindigkeit "w" alfa = y(3,1); //Pixelbeschleunigung intphi = y(4,1); //Integral von Phi u = 4; a=36.0; b=326.0; c=115509.0; f(1,1) = omega; f(2,1) = alfa; f(3,1) = -a*alfa-b*omega+c*u; f(4,1) = phi; endfunction //Testweise wie in der Messung simulieren: t=linspace(0,1.0,100); t0=0.0; y0=[0;0;0;0]; y=ode(y0,t0,t,rechteSeite); plot(t,y(2,:));
Code 0-3: Testweise Modellierung und Simulation der Regelstrecke

Bild 0-1: Plot zu obigem Skript.
clear(); a=36.0; b=326.0; c=115509.0; A = [ 0 1 0 0 0 0 1 0 0 -b -a 0 1 0 0 0 ]; B = [ 0 0 c 0 ]; function f = rechteSeite(t,y) u = 4; f = A*y+B*u; endfunction //Testweise wie in der Messung simulieren: t=linspace(0,1.0,100); t0=0.0; y0=[0;0;0;0]; y=ode(y0,t0,t,rechteSeite); plot(t,y(2,:)); ew = spec(A); disp(ew);
Code 0-4: Gleiches System über Systemmatrix A und Eingriffsmatrix B definiert, sowie Berechnung der Eigenwerte.
ew= 0 0 - 18. + 1.4142136i - 18. - 1.4142136i
Code 0-5: Lage der Eigenwerte
Polvorgabe - erster Versuch
clear(); a=36.0; b=326.0; c=115509.0; A = [ 0 1 0 0 0 0 1 0 0 -b -a 0 1 0 0 0 ]; B = [ 0 0 c 0 ]; //Reglerentwurf über Polvorgabe: ew = [ - 1. + 0.7*%i - 1. - 0.7*%i - 18. + 1.4142136*%i - 18. - 1.4142136*%i ]; R = ppol(A,B,ew'); ewneu = spec(A-B*R); disp(ewneu); disp(ew); function f = rechteSeite(t,y) u = -R*y; //Zustandsregler f = A*y+B*u; endfunction //Testweise wie in der Messung simulieren: t=linspace(0,4.0,400); t0=0.0; // phi = y(1,1); //Pixelposition // omega = y(2,1); //Pixelgeschwindigkeit "w" // alfa = y(3,1); //Pixelbeschleunigung // intphi = y(4,1); //Integral von Phi y0=[100;0;0;0]; //mit 100 Pixel Abweichung beginnen y=ode(y0,t0,t,rechteSeite); plot(t,y(1,:)); //Verlauf von phi zeigen
Code 0-6: Polvorgabe, erster Versuch.
R = 0.0061090 0.0006362 0.0000173 0.0042052
Code 0-7: Regelmatrix R

Bild 0-2: Plot zu obigem Skript - Regelt zu langsam!.
Zweiter Versuch Polvorgabe für schnelleren Regler
clear(); a=36.0; b=326.0; c=115509.0; A = [ 0 1 0 0 0 0 1 0 0 -b -a 0 1 0 0 0 ]; B = [ 0 0 c 0 ]; //Reglerentwurf über Polvorgabe: ew = [ - 10. + 7*%i //schneller! - 10. - 7*%i - 18. + 1.4142136*%i - 18. - 1.4142136*%i ]; R = ppol(A,B,ew'); ewneu = spec(A-B*R); disp(ewneu); disp(ew); function f = rechteSeite(t,y) u = -R*y; //Zustandsregler f = A*y+B*u; endfunction //Testweise wie in der Messung simulieren: t=linspace(0,4.0,400); t0=0.0; // phi = y(1,1); //Pixelposition // omega = y(2,1); //Pixelgeschwindigkeit "w" // alfa = y(3,1); //Pixelbeschleunigung // intphi = y(4,1); //Integral von Phi y0=[100;0;0;0]; //mit 100 Pixel Abweichung beginnen y=ode(y0,t0,t,rechteSeite); plot(t,y(1,:)); //Verlauf von phi zeigen //Zur Kontrolle den Verlauf von u plotten ... darf betragsmaessig nicht groeßer als 20 werden!: u=-R*y; plot(t,u);
Code 0-8: Zweiter Versuch Polvorgabe.
R= 0.1028838 0.0075232 0.0001731 0.4205213
Code 0-9: Regelmatrix R.

Bild 0-3: Plot zu obigem Skript.

Bild 0-4: Verlauf des PWM-Signals "u" - darf betragsmäßig nicht größer als 20 werden.