Practica Control Optimo con MATLAB

17
Practica Control Optimo El control óptimo trata de determinar el “mejor” sistema de control empleando una técnica óptima de diseño. Esta técnica asume la formulación de una función matemática denominada la función de costo, también conocida como función de rendimiento, índice de rendimiento o índice de funcionamiento, entre otras denominaciones. El procedimiento de diseño del sistema de control óptimo trata de encontrar un extremo (un mínimo o un máximo, dado el caso) de una función de costo con el propósito de determinar los parámetros óptimos de una ley de control; de allí el término óptimo. En la mayoría de los casos, sin embargo, la búsqueda de la función de costo involucra procedimientos de error y corrección; esto significa que no siempre podemos estar seguros acerca de la forma exacta que debería poseer la función de costo. Procedimiento de Diseño 1. Formular el problema 2. Ingresar los parámetros del sistema 3. Determinar el modelo matemático del sistema 4. Determinar la controlabilidad y observabilidad del sistema 5. Calcular la ganancia K de control 6. Simulación del sistema 7. Cambiar datos de ponderación para obtener resultados deseados Problema 4.1 El problema 3.1 presenta las ecuaciones que gobiernan la dinámica del sistema de suspensión de un bus (ver figura 3.12). Diseñar un sistema de control optimo cuadrático estacionario para lograr el objetivo de control siguiente: la salida del proceso y = x2 x 1 (referencia nula) no debe presentar sobre impulsos mayores que el 5 %, y luego de alrededor de 20 segundos, las oscilaciones originadas por un disturbio escalón de 10 cm (provocada por imperfecciones en la pista), prácticamente deben desaparecer. La selección del tiempo de muestreo es a conveniencia del diseño.

description

Simulación mediante la herramienta MATLAB

Transcript of Practica Control Optimo con MATLAB

Practica Control Optimo

El control ptimo trata de determinar el mejor sistema de control empleando una tcnica ptima de diseo. Esta tcnica asume la formulacin de una funcin matemtica denominada la funcin de costo, tambin conocida como funcin de rendimiento, ndice de rendimiento o ndice de funcionamiento, entre otras denominaciones. El procedimiento de diseo del sistema de control ptimo trata de encontrar un extremo (un mnimo o un mximo, dado el caso) de una funcin de costo con el propsito de determinar los parmetros ptimos de una ley de control; de all el trmino ptimo. En la mayora de los casos, sin embargo, la bsqueda de la funcin de costo involucra procedimientos de error y correccin; esto significa que no siempre podemos estar seguros acerca de la forma exacta que debera poseer la funcin de costo.

Procedimiento de Diseo

1. Formular el problema

2. Ingresar los parmetros del sistema

3. Determinar el modelo matemtico del sistema

4. Determinar la controlabilidad y observabilidad del sistema

5. Calcular la ganancia K de control

6. Simulacin del sistema

7. Cambiar datos de ponderacin para obtener resultados deseados

Problema 4.1

El problema 3.1 presenta las ecuaciones que gobiernan la dinmica del sistema de suspensin de un bus (ver figura 3.12). Disear un sistema de control optimo cuadrtico estacionario para lograr el objetivo de control siguiente: la salida del proceso y = x2 x1 (referencia nula) no debe presentar sobre impulsos mayores que el 5 %, y luego de alrededor de 20 segundos, las oscilaciones originadas por un disturbio escaln de 10 cm (provocada por imperfecciones en la pista), prcticamente deben desaparecer. La seleccin del tiempo de muestreo es a conveniencia del diseo.

%SOLUCION DEL PROBLEMA SUSPENCION DEL BUS

clear all

% PARAMETROS DEL PROCESO

m1 = 2500; k1 = 80000; b1 = 350;

m2 = 320; k2 = 500000; b2 = 15020;

a23 = (b1/m1)*(b1/m1+b1/m2+b2/m2)-k1/m1;

a33 = -(b1/m1+b1/m2+b2/m2);

a43 = -(k1/m1+k1/m2+k2/m2);

% MODELO LINEAL: dx/dt = A*x + B*u + E*d; y = C*x + D*u

