Professional Documents
Culture Documents
ESCUELA DE POSGRADO
Curso:
CONTROL PTIMO
Tema:
Presentado por:
Docente:
2016
1
CONTROL PTIMO
= + +
2
= [ 21 ]
1
10
w=Escaln, impulso
= 0.5 + () +
0
2
1
21
10
[]
1 < 0
Solucin:
2
CONTROL PTIMO
Parmetros en Matlab:
%% Parmetros
m2 = 10;
m1 = 1;
k2 = 2*pi*1*m2;
k1 = 2*pi*8*m1;
c2 = 5;
w = 0.1;
a11 = -c2/m2; a12 = -k2/m2;
a13 = c2/m2; a14 = k2/m2;
a31 = c2/m1; a32 = k2/m1;
a33 = -c2/m1; a34 = -(k1+k2)/m1;
b1 = 1/m2; b3 = -1/m1;
Ecuaciones a utilizar:
La funcin de costo:
= + () +
0
Se pasa a la forma:
1
= ( + 2 + )
2 0
0
=[ ]
0
= ( 1 , 1 , 1 )
= 1 ( + )
3
CONTROL PTIMO
Pesos:
1 0 0 0
0 2 0 0
= [ ]
0 0 3 0
0 0 0 4
1 = 15
2 = 12
3 = 0
4 = 0
Peso a variar:
0
=[ ]
0
Adems a R se le considera igual a 1.
En Matlab:
n = input('ingresa n = ');
N= [n 0 -n 0]';
4
CONTROL PTIMO
En Matlab:
R = [ 1 ];
P = are(A,B*inv(R)*B',Q);
K = inv(R)*B'*P;
dt = 0.001;
ti = 0;
tf = 5;
t = ti:dt:tf; t = t';
nt = length(t);
[Ak,Bk] = c2d(A,B,dt);
[Ak,Wk] = c2d(A,W,dt);
x = [ 0; 0; 0; 0 ];
k = 1;
for tt = ti:dt:tf
x2vc(k,1) = x(1,1);
x21c(k,1) = x(2,1);
x1vc(k,1) = x(3,1);
x10c(k,1) = x(4,1);
u = -K*x;
potc(k,1) = u*(x2vc(k,1)-x1vc(k,1));
Fc(k,1) = u;
x = Ak*x + Bk*u + Wk*xop(k,1);
t(k,1) = tt;
k = k + 1;
end
En Matlab:
5
CONTROL PTIMO
k = 1;
% X = [ x2v x2-x1 x1v x1-x0 ]
%P = are(A,B*inv(R)*B',Q); %sin potencia
n = input('ingresa n = ');
N= [n 0 -n 0]';
P = are(A-B*inv(R)*N',B*inv(R)*B',Q-N*inv(R)*N');%considerando
J = int (X'QX+2X'Nu+u'Ru)
K = inv(R)*(B'*P+N');
for tt = ti:dt:tf
x2vn(k,1) = x(1,1);
x21n(k,1) = x(2,1);
x1vn(k,1) = x(3,1);
x10n(k,1) = x(4,1);
potn(k,1) = u*(x2vn(k,1)-x1vn(k,1));
u = -K*x;
Fn(k,1) = u;
x = Ak*x + Bk*u + Wk*xop(k,1);
t(k,1) = tt;
k = k + 1;
end
figure(1);
subplot(2,1,1); plot(t,x2vc,'-r',t,x2vn,'k'); grid;
ylabel('x2p');
subplot(2,1,2); plot(t,x21c,'-r',t,x21n,'k'); grid;
ylabel('x21');
xlabel('Tiempo [seg]');
figure(2);
subplot(2,1,1); plot(t,x1vc,'-r',t,x1vn,'k'); grid;
ylabel('x1p');
subplot(2,1,2); plot(t,x10c,'-r',t,x10n,'k'); grid;
ylabel('x10');
xlabel('Tiempo [seg]');
figure(3);
plot(t,Fc,'-r',t,Fn,'k');grid;
ylabel('F');
xlabel('Tiempo [seg]');
figure(4);
plot(t,potc,'-r',t,potn,'k');grid;
ylabel('Potencia');
xlabel('Watts [W]');
6
CONTROL PTIMO
1 = 15
2 = 12
3 = 0
4 = 0
Para n = 1:
7
CONTROL PTIMO
8
CONTROL PTIMO
Para n = 10:
9
CONTROL PTIMO
Para n = 100:
10
CONTROL PTIMO
Para n = 1000:
11
CONTROL PTIMO
Para n = 1e5:
12
CONTROL PTIMO
Para n = 1e6:
Por otro lado se aprecia que 21 , 10 reducen sus oscilaciones. Sin embargo
x2p posee mayor valor sobre impulso inicial.
13
CONTROL PTIMO
= + 5 2 + 6 1 + 2
0
Se transforma a la forma:
= + 2 +
0
1 , 2 , 3 , 4
Variar:
Caso 1:
5 0
6 = 0
Caso 2:
6 0
5 = 0
Solucin:
Ecuaciones a utilizar:
= + +
0
= ( + ) + 2 + ( + )
0
= +
= +
= ( 1 , 1 , 1 )
= 1 ( + )
14
CONTROL PTIMO
5 0 0 0
0 0 0 0
=[ ]
0 0 6 0
0 0 0 0
Y ya se pueden K con las ecuaciones mencionadas anteriormente.
Pesos:
1 0 0 0
0 2 0 0
= [ ]
0 0 3 0
0 0 0 4
1 = 15
2 = 12
3 = 0
4 = 0
Pesos a variar:
5 0 0 0
0 0 0 0
=[ ]
0 0 6 0
0 0 0 0
15
CONTROL PTIMO
En Matlab:
q5 = input('ingresa q5 = ');
q6 = input('ingresa q6 = ');
S = [q5 0 0 0
0 0 0 0
0 0 q6 0
0 0 0 0];
k = 1;
% X = [ x2v x2-x1 x1v x1-x0 ]
%P = are(A,B*inv(R)*B',Q); %sin potencia
q5 = input('ingresa q5 = ');
q6 = input('ingresa q6 = ');
S = [q5 0 0 0
0 0 0 0
0 0 q6 0
0 0 0 0];
QQ = Q + A'*S*A;
NN = A'*S*B;
RR = B'*S*B+R;
P = are(A-B*inv(RR)*NN',B*inv(RR)*B',QQ-NN*inv(RR)*NN');%considerando J
= int (X'QQX+2X'NNu+u'RRu)
K = inv(RR)*(B'*P+NN');
16
CONTROL PTIMO
for tt = ti:dt:tf
x2vd(k,1) = x(1,1);
x21d(k,1) = x(2,1);
x1vd(k,1) = x(3,1);
x10d(k,1) = x(4,1);
u = -K*x;
Fd(k,1) = u;
x2vvd(k,1) = A(1,:)*x+B(1,1)*u+ W(1,1)*xop(k,1);
x1vvd(k,1) = A(3,:)*x+B(3,1)*u+ W(3,1)*xop(k,1);
t(k,1) = tt;
k = k + 1;
end
figure(1);
subplot(2,1,1); plot(t,x2vc,'-r',t,x2vd,'k'); grid;
ylabel('x2p');
17
CONTROL PTIMO
1 = 15
2 = 12
3 = 0
4 = 0
18
CONTROL PTIMO
19
CONTROL PTIMO
20
CONTROL PTIMO
21
CONTROL PTIMO
22
CONTROL PTIMO
23
CONTROL PTIMO
24
CONTROL PTIMO
25
CONTROL PTIMO
26
CONTROL PTIMO
27
CONTROL PTIMO
2
= 1 + 2 + 3 + 4 (( ) ) + 5 () + 2
2 2 2
0
Solucin:
0 1 0 0
0 22 23 0
= [ ]
0 32 33 0
1 0 0 0
0
0
= [ ]
3
0
Ecuaciones a utilizar:
Se pasa a la forma:
1
= ( + 2 + )
2 0
Entonces:
2
= 1 2 + 2 2 + 3 2 + 4 (( ) ) + 5 () + 2
0
1 0 0 0
0 2 0 0
= [ ]
0 0 3 0
0 0 0 4
28
CONTROL PTIMO
0
0
= 1/2 ( + 2 [ ( ) ] [ ] + )
0 5
0
Entonces:
0
0
= [ ]
5
0
= 1
La solucin de Riccati:
= ( 1 , 1 , 1 )
= 1 ( + )
Pesos:
1 0 0 0
0 2 0 0
= [ ]
0 0 3 0
0 0 0 4
1 = 16
2 = 0
3 = 0
4 = 16
29
CONTROL PTIMO
En Matlab:
Qi = diag([ q1 q2 q3 q4 ]);
RRi = 1;
Cdigos en Matlab:
Parmetros:
R = 1.1;
L = 0.0001;
Kt = 0.0573;
Kb = 0.05665;
I = 4.326e-5;
p = 0.004;
m = 1.00;
c = 40;
r = 0.015;
alfa = 45*pi/180;
voltmax = 60;
d = m + 2*pi*I*tan(alfa)/(p*r);
a22 = -c/d;
a23 = Kt*tan(alfa)/(r*d);
a32 = -2*pi*Kb/(p*L);
a33 = -R/L;
b31 = 1/L;
w21 = -1/d;
A = [ 0 1 0
0 a22 a23
0 a32 a33 ];
B = [ 0
0
b31 ];
Wf = [ 0
w21
0 ];
30
CONTROL PTIMO
Ai = [ 0 1 0 0
0 a22 a23 0
0 a32 a33 0
1 0 0 0 ];
Bi = [ 0
0
b31
0 ];
Wri = [ 0
0
0
-1 ];
Ci = [ 1 0 0 0 ];
Di = [ 0 ];
disp(' ');
disp('Control con accin integral');
q1 = input('Peso q1 - x [1e6] : '); % 1.e6
q2 = input('Peso q2 - xp [0] : '); % 0
q3 = input('Peso q3 - i [0] : '); % 0
q4 = input('Peso q4 - interr [1e6] : '); % 1e6
q5 = input('Peso q5 - pot: ');
Qi = diag([ q1 q2 q3 q4 ]);
RRi = 1;
%Matriz de peso de la potencia
N = [0 0 q5 0]';
Pi = are(Ai-Bi*inv(RRi)*N',Bi*inv(RRi)*Bi',Qi-N*inv(RRi)*N');
Ki = inv(RRi)*(Bi'*Pi+N');
ti = 0; tf = 10; dt = 0.001;
t = ti:dt:tf; t = t';
[ Ak Bk ] = c2d(A,B,dt);
[ Ak Wk ] = c2d(A,Wf,dt);
31
CONTROL PTIMO
for tt = ti:dt:tf
pos(k,1) = x(1,1);
vel(k,1) = x(2,1);
cor(k,1) = x(3,1);
int_err = int_err + (x(1,1)-r)*dt;
u = -Ki(1,1:3)*x - Ki(1,4)*int_err;
if( u > voltmax)
u = voltmax;
elseif(u < -voltmax)
u = -voltmax;
end
volt(k,1) = u;
pot(k,1) = u*x(3,1);
if(x(2,1) >= 0)
Fs = Fseca;
elseif(x(2,1) < 0)
Fs = -Fseca;
End
figure(1);
subplot(3,1,1); plot(t,pos); ylabel('Posicion');grid;
title('Control con Accin Integral');
subplot(3,1,2); plot(t,vel); ylabel('Velocidad');grid;
subplot(3,1,3); plot(t,cor); ylabel('Corriente');grid;
xlabel('Tiempo');
figure(2);
subplot(2,1,1), plot(t,volt); ylabel('Voltaje');grid;
title('Control con Accin Integral');
subplot(2,1,2); plot(t,pot); ylabel('Potencia');grid;
xlabel('Tiempo');
32
CONTROL PTIMO
Prueba de pesos:
Para q5= 0:
33
CONTROL PTIMO
34
CONTROL PTIMO
Para q5= 1:
35
CONTROL PTIMO
36
CONTROL PTIMO
Para q5= 2:
37
CONTROL PTIMO
Conlusiones
38