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.