Documentos de Académico
Documentos de Profesional
Documentos de Cultura
juanmyy
Regulación Automática
Facultad de Ciencias
Universidad de Cádiz
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Dado un sistema de primer orden con retardo, determinar los valores de la Gp y Gc formados
por los controladores P, PI y PID ya estudiados anteriormente, que necesitaremos saber para
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
conocer el valor de la salida del sistema.
Vamos a estudiar dos tipos de métodos diferentes en MATLAB para resolver la práctica.
Esta es la tabla que aplicaremos en este método para una respuesta de frecuencia, donde:
2π
𝜔𝑐 𝑒𝑠 𝑙𝑎 𝑓𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝑑𝑒 𝑐𝑟𝑢𝑐𝑒, 𝐾𝑐 𝑙𝑎 ú𝑙𝑡𝑖𝑚𝑎 𝑔𝑎𝑛𝑎𝑛𝑐𝑖𝑎, 𝑇𝐶 = 𝑦 𝑎 = 𝑘𝐿/𝑇
ω𝐶
La función de transferencia con la que vamos a trabajar es la siguiente:
5.925
𝐺(𝑠) = ∗ 𝑒 −18.8
88.5𝑠 + 1
Calculamos “a” y determinamos los valores a partir de la función Ziegler, que nos permitirá
agilizar los cálculos.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6673489
G=tf(5.925,[88.5 1],'InputDelay',18.5);
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
k=5,925; %ganancia
T=88.5; %tau
L=18.5; %retardo
N=10; %declaramos que sea 10 para que sea de un orden alto
function [Gc,Kp,Ti,Td,H]=ziegler(key,vars);
Ti=[]; Td=[];
if length(vars)==4,
K=vars(1); L=vars(2);
T=vars(3); N=vars(4); a=K*L/T;
if key==1, Kp=1/a;
elseif key==2, Kp=0.9/a; Ti=3.33*L;
elseif key==3 | key==4
Kp=1.2/a; Ti=2*L; Td=L/2;
end
elseif length(vars)==3,
K=vars(1); Tc=vars(2); N=vars(3);
if key==1,
Kp=0.5*K;
elseif key==2,
Kp=0.4*K; Ti=0.8*Tc;
elseif key==3 | key==4
Kp=0.6*K; Ti=0.5*Tc; Td=0.12*Tc;
end
elseif length(vars)==5,
K=vars(1); Tc=vars(2);
rb=vars(3); N=vars(5);
pb=pi*vars(4)/180; Kp=K*rb*cos(pb);
if key==2,
Ti=-Tc/(2*pi*tan(pb));
elseif key==3 | key==4
Ti=Tc*(1+sin(pb))/(pi*cos(pb));
Td=Ti/4;
end
end
[Gc,H]=writepid(Kp,Ti,Td,N,key);
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6673489
[Gc2,kp2,Ti2]=ziegler(2,[k,L,T,N]);
[Gc3,kp3,Ti3,Td3]=ziegler(3,[k,L,T,N]);
G_cl=feedback(Gc1*G,1);
G_cl2=feedback(Gc2*G,1);
G_cl3=feedback(Gc3*G,1);
step(G_cl,G_cl2,G_cl3)
Los diagramas de bode se aplican para diferentes aspectos, en nuestro caso lo aplicaremos
para generar un vector de frecuencias linealizado en una gráfica con escala logarítmica.
Conocida la función de transferencia del sistema, vamos a obtener los márgenes de ganancia
de nuestra planta, usando los siguientes comandos.
[Kc,pp,wg,wp]=margin(G1); [Kc,wg], Tc=2*pi/wg
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6673489
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Kc corresponde a la última ganancia antes de que nuestro sistema comience a oscilar.
En este tipo de método sustituiremos nuestra entrada escalón por una sinusoidal cuya salida
tendrá la misma frecuencia que la señal de entrada, pero distinta amplitud y pasos (varían).
A continuación, aplicamos Ziegle-Nichols y creamos una figura nueva con los bucles y
ejecutamos.
En comparación con la gráfica generada por el método 1, en esta el pico de la curva es menor y
tarda menos en estabilizarse el sistema.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6673489
Existen dos tipos de tablas, unas para pseudocontrol y otras para regulador (existen
perturbaciones).
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Independientemente de la tabla, necesitare conocer a, K,T y L, donde por semejanza de
triángulos a=KL/T.
G=tf(200000,[1,60,1435,17100,101524,240240])
k=0.8325;
T=0.1;
L=0.3226;
N=10;
G1=tf(0.8325,[0.1,1],'InputDelay',0.326);
[k2,L2,T2]=getfod(G);
G2=tf(k2,[T2,1],'InputDelay',L2);
[k3,L3,T3]=getfod(G,1);
G3=tf(k3,[T3,1],'InputDelay',L3);
step(G,G3);
grid
Al final, lo que queremos llegar a hacer es aproximar nuestra función a una de primer orden
con retardo.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6673489
[Gc,Kp,Ti,Td,H]=chrpid(key,tt,vars)
K=vars(1); L=vars(2);
T=vars(3); N=vars(4);
a=K*L/T; ovshoot=vars(5); Ti=[]; Td=[];
if tt==1, TT=T; else TT=L; tt=2; end
if ovshoot==0,
KK=[0.3,0.35,1.2,0.6, 1, 0.5;
0.3,0.6, 4, 0.95,2.4,0.42];
else,
KK=[0.7,0.6,1, 0.95,1.4,0.47;
0.7,0.7,2.3,1.2, 2, 0.42];
end
switch key
case 1,
Kp=KK(tt,1)/a;
case 2
Kp=KK(tt,2)/a; Ti=KK(tt,3)*TT;
case {3,4}
Kp=KK(tt,4)/a; Ti=KK(tt,5)*TT;
Td=KK(tt,6)*L;
end
[Gc,H]=writepid(Kp,Ti,Td,N,key);
En comparación con la función de Ziegler-Nichols, como existen dos tablas dependiendo del
criterio que vamos a utilizar en esta práctica, tomaremos tt=1 si vamos a usar la primera tabla
y tt distinto de 1 si usamos la segunda.
[Gc3,kp,Ti,Td]=chrpid(3,1,[k3,L3,T3,N,20]);
G_c3=feedback(G,Gc3);
step(G_c3); hold on;
[Gc2,kp2,Ti2,Td2]=chrpid(3,1,[k3,L3,T3,N,0]);
G_c2=feedback(G,Gc2);
step(G_c2)
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6673489
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Si tt es distinto de 1
[Gc3,kp,Ti,Td]=chrpid(3,0,[k3,L3,T3,N,20]);
G_c3=feedback(G,Gc3);
step(G_c3); hold on;
[Gc2,kp2,Ti2,Td2]=chrpid(3,0,[k3,L3,T3,N,0]);
G_c2=feedback(G,Gc2);
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
step(G_c2)
En el caso de que tt sea 1, el sistema se estabilizará antes y tomará valores de mayor amplitud.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6673489