A = [0 1 0 0

-b1*b2/(m1*m2) 0 a23 -b1/m1

b2/m2 0 a33 1

k2/m2 0 a43 0];

B = [0;1/m1;0;(1/m1+1/m2)];

E = [0;b1*b2/(m1*m2);-b2/m2;-k2/m2];

C = [0 0 1 0]; D = [0];

% CONVERSION AL ESPACIO DE ESTADO DISCRETO

T=0.8; % TIEMPO DE MUESTREO

[G,H,C,D] = c2dm(A,B,C,D,T,'zoh');

[G,F,C,D] = c2dm(A,E,C,D,T,'zoh');

% Contro Optimo del sistema

Q = [1 0 0 0;0 1000000000 0 0;0 0 1000000000 0;0 0 0 1];

R = [1];

% ECUACION DE RICCATI

P = diag(0,3); % MATRIZ DE CEROS DE ORDEN 4

for i = 1:40

P = Q + G'*P*G - G'*P*H*inv(R+H'*P*H)*H'*P*G;

end

% CALCULO DE LA MATRIZ DE GANANCIA K

K = inv(R+H'*P*H)*H'*P*G;

% SIMULACION DEL SISTEMA CONTROLADO

N = 200; x=[0;0;0;0]; w=0.01;

for k=1:N

U=-K*x;

x = G*x + H*U + F*w;

y(k)=x(3); u(k)=U;

end

% GRAFICOS

t=linspace(0,N*T,N);

subplot(2,1,1)

plot(t,y(1:N)), grid

ylabel('Posicion y (m)')

xlabel('Tiempo en segundos')

subplot(2,1,2)

plot(t,u(1:N)), grid

xlabel('Tiempo en segundos')

ylabel('Control u (N)')

print -deps -f p3opt2

Matriz de Costes

% Contro Optimo del sistemaQ = [1 0 0 0;0 1000 0 0;0 0 1000 0;0 0 0 1];

Segunda matriz de costes

% Contro Optimo del sistemaQ = [1 0 0 0;0 100000000000 0 0;0 0 100000000000 0;0 0 0 1];

Problema 4.2

El problema 3.2 presenta las ecuaciones que gobiernan la dinmica longitudinal de un avin comercial volando a velocidad de crucero (altura y velocidad constantes). El control del ngulo de inclinacin del avin (ver figura 3.14) es un problema longitudinal a resolver. El objetivo de control es disear un autopiloto que manipulando el ngulo e del deflector de elevacin, controle el ngulo de inclinacin del avin.

Se pide disear un sistema de control optimo cuadrtico estacionario que genere una fuerza de control, de modo que la salida del proceso (el ngulo de inclinacin ) presente un sobre impulso menor al 10% y un tiempo de estabilizacin menor que 3 s, con error en estado estable nulo. La seleccin del tiempo de muestreo es a conveniencia del diseo.

% SOLUCION DEL PROBLEMA AVION COMERCIAL

clear all

% ECUACION DE ESTADO DEL PROCESO

A=[-0.313 56.7 0;-0.0139 -0.426 0;0 56.7 0];

B=[0.232;0.0203;0];

C=[0 0 1]; D=[0];

% PROCESO DISCRETO

T=0.1; % TIEMPO DE MUESTREO

[num1, den1]=ss2tf(A,B,C,D);

[G,H]=c2d(A,B,T);

[Bz,Az]=ss2tf(G,H,C,D);

% CONTROL OPTIMO ESTACIONARIO CON ACCION INTEGRAL

G1 = [G zeros(3,1);-C*G 1];

H1 = [H;-C*H];

% INGRESO DE PESOS

Q = [1 0 0 0;0 100 0 0;0 0 10 0;0 0 0 100];

R = [1];

% EQUACION DE RICCATI

P = diag(0,3);

for i = 1:40

P = Q + G1'*P*G1 - G1'*P*H1*inv(R+H1'*P*H1)*H1'*P*G1;

end

% CALCULO DE LA GANACIA K DEL CONTROLADOR

KK = inv(R+H1'*P*H1)*H1'*P*G1;

K = [KK(1) KK(2) KK(3)];

KI = -KK(4);

% SIMULACION

N = 100; x=[0;0;0]; v=0; Y=0;

for k=1:N

r(k)=0.1; Ref=r(k);

v = v + Ref - Y;

U = - K*x + KI*v;

x = G*x + H*U;

Y = C*x;

y(k) = Y; u(k) = U;

end

% GRAFICOS

t=linspace(0,N*T,N);

subplot(2,1,1)

plot(t,y(1:N)), grid

ylabel('Inclinacion (rad)')

xlabel('Tiempo en segundos')

subplot(2,1,2)

plot(t,u(1:N)), grid

xlabel('Tiempo en segundos')

ylabel('Angulo del deflector (rad)')

print -deps -f p4opt2

Con una matriz de costes diferente:

% INGRESO DE PESOSQ = [1 0 0 0;0 1000 0 0;0 0 1000 0;0 0 0 1000];

Problema 4.3

En el problema 3.3 se describe el proceso de la bola rodando a lo largo de una barra, con un grado de libertad, tal como se muestra en la figura 3.16. Una leva conecta la barra con un engranaje que esta accionado por un servomotor. Se desea disear un sistema de control optimo que pueda posicionar la bola en menos de 5 s a 0.5 m de un extremo de la barra que mide 1 m de longitud. Las oscilaciones de la bola deben estar restringidas sobre la barra y el voltaje de control no debe sobrepasar los 40 volt. La seleccin del tiempo de muestreo es a conveniencia del diseo.

%SOLUCION DEL PROBLEMA BOLA BARRA

close all

% DETERMINACION DE LA ECUACION DE ESTADO

M=0.11; R=0.015; g=9.8; L=1; J=9.99*1e-6; d=0.03;

A=[0 1 0 0

0 0 (M*g*d)/(L*(J/R^2 + M)) 0

0 0 0 1

0 0 0 0];

B=[0;0;0;1];

C=[1 0 0 0]; D=[0];

% PROCESO DISCRETO

T=0.1; % Tiempo de muestreo

[num1, den1]=ss2tf(A,B,C,D);

[G,H]=c2d(A,B,T);

% DETERMINAR SI EL PROCESO TIENE INTEGRADORES,

% ES DECIR, SI TIENE EIGENVALORES EN z=0:

% eigG = eig(G); % NO TIENE EIGENVALORES EN z=0;

% ADICIONANDO ACCION INTEGRAL

G1 = [G zeros(4,1);-C*G 1];

H1 = [H;-C*H];

% ANALIZAMOS SI LA PLANTA ES CONTROLABLE

M=[H1 G1*H1 G1^2*H1 G1^3*H1 G1^4*H1];

rM=rank(M); % rM=4 SISTEMA ES CONTROLABLE

% CALCULO DE LA GANANCIA DEL CONTROLADOR

Q= [1 0 0 0 0;0 1 0 0 0;0 0 1000 0 0;0 0 0 1 0;0 0 0 0 1e5];

R = [10];%100

% OBTENEMOS LA GANANCIA DEL CONTROLADOR APLICANDO dlqr

[KK,P]=dlqr(G1,H1,Q,R);

K = [KK(1) KK(2) KK(3) KK(4)];

KI = -KK(5);

% SIMULACION

N = 100; x=[0;0;0;0]; v=0; Y=0;

for k=1:N

r(k)=0.5; Ref=r(k);

v = v + Ref - Y;

U = - K*x + KI*v;

x = G*x + H*U;

Y = C*x;

y(k) = Y; u(k) = U;

end

% GRAFICOS

t=linspace(0,N*T,N);

subplot(2,1,1)

plot(t,y(1:N)), grid

ylabel('Posicion (m)')

xlabel('Tiempo en segundos')

subplot(2,1,2)

plot(t,u(1:N)), grid

xlabel('Tiempo en segundos')

ylabel('Voltaje de control')

print -deps -f p5opt2

Con diferente matriz de Ponderacin

% CALCULO DE LA GANANCIA DEL CONTROLADORQ= [1 0 0 0 0;0 1 0 0 0;0 0 10 0 0;0 0 0 1 0;0 0 0 0 1e2];

Problema 4.4

La figura 3.20 muestra un monorriel de dos carros descrito en el problema 3.5. El problema a resolver es el control de velocidad del carro de maquinas mediante un sistema de control optimo cuadrtico. Para garantizar a los pasajeros un viaje confortable, los cambios de velocidad deben realizarse con un tiempo de estabilizacin menor que 10 segundos y con mnimo sobre impulso.

El error en estado estable debe ser nulo. Simule una seal de referencia que cambie la velocidad de 30 a 10 m/s y demuestre que se cumplen las especificaciones de diseo. La seleccin del tiempo de muestreo es a conveniencia del diseo.

%SOLUCION DEL PROBLEMA 4.4

close all

% PARAMETROS DEL PROCESO:

M1=1300; M2=2600; M3=2600; K12=100000; K23=100000;

B12=500; B23=500; B1=5000; B2=10000; B3=10000;

% MODELO DEL PROCESO

A=[0 1 0 0 0 0

-K12/M1 -(B1+B12)/M1 K12/M1 B12/M1 0 0

0 0 0 1 0 0

K12/M2 B12/M2 -(K12+K23)/M2 -(B2+B23+B12)/M2 K23/M2 B23/M2

0 0 0 0 0 1

0 0 K23/M3 B23/M3 -K23/M3 -(B3+B23)/M3];

B=[0 1 0 0 0 0]';

alfa = 1; % CONSTANTE TACOMETRICA

C=[ 0 alfa 0 0 0 0;0 0 0 alfa 0 0;0 0 0 0 0 alfa];

D=[0;0;0];

[numc,denc]=ss2tf(A,B,C,D);

% MODELO LINEAL DISCRETO

T = 0.2; % periodo de muestreo

[G,H,C,D]=c2dm(A,B,C,D,T,'zoh');

% ADICIONANDO ACCION INTEGRAL

G1 = [G zeros(6,1);-C(1,:)*G 1];

H1 = [H;-C(1,:)*H];

% CALCULO DE LA GANANCIA DEL CONTROLADOR

Q=[100 0 0 0 0 0 0;0 1 0 0 0 0 0;0 0 1 0 0 0 0;0 0 0 1 0 0 0

0 0 0 0 1 0 0;0 0 0 0 0 1 0;0 0 0 0 0 0 600];

R = [10];

% OBTENEMOS LA GANANCIA DEL CONTROLADOR APLICANDO dlqr

[KK,P]=dlqr(G1,H1,Q,R);

% SEPARAMOS LA ACCION INTEGRAL

K = [KK(1) KK(2) KK(3) KK(4) KK(5) KK(6)];

KI = -KK(7);

% SIMULACION

N = 500; x=[0;0;0;0;0;0]; v=0; Y=0;

for k=1:N

r(k)=20 + 10*sign(sin(0.02*k)); Ref=r(k);

v = v + Ref - Y;

U = - K*x + KI*v;

x = G*x + H*U;

Y = C(1,:)*x;

y(k) = Y; u(k) = U;

end

% GRAFICOS

t=linspace(0,N*T,N);

subplot(2,1,1)

plot(t,y(1:N),t,r(1:N)), grid

ylabel('Velocidad (m/s)')

xlabel('Tiempo en segundos')

subplot(2,1,2)

plot(t,u(1:N)), grid

xlabel('Tiempo en segundos')

ylabel('Fuerza de control (N)')

print -deps -f p7opt2

Problema 4.5

La figura 3.22 muestra el proceso ascensor tratado en el problema 3.6. El problema a resolver es posicionar suavemente el ascensor en un piso determinado, lo que significa sobre impulso nulo (para que no se pase de piso) y tiempo de estabilizacin menor que 10 s. Para no saturar al actuador (el amplificador de potencia), la seal de control debe estar dentro del rango de 200 volt. Disear un sistema de control optimo cuadrtico estacionario de posicin que cumpla las especificaciones pedidas. La seleccin del tiempo de muestreo es a conveniencia del diseo.

% SOLUCION DEL PROBLEMA 4.5

clear all

% MODELO CONTINUO DE LA PLANTA

A=[-0.2 0 0 0;1 0 0 0;2 0 -2 0;5 0 0 -5];

B=[10e-3; 0; 0; 0]; C=[0 1 0 0 ]; D=[0];

% MODELO LINEAL DISCRETO

T = 0.2; % PERIODO DE MUESTREO

[G,H,C,D]=c2dm(A,B,C,D,T,'zoh');

G1 = [G zeros(4,1);-C*G 1];

H1 = [H;-C*H];

% INGRESO DE PESOS

Q = [100 0 0 0 0;0 100 0 0 0;0 0 1 0 0

0 0 0 1 0;0 0 0 0 5];

R = [0.01];

% ECUACION DE RICCATI

P = diag(0,4);

for i = 1:40

P = Q + G1'*P*G1 - G1'*P*H1*inv(R+H1'*P*H1)*H1'*P*G1;

end

% CALCULO DE LA MATRIZ DE GANANCIA KK

KK = inv(R+H1'*P*H1)*H1'*P*G1;

% SEPARAMOS LA ACCION INTEGRAL

K = [KK(1) KK(2) KK(3) KK(4)];

KI = -KK(5);

% KK = dlqr(G1,H1,Q,R);

% CALCULO DE LA MATRIZ DE OBSERVABILIDAD

No = [C' G'*C' (G')^2*C' (G')^3*C'];

rankNo = rank(No); % sistema no es observable

% SIMULACION

N = 200; x=[0;0;0;0]; v=0; Y=0;

for k=1:N

r(k)=3*sign(sin(0.02*k)); Ref=r(k);

v = v + Ref - Y;

U = - K*x + KI*v;

if(U > 200)

U = 200;

elseif(U < -200)

U = -200;

end

x = G*x + H*U;

Y = C*x;

y(k) = Y; u(k) = U;

end

% GRAFICOS

t=linspace(0,N*T,N);

subplot(2,1,1)

plot(t,y(1:N),t,r(1:N)), grid

ylabel('Posicion (m)')

xlabel('Tiempo en segundos')

subplot(2,1,2)

plot(t,u(1:N)), grid

xlabel('Tiempo en segundos')

ylabel('Voltaje de control')

print -deps -f p8opt2

Problema 4.6

La figura 2.2 muestra dos tanques idnticos colocados en cascada. La seccin horizontal A=9 m2 de cada tanque es constante. El objetivo de control es controlar la altura H2 empleando el flujo Qo. La deduccin del modelo linealizado del proceso se derivo en el ejemplo 2.1. Disear un controlador optimo cuadrtico estacionario con las especificaciones siguientes: tiempo de estabilizacin menor que 20 s, sobreimpulso menor al 5% y error nulo en estado estable. El flujo de entrada (la seal de control) no debe sobrepasar los 3 m3/s. La seleccin del tiempo de muestreo es a conveniencia del diseo.

%SOLUCION DEL PROBLEMA 4.6

clear all

% DEERMINACION DE LAS MATRICES DE LA ECUACION DE ESTADO

gam=0.4; rho=1.23; g=9.81; A=9; Qo=3;

H1eq = Qo^2/(gam^2*rho*g);

a11 = -((gam*((rho*g)^1/2))/(2*A*((H1eq)^1/2)));

A=[a11 0

-a11 a11];

B=[1; 0];

C=[0 1]; D=[0];

% DISCRETIZACION DEL SISTEMA

T = 0.2;

[G,H]=c2d(A,B,T);

% VERIFICANDO SI LA PLANTA TIENE ACCION INTEGRAL

% eigG=eig(G); % NO TIENE POLOS EN z=0;

% ADICIONANDO ACCION INTEGRAL

G1 = [G zeros(2,1);-C*G 1]; H1 = [H;-C*H];

% CALCULO DE LA GANANCIA DEL CONTROLADOR

Q = [15 0 0;0 200 0;0 0 0.6];

R = [2];

% OBTENEMOS LA GANANCIA DEL CONTROLADOR APLICANDO dlqr

[KK,P]=dlqr(G1,H1,Q,R);

% SEPARAMOS LA ACCION INTEGRAL

K = [KK(1) KK(2)];

KI = -KK(3);

% SIMULACION

N = 200; x=[0;0]; v=0; Y=0;

for k=1:N

r(k)=3; Ref=r(k);

v = v + Ref - Y;

U = - K*x + KI*v;

if(U > 5)

U = 5;

elseif(U < 0)

U = 0;

end

x = G*x + H*U;

Y = C(1,:)*x;

y(k) = Y; u(k) = U;

end

% GRAFICOS

t=linspace(0,N*T,N);

subplot(2,1,1)

plot(t,y(1:N),t,r(1:N)), grid

ylabel('Nivel (m)')

xlabel('Tiempo en segundos')

subplot(2,1,2)

plot(t,u(1:N)), grid

xlabel('Tiempo en segundos')

ylabel('Flujo de control (m^3/s)')

print -deps -f p9opt2

Problema 4.7

El proceso electromecnico mostrado en la figura 3.26 se describe en el problema 3.8. Disear un sistema de control ptimo cuadrtico estacionario para controlar la velocidad angular del eje del motor mediante el voltaje de entrada que puede variar entre 100 volt.

%SOLUCION DEL PROBLEMA 4.7

clear all

% PARAMETROS GENERALES

nn = 3; r=1; % nn: ORDEN DEL PROCESO; r: NUMERO DE SALIDAS

NN = 7; % ORDEN DEL VECTOR ESTIMADO DE PARAMETROS

% PARAMETROS DEL SISTEMA:

J = 0.01; % MOMENTO DE INERCIA DEL MOTOR (kgm2/s2)

Ke =0.01; Kt = 0.01; % CONSTANTE ELECTROMOTRIZ (Nm/A)

R = 12; % RESISTENCIA (Ohmios)

C = 0.5; % CONDENSADOR (uF)

L = 0.5; % INDUCTANCIA DE LA ARMADURA (H)

Kw = 1.8; % CONSTANTE TORSIONAL (Nm/rad)

% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO

Ac = [-1/(R*C) -1/C 0;...

Kw/(L*Kw + Kt*Ke) 0 -Ke*Kw/(L*Kw + Kt*Ke);0 Kt/J 0];

Bc = [1/(R*C);0;0];

Cc = [0 0 1]; Dc = [0];

T = 0.05; % PERIODO DE MUESTREO

% MODELO LINEAL DISCRETO

[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh');

[num,den]=ss2tf(G,H,C,D);

a1 = den(2); a2 = den(3); a3=den(4);

b1 = num(2); b2 = num(3); b3=num(4);

% VERIFICANDO SI LA PLANTA TIENE ACCION INTEGRAL

% raices = eig(G); % NO TIENE POLOS z=0;

% ADICIONANDO ACCION INTEGRAL

G1 = [G zeros(3,1);-C*G 1];

H1 = [H;-C*H];

% CALCULO DE LA GANANCIA DEL CONTROLADOR

Q = [5 0 0 0;0 1 0 0;0 0 10 0;0 0 0 0.1];

R = [0.01];

% CONTROL OPTIMO DEL SISTEMA

% OBTENEMOS LA GANANCIA DEL CONTROLADOR APLICANDO dlqr

[KK,P]=dlqr(G1,H1,Q,R);

% SEPARAMOS LA ACCION INTEGRAL

K = [KK(1) KK(2) KK(3)];

KI = -KK(4);

% SIMULACION

N = 600; x=[0;0;0]; v=0; Y=0;

for k=1:N

r(k)=5*sign(sin(0.008*k)); Ref=r(k);

v = v + Ref - Y;

U = - K*x + KI*v;

% if(U > 24)

% U = 24;

% elseif(U < -24)

% U = -24;

% end

x = G*x + H*U;

Y = C(1,:)*x;

y(k) = Y; u(k) = U;

end

% GRAFICOS

t=linspace(0,N*T,N);

subplot(2,1,1)

plot(t,y(1:N),t,r(1:N)), grid

ylabel('Velocidad (rad/s)')

xlabel('Tiempo en segundos')

subplot(2,1,2)

plot(t,u(1:N)), grid

xlabel('Tiempo en segundos')

ylabel('Voltaje de control')

print -deps -f p11opt2