Sunteți pe pagina 1din 38

CONTROL PTIMO

ESCUELA DE POSGRADO

Curso:

CONTROL PTIMO

Tema:

Control ptimo casos especiales: derivadas, potencia y accin integral en la


funcin de costo

Presentado por:

CONTRERAS MARTINEZ, DIMEL ARTURO

Docente:

DR. ANTONIO MORN

2016

1
CONTROL PTIMO

1. Resolver el problema de control ptimo de un sistema de amortiguacin,


para tiempo finito.

= + +

2

= [ 21 ]
1
10

w=Escaln, impulso

= 0.5 + () +
0

Verificar los efectos de n sobre las variables:

2
1
21
10

[]

Adems verificar que n muy alto , Riccati no tiene solucin-

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;

A = [ a11 a12 a13 a14


1 0 0 0
a31 a32 a33 a34
0 0 1 0 ];
B = [ b1
0
b3
0 ];
W = [ 0
0
0
-1 ];

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:

Se considera Q matriz diagonal:

1 0 0 0
0 2 0 0
= [ ]
0 0 3 0
0 0 0 4

Se est utilizando los valores:

1 = 15

2 = 12

3 = 0

4 = 0

Peso a variar:

0
=[ ]

0
Adems a R se le considera igual a 1.

En Matlab:

q1 = input('Peso x2p : ');


q2 = input('Peso x2-x1 : ');
q3 = input('Peso x1p : ');
q4 = input('Peso x1-x0 : ');
Q = diag([ q1 q2 q3 q4 ]);
R = [ 1 ];

n = input('ingresa n = ');
N= [n 0 -n 0]';

La funcin de costo del sistema, sin potencia y con potencia:

Se considera los 2 casos, para un tiempo de simulacin de t = 10s.

Sin la potencia en la funcin de costo:

Se utiliza la solucin de Riccati para P sin alterar A, B, Q, R.

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);

xop = zeros(nt,1); % Impulso


xop(1,1) = 0.1/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

Con la potencia en la funcin de costo:

Se utiliza la solucin de Riccati para P modificando los parmetros de la


funcin de Riccati.

En Matlab:

5
CONTROL PTIMO

%---con adicin de la potencia en la funcin de costo--------


x = [ 0; 0; 0; 0 ];

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

Respuesta del sistema variando pesos de la Potencia

Se va a superponer la respuesta sin la potencia en la funcin de costo(n = 0)


de color rojo y la respuesta con la potencia en la funcin de costo(n 0) color
negro.

Tomando los pesos constantes:

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:

Se observa que conforme se aumenta el peso n de la potencia, se reduce la


potencia considerablemente hasta n cercano a n=1e6, donde ya la ecuacin
de Riccati ya no tiene solucin.

Por otro lado se aprecia que 21 , 10 reducen sus oscilaciones. Sin embargo
x2p posee mayor valor sobre impulso inicial.

13
CONTROL PTIMO

2. Agregando derivadas en la funcin de costo.


= + 5 2 + 6 1 + 2
0

Se transforma a la forma:

= + 2 +
0

Hacer las pruebas tomando:

1 , 2 , 3 , 4
Variar:

Caso 1:
5 0
6 = 0
Caso 2:
6 0
5 = 0

Solucin:

Ecuaciones a utilizar:

= + +
0

= ( + ) + 2 + ( + )
0

= +

= +

La ecuacin de Riccati queda:

= ( 1 , 1 , 1 )

= 1 ( + )

*Observacin: No confundir NN con N*N, es solo una notacin.

14
CONTROL PTIMO

Dando forma a la funcin de costo:



= + 5 2 + 6 1 + 2
0
5 0 0 0

0 0 0 0
= + [ ] + 2
0 0 0 6 0
0 0 0 0
Entonces:

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:

Se considera Q matriz diagonal:

1 0 0 0
0 2 0 0
= [ ]
0 0 3 0
0 0 0 4

Se est utilizando los valores:

1 = 15

2 = 12

3 = 0

4 = 0

Adems a R se le considera igual a 1.

Pesos a variar:

5 0 0 0
0 0 0 0
=[ ]
0 0 6 0
0 0 0 0

