Sunteți pe pagina 1din 22

Tarea 3: Diseo de Controladores y Observadores de Estado para un Sistema

MIMO
Sea el siguiente proceso multivariable descrito por las ecuaciones diferenciales:

Donde

: las variables de salida;

: las variables de entrada

a) Eligiendo como variable de estado


[
]
[

]
Representaremos al sistema mediante variables de estado en tiempo continuo y con un
muestreador de periodo T=0.04 seg y un retenedor de orden cero, discretizaremos el
proceso.
Llevando a matrices el siguiente sistema, tendremos:

[ ]

[ ]

][ ]

][

[ ]
En forma compacta el proceso se puede representar como

El tiempo discreto con muestreador de periodo T=0.04 seg. Las ecuaciones en el espacio de estado se
convierten en
(

)
( )

( )

( )

( )

Usaremos el MATLAB para convertir el sistema a Digital y hallar las matrices G y H.

Programa en MATLAB
% a) Sistema continuo, luego retenedor de Orden Zero
A=[0 1 0 0 0 0;0 0 1 0 0 0;-8 -3 -4 -6 0 -5;0 0 0 0 1 0;0 0 0 0 0 1;-7 0 -6
-5 -2 4]
B=[0 0 0;0 0 0;8 6 -2;0 0 0;0 0 0;6 8 -3]
C=[1 0 0 0 0 0;0 0 0 1 0 0]
D=[0 0 0;0 0 0]
I=[1 0 0 0 0 0;0 1 0 0 0 0;0 0 1 0 0 0;0 0 0 1 0 0;0 0 0 0 1 0;0 0 0 0 0 1]
Ts=0.04
[Gd Hd Cd Dd]=c2dm(A,B,C,D,Ts,'zoh')

Respuesta del MATLAB


>> Planta_SS
Gd =
0.9999 0.0400 0.0008 -0.0001 0.0000 -0.0001
-0.0057 0.9976 0.0372 -0.0043 0.0000 -0.0040
-0.2698 -0.1174 0.8728 -0.2033 0.0037 -0.2023
-0.0001 0.0000 -0.0001 0.9999 0.0400 0.0008
-0.0054 0.0001 -0.0048 -0.0039 0.9983 0.0437
-0.2672 0.0091 -0.2427 -0.1895 -0.0912 1.1971
Hd =
0.0001 0.0001 -0.0000
0.0058 0.0041 -0.0014
0.2738 0.1913 -0.0624
0.0001 0.0001 -0.0000
0.0046 0.0064 -0.0024
0.2235 0.3205 -0.1214
Cd =
1

Dd =
0

De aqu obtenemos las matrices Gd, Hd.

