integradores (skogestad s-imc) diseño de pid's por imc...
TRANSCRIPT
Diseño de PID's por IMC: modificación para plantas lentas/integradores (Skogestad S-IMC)© 2019, Antonio Sala Piqueras, Universitat Politècnica de València. Todos los derechos reservados.
*Este código ejecutó sin errores en Matlab R2019b
Objetivos: comprender como transformar un regulador IMC para un proceso sencillo (primer o segundo
orden con retardo pequeño) en una estructura tipo PID cuando hay polos lentos o integradores... que,
básicamente, se resume en que hay que dejar de utilizar el paradigma IMC.
Tabla de Contenidos
Revisión teórica IMC-PID para procesos sencillos................................................................................................. 1Modificación Skogestad-IMC, teoría .......................................................................................................................2
Justificación.......................................................................................................................................................... 2Resumen.............................................................................................................................................................. 4
Ejemplo numérico IMC-PID versus S-IMC.............................................................................................................. 4Apéndice: funciones auxiliares................................................................................................................................ 7
Modelo de la planta a utilizar en el ejemplo:
s=tf('s'); tau1=1; k=8; theta=0.05;tildeG=k/(tau1*s+1); Gplus=exp(-theta*s);G=tildeG*Gplus
G = 8 exp(-0.05*s) * ----- s + 1 Continuous-time transfer function.
Revisión teórica IMC-PID para procesos sencillos
Consideremos el proceso: , que podemos factorizar como ,
.
Si selecionamos , el regulador IMC resultante sería:
1
Aproximación del retardo: Para evitar estructuras tipo "predictor de Smith" y mantener la estructura PID, si θes suficientemente pequeño, a bajas frecuencias , con lo que , esto es:
que ya tiene una forma tipo PID serie , con , , , habiendo añadido
un filtro de ruido con suficientemente pequeño para no alterar la dinámica dominante, pero suficientemente
grande para evitar que el ruido de alta frecuencia se transmita al actuador.
Inconvenientes: El IMC no funciona del todo bien cuando se trata de acelerar "mucho" al proceso... ante
referencia GQ=M, pero ante perturbación de entrada (1-M)*G tiene los polos lentos de G, en general.
Modificación Skogestad-IMC, teoría S. Skogestad, en https://doi.org/10.1016/S0959-1524(02)00062-8 , propone usar IMC sólo para acelerar
hasta 4 veces, esto es usar (cancelando el polo ) sólamente si las especificaciones de control
verifican .
Bueno, realmente propone usar IMC hasta que , pero grosso modo dado que θ debe ser pequeño,
significa eso.
En caso contrario, si propone poner el cero de la acción integral en la cuarta parte de los polos
deseados:
JustificaciónSe justifica cambiando la metodología de IMC a otra basada en "lugar de las raíces" (asignación de polos).
Suponiendo , si los polos de bucle cerrado deseados son mucho más rápidos que ,
entonces el polo en puede aproximarse a un integrador... en efecto, a frecuencias ω mayores de , la
planta ; estamos suponiendo, en efecto, que eso ocurre cerca del "ancho de banda de bucle
cerrado objetivo ", si .
Ahora, un controlador PI dado por dará una función de lazo
, con una ecuación característica que, después de quitar denominadores será
.
2
Se puede comprobar entonces que:
ninguna función de bucle cerrado conserva el polo "lento" porque no se ha hecho cancelación.
En esencia, la propuesta ante procesos con integradores es "desintonizar" la respuesta ante referencia,
poniendo sus polos el doble de lentos de lo que diría, para a cambio acelerar la respuesta
ante perturbaciones a la entrada del proceso.
*El bucle cerrado real, sin la aproximación de sería: , que daría
lugar a la ecuación característica , con dos polos entre y .
tauc=tau1/5;L=tau1*(4*tauc*s+1)/4/tauc^2/s/(tau1*s+1);rlocus(L), xlim([-1/tauc-1 0])axis equalhold on, plot(-1/tauc,0,'rx');T=1/(1+L);p1=plot(real(eig(T)),imag(eig(T)),'g*'); hold offlegend(p1,'polos b.c.')text(-1/tau1-0.27,0.13,'-1/tau_1'), text(-1/tauc-0.27,-0.18,'-1/tau_c'), text(-0.25/tauc-0.33,-0.26,'-1/(4tau_c)')
3
Si , entonces tendria dos polos en , como se ha visto antes. En el otro extremo, si ,
quedaría el IMC/cancelación , .
Resumen
Con lo que la regla S-IMC es escoger de modo que:
a) En control "poco agresivo" o proceso rápido se sigue una estrategia IMC pura.
b) En control "agresivo" o proceso cuasi-integrador , se sigue estrategia de asignación de polos/
evitación de cancelación. Para el bucle cerrado tendría un polo cerca de y otro
cerca de , casi cancelado en la respuesta ante referencia... para el sistema tendría un
par de polos cerca de .
Ejemplo numérico IMC-PID versus S-IMCEspecificaciones de control:
tauc=tau1/10; %constante de tiempo deseada (retardo aparte, claro)t_est_objetivo= tauc*4+theta %si gastara IMC con retardo interno (pred. Smith)
t_est_objetivo = 0.4500
Diseño IMC-PID:
KIMC=(tau1*s+1)/(k*(tauc+theta)*s);zpk(KIMC)
ans = 0.83333 (s+1) ------------- s Continuous-time zero/pole/gain model.
Diseño S-IMC:
tauI=min(tau1,4*(tauc+theta));K_SIMC=tau1/k/(tauc+theta) * (tauI*s+1)/(tauI*s);zpk(K_SIMC)
ans = 0.83333 (s+1.667) ----------------- s
4
Continuous-time zero/pole/gain model.
Simulacion y comparativa:
[T1,GS1,KS1]=SimulaBucle(G,KIMC,[],"NoPlot");[T2,GS2,KS2]=SimulaBucle(G,K_SIMC,[],"NoPlot");polosdeseados_bc=1/tauc
polosdeseados_bc = 10
eig(pade(T1,2))
ans = 4×1 -83.2235 -31.0661 -12.3770 -1.0000
eig(pade(T2,2))
ans = 4×1 -82.9025 -32.4194 -10.4448 -1.8999
figurestep(T1,T2), grid on, legend('PID-IMC','S-IMC'), title('Step Ref->y')
step(KS1,KS2), grid on, legend('PID-IMC','S-IMC'), title('Step Ref->u')
5
step(GS1,GS2), grid on, legend('PID-IMC','S-IMC'), title('Step du->y')
6
Apéndice: funciones auxiliares
function [T,GS,KS]=SimulaBucle(G,K,Tiempo,sinplot) arguments G K Tiempo = [] sinplot = "" end T=feedback(G*K,1); GS=feedback(G,K); KS=feedback(K,G); if(sinplot == "NoPlot") return end subplot(1,3,1) step(T,Tiempo), grid on, title('Referencia->salida') subplot(1,3,2) step(KS,Tiempo), grid on, title('Referencia->control') subplot(1,3,3) step(GS,Tiempo), grid on, title('Perturb_u->salida')end
7