15
CONTROL PTIMO

En Matlab:

q1 = input('Peso x2p : ');


q2 = input('Peso x2-x1 : ');
q3 = input('Peso x1p : ');
q4 = input('Peso x1-x0 : ');
Q = diag([ q1 q2 q3 q4 ]);
R = [ 1 ];

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];

Simulacin en Matlab variando los pesos

%-------------con adicion de las derivadas en la funcion de costo-------


-
x = [ 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);

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,x2vd,'k'); grid;
ylabel('x2p');

subplot(2,1,2); plot(t,x21c,'-r',t,x21d,'k'); grid;


ylabel('x21');
xlabel('Tiempo [seg]');
figure(2);
subplot(2,1,1); plot(t,x1vc,'-r',t,x1vd,'k'); grid;
ylabel('x1p');
subplot(2,1,2); plot(t,x10c,'-r',t,x10d,'k'); grid;
ylabel('x10');
xlabel('Tiempo [seg]');
figure(3);
plot(t,Fc,'-r',t,Fd,'k');
ylabel('F');
xlabel('Tiempo [seg]');
figure(4);
plot(t,x2vvc,'-r',t,x2vvd,'k');
ylabel('x2vv');
xlabel('Aceleracion2 Conclusiones:
[m/s2]');
figure(5);
plot(t,x1vvc,'-r',t,x1vvd,'k');
ylabel('x1vv');
xlabel('Aceleracion1 [m/s2]');

17
CONTROL PTIMO

Respuesta del sistema variando pesos de las derivadas

Tomando los pesos constantes:

1 = 15

2 = 12

3 = 0

4 = 0

a. Caso 1 : Variando solo q5 , q6=0

Para q5 =1, q6=0 :

18
CONTROL PTIMO

Para q5 =100, q6=0 :

19
CONTROL PTIMO

Para q5 =10000, q6=0 :

20
CONTROL PTIMO

Para q5 =1e6, q6=0 :

21
CONTROL PTIMO

b. Caso 2 : Variando solo q5 , q6=0

Para q5 =0, q6=1 :

22
CONTROL PTIMO

Para q5 =0, q6=10 :

23
CONTROL PTIMO

Para q5 =0, q6=1000 :

24
CONTROL PTIMO

25
CONTROL PTIMO

Para q5 =0, q6=1e5 :

26
CONTROL PTIMO

27
CONTROL PTIMO

3. Para el motor con tornillo sinfn incluir accin integral en el control y


pesos para la potencia.

Sea la funcin de costo:

2
= 1 + 2 + 3 + 4 (( ) ) + 5 () + 2
2 2 2
0

Verificar el efecto de q5 sobre la potencia.

Solucin:

Se construye el sistema aumentado:



0 1 0 0 0 0
0 22 23 0 0 0
[ ]=[ ] + [ ] + [ ]
/ 0 32 33 0 3 0
1 0 0 0 [ ( ) 0 1
]

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 )

La ganancia del controlador K:

= 1 ( + )

Pesos:

Se considera Q matriz diagonal:

1 0 0 0
0 2 0 0
= [ ]
0 0 3 0
0 0 0 4

Se est utilizando los valores:

1 = 16

2 = 0

3 = 0

4 = 16

Peso a variar q5:


0
0
= [ ]
5
0

Adems a R se le considera igual a 1.

29
CONTROL PTIMO

En Matlab:

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;

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 ];

r = 0.5; % Posicin deseada


voltmax = 24; % Voltaje mximo
Fseca = 0.*12; % Friccin 0, 0.5, 1.0, 1.5

30
CONTROL PTIMO

Control con accin integral

% Control con accin integral

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);

x = [ 0; 0; 0 ]; % Vector de estado inicial

int_err = 0; % Valor incial de integral del error


k = 1;
x = Ak*x + Bk*u + Wk*Fs;
k = k+1;
end

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

Para q5= 0.5:

34
CONTROL PTIMO

Para q5= 1:

35
CONTROL PTIMO

Para q5= 1.5:

36
CONTROL PTIMO

Para q5= 2:

37
CONTROL PTIMO

Conlusiones

38

S-ar putea să vă placă și