[
[

b) Mediante el mtodo de ubicacin de polos para un sistema multivariable, disearemos un


controlador en realimentacin de estados de ganancia K para que el vector de salida y(kT)
siga un vector de referencia r(kT) en estado estacionario corrigiendo el error en estado
estacionario mediante una matriz de prealimentacin , con la siguiente ley de control
( )
( )
( ). Las variables de respuesta deben ser moderadas en el tiempo
transitorio y apropiadas en rgimen permanente para que las variables de control u(kT) no
presenten grandes magnitudes.
Vamos a ver si el Sistema es Completamente controlable, esto significa que la matriz de
controlabilidad M deber tener un rango=6.
[
Ingresando la ecuacin para hallar M en MATLAB tenemos:
M=[Hd Gd*Hd Gd^2*Hd Gd^3*Hd Gd^4*Hd Gd^5*Hd]
rango_M=rank(M)

El MATLAB nos devuelve:


M=
Columns 1 through 7

0.0001 0.0001 -0.0000 0.0005 0.0004 -0.0001 0.0012


0.0058 0.0041 -0.0014 0.0151 0.0100 -0.0032 0.0214
0.2738 0.1913 -0.0624 0.1931 0.1016 -0.0298 0.1260
0.0001 0.0001 -0.0000 0.0004 0.0006 -0.0002 0.0011
0.0046 0.0064 -0.0024 0.0130 0.0195 -0.0074 0.0208
0.2235 0.3205 -0.1214 0.2007 0.3367 -0.1300 0.1922

Columns 8 through 14
0.0008 -0.0003 0.0022 0.0013 -0.0004 0.0032 0.0017
0.0124 -0.0038 0.0253 0.0115 -0.0031 0.0269 0.0074
0.0193 0.0007 0.0681 -0.0612 0.0311 0.0157 -0.1452
0.0017 -0.0006 0.0021 0.0033 -0.0013 0.0034 0.0057
0.0336 -0.0129 0.0286 0.0499 -0.0194 0.0368 0.0695
0.3766 -0.1477 0.1972 0.4426 -0.1756 0.2162 0.5393

Columns 15 through 18
-0.0005 0.0043 0.0018 -0.0005
-0.0013 0.0265 -0.0002 0.0020
0.0633 -0.0346 -0.2380 0.0995
-0.0022 0.0050 0.0089 -0.0035
-0.0271 0.0461 0.0936 -0.0368
-0.2157 0.2505 0.6731 -0.2706

rango_M =
6

Ahora usaremos la matriz aleatoria Ks:


[
La Matriz
Usando el siguiente cdigo en Matlab:
Ks=[1 -3 4 5 6 -5;4 13 -4 2 -2 4;1 -2 4 0 -3 2]
G0=Gd-Hd*Ks
m=eig(G0)

Matlab nos devuelve:


Ks =
1 -3

6 -5

4 13 -4

2 -2

1 -2

0 -3

G0 =
0.9996 0.0394 0.0008 -0.0006 -0.0004 0.0001
-0.0267 0.9584 0.0362 -0.0415 -0.0304 0.0110
-1.2463 -1.9074 0.7924 -1.9549 -1.4438 0.5265
-0.0004 -0.0010 0.0002 0.9995 0.0397 0.0009
-0.0332 -0.0741 0.0121 -0.0395 0.9764 0.0458
-1.6515 -3.7303 0.6311 -1.9481 -1.1555 1.2754
m=
0.3798
1.2977 + 0.2744i
1.2977 - 0.2744i
0.9625
0.9925
1.0713

Vemos que los valores propios de la matriz

son distintos, esto es:

[
Sea

]
] entonces la matriz

El cdigo en Matlab sera:


v=[1 -4 2]'
H0=Hd*v

Matlab nos regresa:


v=
1
-4
2
H0 =
-0.0002
-0.0135
-0.6161
-0.0003
-0.0258
-1.3015
Sean los polos en tiempo continuo:
[

En tiempo discreto los polos sern (usando Matlab):


s=[-5+5i -5-5i -3+3i -3-3i -10 -12]
z0=exp(Ts*s)

Matlab nos regresa:


s=
-5.0000 + 5.0000i -5.0000 - 5.0000i -3.0000 + 3.0000i -3.0000 - 3.0000i -10.0000

-12.0000

z0 =
0.8024 + 0.1627i 0.8024 - 0.1627i 0.8805 + 0.1062i 0.8805 - 0.1062i 0.6703

0.6188

Las matrices
representan un sistema de simple entrada y con el espectro de polos en lazo
cerrado se obtiene la matriz .
Luego de hallar

hallaremos la matriz deseada de realimentacin

Cdigo en MATLAB:
K0=place(G0,H0,z0)
K=Ks+v*K0
eig(Gd-Hd*K)

Matlab nos devuelve:


K0 =
37.9981 6.7827 -0.3967 -52.6251 -6.4576 -0.7807
K=
38.9981 3.7827 3.6033 -47.6251 -0.4576 -5.7807
-147.9924 -14.1310 -2.4133 212.5003 23.8306 7.1229
76.9962 11.5655 3.2066 -105.2501 -15.9153 0.4385
ans =
0.6188
0.6703
0.8024 + 0.1627i
0.8024 - 0.1627i
0.8805 + 0.1062i
0.8805 - 0.1062i
Entonces la matriz K:
[
Vemos que los autovalores coinciden con los polos de lazo cerrado propuestos.

La matriz de Prealimentacin
tiene dimensin 3x2 se determina utilizando la siguiente
representacin obtenida en estado estacionario
]

)[

((

Con la matriz D=0 se consigue:


[

[
]
La matriz
de dimensin 2x3, por lo tanto no es posible despejar la matriz
directamente, entonces se debe determinar la pseudoinversa de la matriz F que viene a ser:
(

Evaluando en Matlab se obtiene:


F=Cd*(I-Gd+Hd*K)^-1*Hd
Kr=F'*(F*F')^-1

Matlab nos devuelve:


F=
0.1414 0.0299 -0.0027
0.0991 0.0248 -0.0036
Kr =
40.4359 -47.6288
-151.6189 216.5228
67.8678 -96.1976
Entonces tendramos las matrices F y Kr:
[

Tambien es posible determinar la matriz de realimentacin de estados utilizando la funcin place


del MATLAB directamente:
K=place(Gd,Hd,z0)
eig(Gd-Hd*K)
F=Cd*(I-Gd+Hd*K)^-1*Hd
Kr=F'*(F*F')^-1

MATLAB nos regresa:


K=
61.9203 21.3595 4.1105 -30.2407 -15.6371 -4.8131
-35.8564 -10.6509 -2.8546 41.1216 17.9169 4.8849
19.7899 6.0904 1.5170 -19.7836 -8.7956 -2.4373
ans =
0.8805 + 0.1062i
0.8805 - 0.1062i
0.8024 + 0.1627i
0.8024 - 0.1627i
0.6188
0.6703
F=
0.0273 0.0170 -0.0053
0.0242 0.0352 -0.0133
Kr =
62.7100 -29.5970
-35.5946 41.2589
19.7341 -19.7965

c) Con el diseo de la parte b) graficaremos el vector de Salida y(kT), el vector de estado x(kT)
y el vector de control u(kT) ante un vector de referencia r(kT) de un escalon unitario y un
vector de estado de tiempo inicial ( ) [
] .}
El cdigo en Matlab para obtener la Salidas y(kT)
Gr=Gd-Hd*K;
Hr=Hd*Kr;
Cr=Cd;
Dr=[0 0;0 0];
X0=[-0.2 0.05 0 0.2 -0.05 0]'

N=100;
k=0:N-1;
[Y1,X1]=dstep(Gr,Hr,Cr,Dr,1,N);
[Y2,X2]=dstep(Gr,Hr,Cr,Dr,2,N);
[Y3,X3]=dinitial(Gr,Hr,Cr,Dr,X0,N);
Y=(Y1+Y2+Y3);
X=(X1+X2+X3);
hold off
stairs(k*Ts,Y(:,1))
grid on
hold on
stairs(k*Ts,Y(:,2))
hold on

Matlab nos devuelve el siguiente grfico:

Para observar los vectores de estado x(kT):


Gr=Gd-Hd*K;
Hr=Hd*Kr;
Cr=Cd;
Dr=[0 0;0 0];
X0=[-0.2 0.05 0 0.2 -0.05 0]'
N=100;

k=0:N-1;
[Y1,X1]=dstep(Gr,Hr,Cr,Dr,1,N);
[Y2,X2]=dstep(Gr,Hr,Cr,Dr,2,N);
[Y3,X3]=dinitial(Gr,Hr,Cr,Dr,X0,N);
Y=(Y1+Y2+Y3);
X=(X1+X2+X3);
hold off
stairs(k*Ts,X(:,1))
grid on
hold on
stairs(k*Ts,X(:,2))
hold on
stairs(k*Ts,X(:,3))
hold on
stairs(k*Ts,X(:,4))
hold on
stairs(k*Ts,X(:,5))
hold on
stairs(k*Ts,X(:,6))
hold on

Matlab nos ofrece el siguiente grfico:

Para la seal de control U:

La respuesta del sistema usando el K usando la funcin place:


El cdigo en Matlab para obtener la Salidas y(kT)
Gr=Gd-Hd*K;
Hr=Hd*Kr;
Cr=Cd;
Dr=[0 0;0 0];
X0=[-0.2 0.05 0 0.2 -0.05 0]'
N=100;
k=0:N-1;
[Y1,X1]=dstep(Gr,Hr,Cr,Dr,1,N);
[Y2,X2]=dstep(Gr,Hr,Cr,Dr,2,N);
[Y3,X3]=dinitial(Gr,Hr,Cr,Dr,X0,N);
Y=(Y1+Y2+Y3);
X=(X1+X2+X3);
hold off
stairs(k*Ts,Y(:,1))
grid on
hold on
stairs(k*Ts,Y(:,2))
hold on

Matlab nos devuelve el siguiente grfico:

Para observar los vectores de estado x(kT):


Gr=Gd-Hd*K;
Hr=Hd*Kr;
Cr=Cd;
Dr=[0 0;0 0];
X0=[-0.2 0.05 0 0.2 -0.05 0]'
N=100;
k=0:N-1;
[Y1,X1]=dstep(Gr,Hr,Cr,Dr,1,N);
[Y2,X2]=dstep(Gr,Hr,Cr,Dr,2,N);
[Y3,X3]=dinitial(Gr,Hr,Cr,Dr,X0,N);
Y=(Y1+Y2+Y3);
X=(X1+X2+X3);
hold off
stairs(k*Ts,X(:,1))
grid on
hold on
stairs(k*Ts,X(:,2))
hold on
stairs(k*Ts,X(:,3))
hold on
stairs(k*Ts,X(:,4))
hold on

stairs(k*Ts,X(:,5))
hold on
stairs(k*Ts,X(:,6))
hold on

Matlab nos ofrece el siguiente grfico:

Para la seal de control U:

d) Disearemos un observador de estados de ganancia Ke usando el mtodo de reubicacin


de polos para que la dinmica o respuesta de estimacin sea lo suficientemente rpida
respecto del controlador diseado en (b).
Hallamos en primer lugar la matriz de observabilidad N, lo cual ayudndonos del MATLAB nos da una
matriz de orden 6, por tanto la observabilidad del sistema es completa.
Sean los polos ubicados en el plano S para el observador:
[
El cdigo en MATLAB es:
%Matriz de Observabilidad
N=[Cd;Cd*Gd;Cd*Gd^2;Cd*Gd^3;Cd*Gd^4;Cd*Gd^5]
rank(N)
se=[-20+4i -20-4i -16+6i -16-6i -30 -40]
ze=exp(se*Ts)

MATLAB nos devuelve:


>> observador
N=
1.0000
0

0
0

0 1.0000

0.9999 0.0400 0.0008 -0.0001 0.0000 -0.0001


-0.0001 0.0000 -0.0001 0.9999 0.0400 0.0008
0.9994 0.0797 0.0029 -0.0004 0.0000 -0.0004
-0.0006 0.0000 -0.0005 0.9996 0.0798 0.0036
0.9982 0.1192 0.0064 -0.0014 0.0000 -0.0015
-0.0019 0.0001 -0.0018 0.9987 0.1193 0.0088
0.9961 0.1580 0.0111 -0.0029 0.0002 -0.0036
-0.0045 0.0003 -0.0043 0.9968 0.1582 0.0169
0.9931 0.1961 0.0172 -0.0053 0.0004 -0.0072
-0.0088 0.0008 -0.0087 0.9939 0.1962 0.0289
ans =
6
se =
-20.0000 + 4.0000i -20.0000 - 4.0000i -16.0000 + 6.0000i -16.0000 - 6.0000i -30.0000

-40.0000

ze =
0.4436 + 0.0716i 0.4436 - 0.0716i 0.5122 + 0.1253i 0.5122 - 0.1253i 0.3012

0.2019

Los polos en el plano Z resultan ser:


[

La ganancia Ke del observador la determinaremos usando el algoritmo del diseo del controlador
para sistemas multivariables teniendo en cuenta el criterio de Sistema Dual. Para esto es necesario
usar las matrices
del sistema original.
La matriz Kes arbitraria para el sistema dual de dimensin 2x6 es:
[
La matriz

Usando el Matlab:
Kes=[2 50 5 0 1 -1;1 3 40 0 -1 4]
Ge0=Gd'-Cd'*Kes
m=eig(G0)

El Matlab no regresa:
Kes =
2 50
1

3 40

1 -1

0 -1

Ge0 =
-1.0001 -50.0057 -5.2698 -0.0001 -1.0054 0.7328
0.0400 0.9976 -0.1174 0.0000 0.0001 0.0091
0.0008 0.0372 0.8728 -0.0001 -0.0048 -0.2427
-1.0001 -3.0043 -40.2033 0.9999 0.9961 -4.1895
0.0000 0.0000 0.0037 0.0400 0.9983 -0.0912
-0.0001 -0.0040 -0.2023 0.0008 0.0437 1.1971
m=
0.3798
1.2977 + 0.2744i
1.2977 - 0.2744i
0.9625
0.9925
1.0713

Por tanto la Matriz :

Los valores propios de la matriz


son distintos, por lo tanto la matriz Kes es vlida. El vector v de
transformacin a un sistema de una entrada puede ser:
[
La matriz

numericamente es:
[

La matriz

de realimentacin para el sistema univariable (

[
El cdigo en MATLAB ser:
v=[-1 2]'
C0=Cd'*v
Ke0=place(Ge0,C0,ze)
Ke=Ks+v*Ke0

El MATLAB nos regresa:


v=
-1
2
C0 =
-1
0
0
2

]
) es:

0
0
Ke0 =
-0.4777 3.3170 -51.6385 0.5867 8.8016 74.2686
Ke =
2.4777 46.6830 56.6385 -0.5867 -7.8016 -75.2686
0.0446 9.6339 -63.2770 1.1734 16.6031 152.5372
Por lo tanto la matriz de ganancia
multivariable se obtiene como:

) del estimador u observador de estados

Aplicando la funcin place del MATLAB se obtiene


Ke=place(Gd',Cd',ze)

El MATLAB regresa:
Ke =
1.5758 17.3814 51.7124 0.0199 -0.4734 -34.0778
-0.2203 -7.7137 -132.5347 2.0753 33.8543 319.8262

e) Con diseo del observador de estados de la parte d) graficaremos el vector de error ( )


entre el vector de estado real ( ) y el vector de estado estimado ( ) considerando
] y
un vector de estado real de tiempo inicial ( ) [
el vector de estado estimado inicial nulo.

El Cdigo en MATLAB para los grficos sera:


X0=[-0.2 0.05 0 0.2 -0.05 0]';
N=20;
k=0:N-1;
e0=X0;

e(:,1)=[0 0 0 0 0 0];
e(:,2)=(Gd-Ke'*Cd)*e0;
for i=2:19
e(:,i+1)=(Gd-Ke'*Cd)*e(:,i);
end
hold off
plot(k*Ts,e(1,:))
grid on
hold on
plot(k*Ts,e(2,:))
hold on
plot(k*Ts,e(3,:))
hold on
plot(k*Ts,e(4,:))
hold on
plot(k*Ts,e(5,:))
hold on
plot(k*Ts,e(6,:))
hold on

El Matlab nos regresa el siguiente Grfico:

El grfico que nos da el MATLAB usando la funcin place: