Documente Academic
Documente Profesional
Documente Cultură
Electronic
address:
williamc@usb.ve;
URL:
http://sites.google.com/site/
cursoswilliamcolmenares/Home/control-robusto Electronic address: itlmgvp@yahoo.com Electronic address: fernandy2k@hotmail.com Electronic address: ing_miguel_abril@hotmail.com
I.
Modelo Planta 1:
G1(s)= 0.6125e32s 254s + 1
Modelo Planta 2: 2
G2(s)=
0.75e25s 215s + 1
Modelo Planta 3:
G3(s)= 0.3e20s 100s + 1
Modelo Planta 4:
G4(s)= 0.6e34s 200s + 1
Para los dos casos se utiliz la planta nominal para el diseo del controlador:
SINTONIZACIN DE UN CONTROLADOR PID (MTODO ZIEGLERNICHOLS DE GANANCIA LTIMA)
Haciendo oscilar la planta nominal variando K se obtuvo un Kcr=23.618 y un Pcr=76 con lo cual en base a la tabla de Ziegler-Nichols se obtuvo:
Kp = 0.45Kcr = 10.6281
T i = P cr/1.2 = 63.3333
SINTONIZACIN DE UN CONTROLADOR PID (MTODO ZIEGLERNICHOLS DE PRIMER ORDEN)
En base a:
G(s)= K es s+1
y vericando que:
0.1 < <1
se tiene:
Kp = 0.9 /(K ) = 12.9808
T i = 3.33 = 66.6667
Sin embargo cuando se le presentaba el controlador a las diferentes plantas su respuesta difera en demasia por lo que se implement el siguiente cdigo en Matlab para observar los valores mnimo de Ti y mximo de Kp en funcin de cada planta. Obteniendo los siguientes resultados ejecutando el script de matlab SintonizacionControladoresPI.m
KP 1 = 11.6633 10.3200 15 823512 98 08 T I1 = 106 560083 250066 6000113 220066 6000 KP 2 = 9 63238 490112 75217 414210 6281 T I2 = 100 000080 000063 3333106 666763 3333
Con lo cual se observa que KP debera ser menor 7.4142 y TI debera ser mayor a 113.2200 por lo que se escoge los siguientes rangos para los valores de KP y TI
Kp < 7.4 T i > 113.3
DESEMPEO ROBUSTO:
Para esto se deber demostrar que el modelo de incertidumbre W2 determinado anteriormente cumple con:
W 2T 1 W 2T 2 W 2T 3 W 2T 4
donde T1, T2, T3, T4 son las funciones de transferencia en lazo cerrado de cada uno de los modelos de planta con el controlador diseado
T i=
Gc(s)Gpi(s) 1+Gc(s)Gpi(s)
En la gura 2 se observa el desempeo para un controlador PI con Kp=7.4 y Ti=113.3, sin embargo se observa que no cumple la norma innito para 2 de los 4 modelos de planta por lo que se realiza un ajuste hasta cumplir la condicin en las 4 plantas lo cual se obtuvo en base a pruebas que los parmetros del controlador deben ser: Kp<6.6 y Ti>113.3 como se muestra en la gura 2.
Por ltimo se ajustaron los parmetros del controlador para obtener en todos los casos una mejor dinmica que no sobrepase del 10% y que los tiempos de establecimiento no sean 5
demasiado grandes en comparacin con la planta nominal sin controlador, lo que produce las siguientes salidas mostradas en las guras 3,4,5.
II.
EJERCICIO 2
<
LMI:
P >0
CP C T < 2
AP + P AT + BB T < 0
Con R=L=C=1
i(t) t V c(t) t
1 1 1
(1)
x = ax + bu y y = cx + du
x = ax bKx + br)
x = (a bK)x + br)
a = a bk
Entonces se tiene:
x = ax + br)
y = cx
LMI2:
CP C T 2 < 0
CP C T 1 < 0
LMI3:
AP + P AT + BB T < 0
AP + P AT + BB T < 0
S = P 1
Se obtiene:
SA + AT S SBK K T B T S + SBB T S < 0
Con
R = KS
P2 = 1.1715 1.7054i
El programa se encuentra en el anexo con el nombre Norma2CircuitoRLC01.m el mismo que al ejecutarlo muestra los siguientes resultados:
Solver for LMI feasibility problems L(x) < R(x) This solver minimizes t subject to L(x) < R(x) + t*I The best value of t should be negative for feasibility Iteration : Best value of t so far 1 -0.290602 Result: best value of t: -0.290602 f-radius saturation: 0.000% of R = 1.00e+009 El tiempo mnimo es: -0.2906 Matriz denida positiva P:
P = 1.2018 0.4006 0.4006 0.5000
R = 0.2997 1.1025
El vector K de realimentacin de estados es: [K = 1.34303.2810] Los polos del sistema son:
P1 = 1.1715 + 1.7054i
P2 = 1.1715 1.7054i
s2 + 2.343s + 5.281
III.
EJERCICIO
v(t) Ri(t) L
1 1 1
(2)
11
V c(t) = 1 0
i(t) V c(t)
+ [0] V (t)
(3)
Por lo tanto:
a= 1 1
1 0 1 b= 0
c= 1 0
d=0
a) Para asegurar un seguimiento perfecto se debe agregar un polo en el origen en la salida tomando en cuenta que esto adiciona una variable de estados como se muestra en el siguiente digrama de bloques:
(4)
12
i(t) 1 L vR(t) L t C
i(t)d t = L {v(t)}
Con las condicione iniciales iguales a cero para obtener la funcion de transferencia y L=C=1.
sLI(s) + RI(s) + 1 I(s) = V (s) Cs
I(s)
1 LC
s I(s) = 2 V (s) s + Rs + 1
s2
con R =
Pn (s) =
W2 (s) = 0.45s
1 P 1 = Pn +
W2
1 = s2 + s + 1 + P P (s) = 1 +s+1+
W2
s2
W2
P (s) =
1 s2 + (1 + 0.4 )s + 1
(5)
13
Por lo tanto es aditivo inverso. Y la norma para comprobar la robustez del sistema es
W2 Pn S 1
C1 s
(6)
14
LMI2
AS + SAT BR RT B T + 2S < 0
(7)
(8)
LMI3
S<0
15
IV.
EJERCICIO
Realimentacin de la salida 16
18
Rn 1 0
An = 1 0
0 0 1 0
donde: Rn=Rmedia
Rn =
R1 +R2 2
0.6+1.4 2
Rn = 1 A = An + DF E
Como |F | 1 entonces Rn se considera positivo. Ahora para cubrir el espectro de A se tiene que:
1 1 0 0.4 A=1 0 0+ 0 F 1 0 0 0 1 0 0
PE 1 0 <0 0 I
LMI #2:
P >0
LMI #3:
>0
Part I
Anexos:
Cdigos Matlab, todos estos programas fueron utilizados para el desarrollo del presente trabajo.
19
A.
LMICircuitoRLCSeguidorRealimentacionEstadosPolihedrica01.m
clear all; close all; clc; % Denicin de las matrices y vectores de estado a=[-1 -1;1 0]; b=[1;0]; c=[0 1]; % Denicin de las matrices y vectores de estado incluido el integrador A=[a [0;0];[0 1] 0]; B=[b;0]; C=[0 c]; % Vectores del nuevo espacio de estado A1=[-0.6 -1 0;1 0 0;0 1 0]; A2=[-1.4 -1 0;1 0 0;0 1 0]; B1=[0;0;1]; C1=[0 1 0]; % Constante a comparar para la robustez del sistema gamma=2; % Respuesta del sistema original sin realimentacin de estados gure(1); sys=ss(a,b,c,0); step(sys); grid on; xlabel('Tiempo'); ylabel('Amplitud'); title('RESPUESTA DEL CIRCUITO RLC SIN CONTROLADOR'); % Conjunto de LMI's para el control por realimentacin de estados y una % respuesta menor a 10 segundos setlmis([]); P=lmivar(1,[3,1]); R=lmivar(2,[1,3]); % Dencin de LMI1 lmiterm([1 1 1 P],A1,1,'s'); lmiterm([1 1 1 R],-B,1,'s'); lmiterm([1 1 1 0],gamma^(-2)*B1*B1'); lmiterm([1 1 2 P],1,C1'); lmiterm([1 2 2 0],-1); % Dencin de LMI2 lmiterm([2 1 1 P],A2,1,'s'); lmiterm([2 1 1 R],-B,1,'s'); lmiterm([2 1 1 0],gamma^(-2)*B1*B1'); lmiterm([2 1 2 P],1,C1'); lmiterm([2 2 2 0],-1); % Dencin de LMI3 lmiterm([-3 1 1 P],1,1); % Fin de la denicin de las LMI's n=getlmis; [tmin,popt]=feasp(n); % Comprobacin de la convergencia de las LMI's disp('El tiempo mnimo es: '); disp(tmin); % Visualizacin de resultados de las matriz denida positiva S y de la % matriz R disp('Matriz denida positiva S:'); P=dec2mat(n,popt,1) %esto saca de la solucin de n de la primera variable disp('Matriz R:'); R=dec2mat(n,popt,2) %esto saca de la solucin de n de la segunda variable % Clculo del vector K de realimentacin de estados K=R*inv(P); disp('El vector K de realimentacin de estados es:'); disp(K); % Comprobacin de la estabilidad del sistema y de la matriz denida S polos=eig(A-B*K); dp=eig(P); disp('Los polos del sistema son: '); disp(polos); disp('Comprobacin de la matriz denida positiva S: '); disp(dp); % Matriz de sensibilidad S=ss(A-B*K,B1,C1,0); % Funcin de transferencia de la planta Pn=ss(A,B,C,0); % Comprobacin de robustez del sistema s=tf('s'); W2=0.4*s; gure(2); bodemag(W2*Pn*S); grid on; xlabel('Frecuencia'); ylabel('Amplitud en dB'); title('COMPROBACIN DE ROBUSTEZ DEL SISTEMA RLC'); % Grca de la seal de salida gure(3); Kt=K(1,1:2); g=ss(a-b*Kt,b,c,0); ga=g*K(1,3)/s; T=feedback(ga,1); step(T); grid on; % Funcin de transferencia del sistema en lazo cerrado disp('La funcin de transferencia del sistema en lazo cerrado es: '); T=tf(T)
B.
LMICircuitoRLCSeguidorRealimentacionEstados.m
20
clc; % Denicin de las matrices y vectores de estado a=[-1 -1;1 0]; b=[1;0]; c=[0 1]; % Denicin de las matrices y vectores de estado incluido el integrador A=[a [0;0];[0 1] 0]; B=[b;0]; C=[0 c]; % Vectores del nuevo espacio de estado B1=[0;0;1]; C1=[0 1 0]; % Constante a comparar para la robustez del sistema gamma=2; % Respuesta del sistema original sin realimentacin de estados gure(1); sys=ss(a,b,c,0); step(sys); grid on; xlabel('Tiempo'); ylabel('Amplitud'); title('RESPUESTA DEL CIRCUITO RLC SIN CONTROLADOR'); % Conjunto de LMI's para el control por realimentacin de estados y una % respuesta menor a 10 segundos setlmis([]); S=lmivar(1,[3,1]); R=lmivar(2,[1,3]); % Dencin de LMI1 lmiterm([1 1 1 S],A,1,'s'); lmiterm([1 1 1 R],-B,1,'s'); lmiterm([1 1 1 0],gamma^(-2)*B1*B1'); lmiterm([1 1 2 S],1,C1'); lmiterm([1 2 2 0],-1); % Dencin de LMI2 lmiterm([2 1 1 S],A,1,'s'); lmiterm([2 1 1 S],0.4,1,'s'); lmiterm([2 1 1 R],-B,1,'s'); % Dencin de LMI3 lmiterm([-3 1 1 S],1,1); % Fin de la denicin de las LMI's n=getlmis; [tmin,popt]=feasp(n); % Comprobacin de la convergencia de las LMI's disp('El tiempo mnimo es: '); disp(tmin); % Visualizacin de resultados de las matriz denida positiva S y de la % matriz R
21
disp('Matriz denida positiva S: '); S=dec2mat(n,popt,1) %esto saca de la solucin de n de la primera variable disp('Matriz R:'); R=dec2mat(n,popt,2) %esto saca de la solucin de n de la segunda variable % Clculo del vector K de realimentacin de estados K=R*inv(S); disp('El vector K de realimentacin de estados es: '); disp(K); % Comprobacin de la estabilidad del sistema y de la matriz denida S polos=eig(A-B*K); dp=eig(S); disp('Los polos del sistema son: '); disp(polos); disp('Comprobacin de la matriz denida positiva S: '); disp(dp); % Matriz de sensibilidad S=ss(A-B*K,B1,C1,0); % Funcin de transferencia de la planta Pn=ss(A,B,C,0); % Comprobacin de robustez del sistema s=tf('s'); W2=0.4*s; gure(2); bodemag(W2*Pn*S); grid on; xlabel('Frecuencia'); ylabel('Amplitud en dB'); title('COMPROBACIN DE ROBUSTEZ DEL SISTEMA RLC'); % Grca de la seal de salida gure(3); Kt=K(1,1:2); g=ss(a-b*Kt,b,c,0); ga=g*K(1,3)/s; T=feedback(ga,1); step(T); grid on; % Funcin de transferencia del sistema en lazo cerrado disp('La funcin de transferencia del sistema en lazo cerrado es: '); T=tf(T)
C.
Norma2CircuitoRLC01.m
22
% Denicin de las matrices y vectores de estado a=[-1 -1;1 0]; b=[1;0]; c=[0 1]; % Constante a comparar para la robustez del sistema gamma=1; % Conjunto de LMI's para el control por realimentacin de estados y la % norma 2 < gamma setlmis([]); P=lmivar(1,[2,1]); R=lmivar(2,[1,2]); % Dencin de LMI1 lmiterm([1 1 1 P],a,1,'s'); lmiterm([1 1 1 R],-b,1,'s'); lmiterm([1 1 1 0],b*b'); % Dencin de LMI2 lmiterm([2 1 1 P],c,c'); lmiterm([2 1 1 0],-gamma^2); % Dencin de LMI3 lmiterm([-3 1 1 P],1,1); % Fin de la denicin de las LMI's n=getlmis; [tmin,popt]=feasp(n); % Comprobacin de la convergencia de las LMI's disp('El tiempo mnimo es: '); disp(tmin); % Visualizacin de resultados de las matriz denida positiva P y de la % matriz R disp('Matriz denida positiva P: '); P=dec2mat(n,popt,1) R=dec2mat(n,popt,2) % Clculo del vector K de realimentacin de estados K=R*inv(P); disp('El vector K de realimentacin de estados es: '); disp(K); % Comprobacin de la estabilidad del sistema y de la matriz denida P polos=eig(a-b*K); dp=eig(P); disp('Los polos del sistema son: '); disp(polos); disp('Comprobacin de la matriz denida positiva P: '); disp(dp); % Grca de la seal de salida gure(1); g=ss(a-b*K,b,c,0); T=feedback(g,1); step(g);
23
grid on; xlabel('Tiempo'); ylabel('Amplitud'); title('RESPUESTA DEL CIRCUITO RLC CON REALIMENTACIN DE ESTADOS'); % Comprobacin de la Norma2 < 1 Pn=ss(a,b,c,0); Lc=gram(Pn,'c'); Lo=gram(Pn,'o'); Norma2Con=c*Lc*c' Norma2Obs=b'*Lo*b hold on; step(Pn) % Funcin de transferencia del sistema en lazo cerrado disp('La funcin de transferencia del sistema en lazo cerrado es: '); T=tf(T)
D.
BodeIncertidumbreMultiplicativo4Plantas.m
clear all; close all; clc; s=tf('s'); g1=0.6125/(254*s+1); set(g1,'OutputDelay',32); %Esto de aqu adiciona un retardo g1=ss(g1); %Esto pasa a espacio de estados porque caso contrario no puedo trabajar con retardos g2=0.75/(215*s+1); set(g2,'OutputDelay',25); g2=ss(g2); g3=0.3/(100*s+1); set(g3,'OutputDelay',20); g3=ss(g3); g4=0.6/(200*s+1); set(g4,'OutputDelay',34); g4=ss(g4); gn=0.6656/(192*s+1); set(gn,'OutputDelay',20); gn=ss(gn); set(g1,'OutputDelay',0); %Elimino los retardos para poder hacer la divisin de g1/gn set(g2,'OutputDelay',0); set(g3,'OutputDelay',0); set(g4,'OutputDelay',0); set(gn,'OutputDelay',0); gg1=g1/gn; %Realizo la divisin de las funciones de transferencia pero sin los retardos gg2=g2/gn; gg3=g3/gn;
24
gg4=g4/gn; set(gg1,'OutputDelay',12); %Adiciono el retardo neto (32-20) set(gg2,'OutputDelay',5); %Adiciono el retardo neto (25-20) set(gg3,'OutputDelay',0); %Adiciono el retardo neto (20-20) set(gg4,'OutputDelay',14); %Adiciono el retardo neto (34-20) bodemag(gg1-1,gg2-1,gg3-1,gg4-1,{0.0001 100}); %Graco la incertidumbre multiplicativa grid on; % Clculo del modelo de incertidumbre multiplicativo % Primer modelo % W2=0.549541*(s/0.01+1)*(s/0.03+1)/(s/0.005+1)/(s/0.2+1); % Segundo modelo W2=0.558*(s/0.015+1)^2/(s/0.008+1)/(s/0.105+1); hold on; bodemag(W2,{0.0001 100}); %Graco la incertidumbre multiplicativa legend('(g1/gn)-1','(g2/gn)-1','(g3/gn)-1','(g4/gn)-1','W2'); title('W2=0.558*(s/0.015+1)^2/(s/0.008+1)/(s/0.105+1)');
E.
ControladorPIDPlantaNominal
clear all; close all; clc; s=tf('s'); % Kp=3; % Ti=100; % Td=0.0; Kp=11.52; Ti=40; Td=10; gn=0.6656/(192*s+1); gc=Kp*(1+Td*s+1/(Ti*s)); sysg=gc*gn; set(sysg,'OutputDelay',20); sysg=ss(sysg); gure(1); bode(sysg,{0.0001 100}); grid on; [Gm,Pm,Wcg,Wcp]=margin(sysg); gure(2); sys=feedback(sysg,1) step(sys); grid on; hold on; g=tf([0.6656],[192 1]); sys=feedback(g*gc,1)
25
step(sys); hold on; set(gn,'OutputDelay',20); gn=ss(gn); sys=feedback(gn,1) step(sys); xlabel('Tiempo'); ylabel('Amplitud'); title('Respuesta al escalon con controlador PID -> Kp=11.52, Ti=40, Td=10');
F.
ControladorPIDPlantaNominal4Plantas
clear all; close all; clc; s=tf('s'); Kp=5; Ti=165; Td=0; gc=Kp*(1+Td*s+1/(Ti*s)); gn=0.6656/(192*s+1); set(gn,'OutputDelay',20); gn=ss(gn); sysn=feedback(gn,1); gcn=gc*gn; syscn=feedback(gcn,1); g1=0.6125/(254*s+1); set(g1,'OutputDelay',32); g1=ss(g1); gc1=gc*g1; sysc1=feedback(gc1,1); g2=0.75/(215*s+1); set(g2,'OutputDelay',25); g2=ss(g2); gc2=gc*g2; sysc2=feedback(gc2,1); g3=0.3/(100*s+1); set(g3,'OutputDelay',20); g3=ss(g3); gc3=gc*g3; sysc3=feedback(gc3,1); g4=0.6/(200*s+1); set(g4,'OutputDelay',34); g4=ss(g4); gc4=gc*g4;
26
sysc4=feedback(gc4,1); gure(1); subplot(2,2,1); hold on; step(sysn); step(syscn); step(sysc1); grid on; xlabel('Tiempo'); ylabel('Amplitud'); title('Respuesta a los sistemas subplot(2,2,2); hold on; step(sysn); step(syscn); step(sysc2); grid on; xlabel('Tiempo'); ylabel('Amplitud'); title('Respuesta a los sistemas subplot(2,2,3); hold on; step(sysn); step(syscn); step(sysc3); grid on; xlabel('Tiempo'); ylabel('Amplitud'); title('Respuesta a los sistemas subplot(2,2,4); hold on; step(sysn); step(syscn); step(sysc4); grid on; xlabel('Tiempo'); ylabel('Amplitud'); title('Respuesta a los sistemas gure(2); subplot(1,1,1); hold on; step(sysn); step(syscn); step(sysc1); step(sysc2); step(sysc3); step(sysc4);
gn y g1');
gn y g2');
gn y g3');
gn y g4');
27
grid on; xlabel('Tiempo'); ylabel('Amplitud'); title('Respuesta a los sistemas gn, g1, g2, g3 y g4'); T1=feedback(gc*g1,1); T2=feedback(gc*g2,1); T3=feedback(gc*g3,1); T4=feedback(gc*g4,1); W2=0.558*(s/0.015+1)^2/(s/0.008+1)/(s/0.105+1); gure(3); subplot(2,2,1); bodemag(W2*T1); xlabel('Frecuencia'); ylabel('Magnitud'); title('Estabilidad Robusta para |W2T1|inf < 1'); grid on; subplot(2,2,2); bodemag(W2*T2); xlabel('Frecuencia'); ylabel('Magnitud'); title('Estabilidad Robusta para |W2T2|inf < 1'); grid on; subplot(2,2,3); bodemag(W2*T3); xlabel('Frecuencia'); ylabel('Magnitud'); title('Estabilidad Robusta para |W2T3|inf < 1'); grid on; subplot(2,2,4); bodemag(W2*T4); xlabel('Frecuencia'); ylabel('Magnitud'); title('Estabilidad Robusta para |W2T4|inf < 1'); grid on;
G.
ControladorPIPlantaNominal.m
clear all; close all; clc; s=tf('s'); % Kp=10.6281; % Ti=63.3333; Kp=18.867; %Kp=16.476
28
%Ti=66.6667; %Ti=inf; Td=0; %gn=0.6656/(192*s+1); gn=0.75/(215*s+1); %gc=Kp*(1+Td*s+1/(Ti*s)); gc=Kp; sysg=gc*gn; set(sysg,'OutputDelay',25); sysg=ss(sysg); gure(1); bode(sysg,{0.0001 100}); grid on; [Gm,Pm,Wcg,Wcp]=margin(sysg); hold on; gure(2); sys=feedback(sysg,1) step(sys); grid on; hold on; g=tf([0.6656],[192 1]); sys=feedback(g*gc,1) step(sys); xlabel('Tiempo'); ylabel('Amplitud'); title('Respuesta al escalon con controlador PID -> Kp=12.9808, Ti=66.6667, Td=0'); hold on; %W2=0.13*(s/0.001+1)*(s+1)/(s/0.125+1)/(s/0.125+1); % W2=0.13*(s/0.001+1)*(s+1)/(s/0.05+1)/(s/0.05+1); % syst=gc*(1+W2)*gn % set(syst,'OutputDelay',20); % syst=ss(syst); % gure(1); % bode(syst,{0.0001 100}); % gure(2); % sys=feedback(syst,1) % step(sys);
H.
ControladorPlantaNominal.m
29
%gn=0.6656*K/(192*s+1); gn=0.6656/(192*s+1); gc=14.1708*(1+9.5*s+1/(38*s)); sysg=gc*gn; set(sysg,'OutputDelay',20); sysg=ss(sysg); % gure(1); % bodemag(gn,{0.0001 100}); % grid on; % gure(1); % bode(gn,{0.0001 100}); gure(1); bode(sysg,{0.0001 100}); grid on; %[Gm,Pm,Wcg,Wcp]=margin(gn); [Gm,Pm,Wcg,Wcp]=margin(sysg); gure(2); %sys=feedback(gn,1) sys=feedback(sysg,1) step(sys); grid on; hold on; % g=tf([0.6656*K],[192 1]); % sys=feedback(g,1) g=tf([0.6656],[192 1]); sys=feedback(g*gc,1) step(sys); xlabel('Tiempo'); ylabel('Amplitud'); title('Respuesta al escalon con controlador PID -> Kp=14.1708, Ti=38, Td=9.5');
I.
LMICircuitoRLCIncertidumbreAcotadaNorma.m
clear all; close all; clc; % Denicin de las matrices y vectores de estado a=[-1 -1;1 0]; b=[1;0]; c=[0 1]; % Denicin de las matrices y vectores de estado incluido el integrador An=[a [0;0];[0 1] 0]; B=[b;0]; C=[0 c]; % Vectores del nuevo espacio de estado
30
B1=[0;0;1]; C1=[0 1 0]; % Vectores de la incertidumbre acotada D=[0.4;0;0]; E=[1 0 0]; % Constante a comparar para la robustez del sistema gamma=2; % Conjunto de LMI's para el control por realimentacin de estados e % incertidumbre acotada en norma setlmis([]); P=lmivar(1,[3,1]); R=lmivar(2,[1,3]); epsilon=lmivar(2,[1,1]); % Dencin de LMI1 lmiterm([1 1 1 P],An,1,'s'); lmiterm([1 1 1 R],-B,1,'s'); lmiterm([1 1 1 epsilon],1,D*D'); lmiterm([1 1 1 0],gamma^(-2)*B1*B1'); lmiterm([1 1 2 P],1,C1'); lmiterm([1 1 3 P],1,E'); lmiterm([1 2 2 0],-1); lmiterm([1 2 3 0],0); lmiterm([1 3 3 epsilon],-1,1); % Dencin de LMI2 lmiterm([-2 1 1 P],1,1); % Dencin de LMI3 lmiterm([-3 1 1 epsilon],1,1); % Fin de la denicin de las LMI's n=getlmis; [tmin,popt]=feasp(n); % Comprobacin de la convergencia de las LMI's disp('El tiempo mnimo es: '); disp(tmin); % Visualizacin de resultados de las matriz denida positiva P y de la % matriz R disp('Matriz denida positiva P: '); P=dec2mat(n,popt,1) %esto saca de la solucin de n de la primera variable disp('Matriz R:'); R=dec2mat(n,popt,2) %esto saca de la solucin de n de la segunda variable disp('Constante epsilon: '); epsilon=dec2mat(n,popt,3) %esto saca de la solucin de n de la tercera variable % Clculo del vector K de realimentacin de estados K=R*inv(P); disp('El vector K de realimentacin de estados es: '); disp(K); % Comprobacin de la estabilidad del sistema y de la matriz denida S polos=eig(An-B*K);
31
dp=eig(P); disp('Los polos del sistema son: '); disp(polos); disp('Comprobacin de la matriz denida positiva P: '); disp(dp); % Matriz de sensibilidad S=ss(An-B*K,B1,C1,0); % Funcin de transferencia de la planta Pn=ss(An,B,C,0); % Comprobacin de robustez del sistema y grca de la seal de salida s=tf('s'); Kt=K(1,1:2); g=ss(a-b*Kt,b,c,0); ga=g*K(1,3)/s; T=feedback(ga,1); gure(1); step(T); xlabel('Tiempo'); ylabel('Amplitud'); title('RESPUESTA DEL SISTEMA CON CONTROLADOR u=-k*x E INCERTIDUMBRE ACOTADA EN NORMA'); grid on; gure(2); bodemag(T); grid on; xlabel('Frecuencia'); ylabel('Amplitud en dB'); title('COMPROBACIN DE ROBUSTEZ DEL SISTEMA RLC'); % Funcin de transferencia del sistema en lazo cerrado disp('La funcin de transferencia del sistema en lazo cerrado es: '); T=tf(T)
J.
Norma2CircuitoRLC01.m
clear all; close all; clc; % Denicin de las matrices y vectores de estado a=[-1 -1;1 0]; b=[1;0]; c=[0 1]; % Constante a comparar para la robustez del sistema gamma=1; % Conjunto de LMI's para el control por realimentacin de estados y la % norma 2 < gamma setlmis([]);
32
P=lmivar(1,[2,1]); R=lmivar(2,[1,2]); % Dencin de LMI1 lmiterm([1 1 1 P],a,1,'s'); lmiterm([1 1 1 R],-b,1,'s'); lmiterm([1 1 1 0],b*b'); % Dencin de LMI2 lmiterm([2 1 1 P],c,c'); lmiterm([2 1 1 0],-gamma^2); % Dencin de LMI3 lmiterm([-3 1 1 P],1,1); % Fin de la denicin de las LMI's n=getlmis; [tmin,popt]=feasp(n); % Comprobacin de la convergencia de las LMI's disp('El tiempo mnimo es: '); disp(tmin); % Visualizacin de resultados de las matriz denida positiva P y de la % matriz R disp('Matriz denida positiva P: '); P=dec2mat(n,popt,1) R=dec2mat(n,popt,2) % Clculo del vector K de realimentacin de estados K=R*inv(P); disp('El vector K de realimentacin de estados es: '); disp(K); % Comprobacin de la estabilidad del sistema y de la matriz denida P polos=eig(a-b*K); dp=eig(P); disp('Los polos del sistema son: '); disp(polos); disp('Comprobacin de la matriz denida positiva P: '); disp(dp); % Grca de la seal de salida gure(1); g=ss(a-b*K,b,c,0); T=feedback(g,1); step(g); grid on; xlabel('Tiempo'); ylabel('Amplitud'); title('RESPUESTA DEL CIRCUITO RLC CON REALIMENTACIN DE ESTADOS'); % Comprobacin de la Norma2 < 1 Pn=ss(a,b,c,0); Lc=gram(Pn,'c'); Lo=gram(Pn,'o'); Norma2Con=c*Lc*c'
33
Norma2Obs=b'*Lo*b hold on; step(Pn) % Funcin de transferencia del sistema en lazo cerrado disp('La funcin de transferencia del sistema en lazo cerrado es: '); T=tf(T)
K.
SintonizacionControladoresPI
clear all; close all; clc; % Clculo de los parmetros del controlador PI para las diferentes plantas % MODELO ZIEGLER-NICHOLS DE PRIMER ORDEN K=[0.6125 0.75 0.3 0.6 0.6656]; Tao=[254 215 100 200 192]; Teta=[32 25 20 34 20]; KP1=0.9.*Tao./(K.*Teta) TI1=3.33.*Teta TetaTao=Teta./Tao % MODELO ZIEGLER-NICHOLS DE GANANCIA LTIMA KCR=[21.405 18.867 28.338 16.476 23.618]; PCR=[120 96 76 128 76] KP2=0.45.*KCR TI2=PCR./1.2
34