En esta entrada aprenderemos como podemos diseñar un control PID por asignación de polos utilizando la técnica de asignación de polos, muy similar a la entrada pasada del controlador PI, que por cierto si aún no la has visto, te invito a echarle un vistazo dando click aqui. Con esta explicación de PID claro sabrás un método muy efectivo de sintonizar este famoso controlador.
Puede interesarte entender como funciona la acción de control proporcional y la acción de control integral.
Que es un PID
El controlador Proporcional, Integral y Derivativo (PID) es ciertamente el algoritmo de control más tradicional en la industria. En el trabajo de Astrom y Hagglund en el año de 1995 se realizó un análisis de más de 11000 lazos de control en diversas plantas industriales (refinerías, plantas químicas, de papel, etc) y se encontró que cerca del 97% de estos lazos correspondian a un controlador PID.
La popularidad del controlador se debe a la simplicidad de su ajuste en los parámetros para obtener un buen desempeño en el lazo de control. Existen algunas diferencias de implementación de este algorítmo que vamos a discutir a continuación.
Antes de continuar, te cuento que en este sitio web hemos abordado diferentes formas y estrategías de sintonizar el controlador PID, a continuación te dejo algunos enlaces:
Tipos de Control PID
En la literatura existen varias configuraciones de controladores PID que pueden ser:
PID Convencional
A continuación se describe la formula del PID tradicional con el cual es posible ver y entender el funcionamiento de sus tres parcelas:
C(s)=k_c\left(1+\dfrac{1}{\tau_is}+\tau_ds \right)
donde es la ganancia proporcional, es el tiempo integral del controlador y es el tiempo derivativo del controlador.
Control PID Serie
Una de las modificaciónes del controlador, se puede ver a continuación, donde veremos la Función de Transferencia del PID Serie, donde las parcelas se ubican una despues de la otra en el lazo de control:
C(s)=k_c\dfrac{1+\tau_is}{\tau_is}(\tau_ds+1)
Control PID Paralelo
Por último veamos la función de transferencia del PID Paralelo, donde cada parcela es sumada para enviar la acción del control hacia el proceso. La formula PID paralelo es mostrada a continuación:
C(s)=K_p+\dfrac{K_i}{s}+K_ds
Esta variación no debería suponer un problema, ya que los parámetros entre la representación ideal y la representación en paralelo estan relacionados por , y .
PID Convencional
Reescribiendo la ecuación del control PID:
C(s)=\dfrac{k_c\tau_i\tau_ds^2+k_c\tau_is+k_c}{\tau_is}
Sin embargo si observamos la ecuación del control PID convencional, vemos que es una función de transferencia NO propia, quiere decir que el orden del numerador es mayor al orden del denominador, por lo tanto el controlador NO es implementable.
Para solucionar ese problema, se adiciona un filtro pasa-bajos a la ecuación del PID en la acción derivativa al momento de implementar el controlador con el objetivo de volver la ecuación implementable y también para poder filtrar los ruidos en alta frecuencia que son amplificados por el término derivador del controlador. Así el control PID con el filtro pasa bajos viene dado por:
C(s)=k_c\left(1+\dfrac{1}{\tau_is}+\dfrac{\tau_ds}{\alpha\tau_ds+1} \right)
Reescribiendo la ecuación:
C(s)=\dfrac{(\alpha k_c\tau_i\tau_d+k_c\tau_i\tau_d)s^2+(k_c\tau_i+\alpha k_c\tau_d)s+k_c}{\alpha\tau_d\tau_is^2+\tau_is}
donde el parámetro es un parámetro de sintonia relacionado a cuestiones de atenuación de ruido y robustez del controlador.
Además de la ecuación convencional del PID con filtro, tenemos las otras configuraciones incluyendo también el filtro:
Controlador PID Serie
Tomando la función de transferencia del PID Serie:
C(s)=k_c\dfrac{1+\tau_is}{\tau_is}\dfrac{\tau_ds+1}{\alpha\tau_ds+1}
Controlador PID Paralelo
Tomando la formula del PID paralelo:
C(s)=K_p+\dfrac{K_i}{s}+\dfrac{K_ds}{\alpha \tau_ds+1}
Controlador PID por Asignación de Polos
Para este control vamos a suponer que tenemos el modelo matemático (función de transferencia) que representa nuestro proceso real y que esta FT es de segundo orden:
G(s)=\dfrac{K\omega_n^2}{s^2+2\zeta\omega_ns+\omega_n^2}
donde es la ganancia del sistema, es la frecuencia natural del sistema, es el factor de amortigumiento.
Vamos a utilizar la ecuación del controlador PID convencional (Nota: pueden usar cualquier configuración del controlador, cada configuración dará caracteristicas diferentes en la dinámica del sistema).
C(s)=\dfrac{k_c\tau_i\tau_ds^2+k_c\tau_is+k_c}{\tau_is}
Normalizando la ecuación del controlador:
C(s)=\dfrac{k_c\tau_d s^2+k_cs+\dfrac{k_c}{\tau_i}}{s}
y de la misma forma como lo hicimos en el control PI, asignamos ambas funciones de transferencia a variables que representan POLINOMIOS, de la siguiente forma:
G(s)=\dfrac{K\omega_n^2}{s^2+2\zeta\omega_ns+\omega_n^2}=\dfrac{k}{s^2+as+b}=\dfrac{A}{B}
C(s)=\dfrac{k_c\tau_d s^2+k_cs+\dfrac{k_c}{\tau_i}}{s}=\dfrac{d_2s^2+d_1s+d_0}{s}=\dfrac{D}{E}
donde sabemos que la función de transferencia de Lazo cerrado viene dado por:
H(s)=\dfrac{DA}{EB+DA}
Ahora solo nos resta reemplazar los valores de los polinomios:
H(s)=\dfrac{k(d_2s^2+d_1s+d_0)}{s(s^2+as+b)+k(d_2s^2+d_1s+d_0)}
H(s)=\dfrac{k(d_2s^2+d_1s+d_0)}{s^3+(a+kd_2)s^2+(b+kd_1)s+kd_0}
Llegamos a una función de transferencia de tercer orden. Ahora solo nos falta asignar los polos a nuestro controlador para que la función de transferencia se comporte como nosotros queremos. Para eso vamos a usar los mismos criterios de diseño vistos para el control PI, donde definiremos una ecuación característica dominante de Segundo Orden, (De la misma forma vista en el PI)
P_d(s)=s^2+h_1s+h_2
es el polinomio o ecuación característica deseada, que contiene los dos polos dominantes que van a gobernar la dinámica de mi sistema. Notemos que como en tenemos una función de transferencia de TERCER orden, deberemos completar el polinomio deseado con un polo Rápido () (Bien alejado del eje imaginario) el cual será un polos insignificante que no afectaran mucho el comportamiento dado por los dos polos dominantes.
P_d(s)=(s^2+h_1s+h_2)(s+p_1)
Hacemos el producto de los polos y así llegamos a una ecuación caracteristica deseada:
P_d(s)=s^3+\alpha_1s^2+\alpha_2s+\alpha_3
Entonces lo que haremos será tomar las dos ecuaciones características (denominador) de y de e igualarlas, y con esto podremos determinar cuanto será nuestra ganancia , nuestro tiempo integral , nuestro tiempo derivativo , que son los parametros del Control PID por Asignación de Polos.
s^3+(a+kd_2)s^2+(b+kd_1)s+kd_0=s^3+\alpha_1s^2+\alpha_2s+\alpha_3
igualando coeficientes:
(1)
(2)
(3)
Reemplazando valores del controlador:
(4)
(5)
(6)
Resolviendo
(7)
(8)
(9)
Control PID Ejemplos
Utilizando el proceso de los dos tanques en cascada visto en una entrada del blog, (click aqui para ver el modelado de los tanques en cascada), donde la Función de transferencia del nivel del tanque 2 es:
G(s)=\dfrac{0.0006}{s^2 + 0.03271 s + 0.0002297}=\dfrac{A}{B}
Como condiciones de Diseño vamos a establecer que queremos un pico máximo del 10% y un tiempo de estabilización 75% mas rápido que la dinámica en lazo abierto.
Si observamos la dinamica de la función de transferencia del Tanque, podemos saber cual es la constante de tiempo:
\tau=100
Por lo tanto el tiempo de estabilización son cuatro veces la costante de tiempo, que serian 400s. Como deseamos que sea 75% mas rapido, vamos a diseñar nuestro controlador para que llegue al estacionario en 300 segundos.
Tss=300
Mp=10\%
El factor de Amortiguamiento viene dado por:
M_p=100e^{\dfrac{-\pi \zeta}{\sqrt{1-\zeta^2}}}
\zeta=\sqrt{\dfrac{ln\left(\dfrac{M_p}{100}\right)^2}{\pi^2+ln\left(\dfrac{M_p}{100}\right)^2}}
\zeta=0.5912
Estableciendo la tolerancia permitida en el estacionario como , podremos determinar la frecuencia natural del sistema:
\omega_n=\dfrac{3}{\zeta Tss}=0.0173
Con estos datos podemos montar nuestra función de transferencia de lazo cerrado deseada, que tiene los polos ubicados justo donde queremos para que el sistema tenga el comportamiento deseado.
G_d(s)=\dfrac{K\omega_n^2}{s^2+2\zeta\omega_ns+\omega_n^2}
G_d(s)=\dfrac{0.0003}{s^2+0.0204s+0.0003}
Ecuación caracteristica:
P_d^*=s^2+0.0204s+0.0003
con los siguientes polos complejos conjugados:
p_{1,2}=-0.0102 \pm 0.0139i
Vamos a escoger un polo no dominante 10 veces más alejado de los polos complejos conjugados
p_3=10Real(-0.0102 \pm 0.0139i)=-0.102
La ecuación característica deseada de tercer orden viene dado por:
P_d=(s^2+0.0204s+0.0003)(s+0.102)
P_d=(s^3+0.1225s^2+0.0024s+3.0438\times10^{-5})
Igualando Coeficientes:
s^3+(a+kd_2)s^2+(b+kd_1)s+kd_0=(s^3+0.1225s^2+0.0024s+3.0438\times10^{-5})
tenemos que los parámetros del control PID por asignación de polos resolviendo el sistema de ecuaciones con MATLAB:
k_c=\dfrac{\alpha_2-b}{k}=\dfrac{0.0024-2.297\times10^{-4}}{6\times10^{-4}}=3.5875
\tau_i=\dfrac{kk_c}{\alpha_3}=\dfrac{(3.5875)(6\times10^{-4})}{3.0438\times10^{-5}}=70.7187
\tau_d=\dfrac{\alpha_1-a}{kk_c}=\dfrac{0.1225-0.0327}{(3.5875)(6\times10^{-4})}=41.7117
Para bajar los archivos de Simulink puedes hacerlo dando CLICK AQUI
% Control PID Por Asignación de Polos % Sergio Andres Castaño Giraldo % Universidade Federal de Rio de Janeiro % Rio de Janeiro - 2017 % https://controlautomaticoeducacion.com % ------------------------------------------------------ clc clear all close all %% Parametros del Proceso del Tanque de Nivel %Parametros k1=0.04; k2=0.03; k3=0.055; a1=0.0:0.1:1; %Abertura de la Valvula entrada a2=0:0.1:1; %Abertura de la Valvula salida A1=1; A2=1.5; %Abertura de las Valvulas para el punto de equilibrio a1s=0.5; a2s=0.45; %Altura en los tanques en el punto de equilibrio h1s=((k1*a1s)/k2)^2; h2s=((k2^2*h1s)/(k3*a2s)^2); Eq1=[h1s h2s]; %% Diseño del Controlador PID %Funcion de transferencia del proceso % C=tf(Kc*[Ti 1],[Ti 0]); P=tf(0.0006,[1 0.03271 0.0002297]); %Obtiene el numerador y denominador de la FT [n,d]=tfdata(P,'v'); %Nombro los terminos de la FT k=n(3); a=d(2); b=d(3); % Especificaciones de Diseño Mp=10; %Maximo Pico ep=sqrt(((log(Mp/100))^2)/(pi^2+((log(Mp/100))^2))); %Fator de amortecimento tau=1/(abs(max(roots(d)))); %Toma o valor do polo dominante Tss=(tau*4)*0.75; Wn=3/(ep*Tss); %Frequência Natural Sd=[-ep*Wn+1i*Wn*sqrt(1-ep^2), -ep*Wn-1i*Wn*sqrt(1-ep^2)]; %Alocação de Polos p3=real(Sd(1))*10; %Polo nao dominante 20 veces longe do dominante Sd1=[Sd p3]; Pds=poly(Sd1); disP = 10; %Distancia del polo %Evita ganancias negativas (usar si la ganancia de la planta es positiva) if(dcgain(P)>0) while(Pds(3)-b < 0 || Pds(4)<0 || Pds(2)-a<0) disP = disP+1; p3=real(Sd(1))*disP; %Polo nao dominante 20 veces longe do dominante Sd1=[Sd p3]; Pds=poly(Sd1); end disp('Distancia del polo insignificante:') disP end alpha=0.01; %Calculo del Controlador Kc=(Pds(3)-b)/k; ti=(k*Kc)/Pds(4); td=(Pds(2)-a)/(k*Kc); %Parametros del PID con Filtro en el termino Derivativo d2=alpha*Kc*ti*td+Kc*ti*td; d1=Kc*ti+alpha*Kc*td; d0=Kc; %Controlador PID C=tf([d2 d1 d0],[alpha*ti*td ti 0]); N=1/(td*alpha); %Simulación con el Modelo en lazo cerrado H=minreal((C*P)/(1+C*P)); step(H); figure pzmap(H);
Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:
👉 Invitar a Sergio a un Café ☕️
Que esten muy bien, nos vemos en la siguiente entrada.
Mi nombre es Sergio Andres Castaño Giraldo, y en este sitio web voy a compartir una de las cosas que mas me gusta en la vida y es sobre la Ingeniería de Control y Automatización. El sitio web estará en constante crecimiento, voy a ir publicando material sobre el asunto desde temas básicos hasta temas un poco más complejos. Suscríbete al sitio web, dale me gusta a la página en Facebook y únete al canal de youtube. Espero de corazón que la información que comparto en este sitio, te pueda ser de utilidad. Y nuevamente te doy las gracias y la bienvenida a control automático educación.