MIMO
Sea el siguiente proceso multivariable descrito por las ecuaciones diferenciales:
Donde
[ ]
[ ]
][ ]
][
[ ]
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
(
)
( )
( )
( )
( )
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')
Dd =
0
[
[
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
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
[
Sea
]
] entonces la matriz
-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
Cdigo en MATLAB:
K0=place(G0,H0,z0)
K=Ks+v*K0
eig(Gd-Hd*K)
La matriz de Prealimentacin
tiene dimensin 3x2 se determina utilizando la siguiente
representacin obtenida en estado estacionario
]
)[
((
[
]
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:
(
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
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
stairs(k*Ts,X(:,5))
hold on
stairs(k*Ts,X(:,6))
hold on
0
0
0 1.0000
-40.0000
ze =
0.4436 + 0.0716i 0.4436 - 0.0716i 0.5122 + 0.1253i 0.5122 - 0.1253i 0.3012
0.2019
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
numericamente es:
[
La matriz
[
El cdigo en MATLAB ser:
v=[-1 2]'
C0=Cd'*v
Ke0=place(Ge0,C0,ze)
Ke=Ks+v*Ke0
]
) 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:
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(:,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