En esta entrada, vamos a aprender como sintonizar un controlador PID por medio de la síntesis de Dahlin.
Primero observemos el diagrama de bloques de lazo cerrado del sistema a controlar.
En este caso, la ecuación que representa la malla cerrada del sistema (Salida / Entrada) es la siguiente:
y(t)=\frac{G_c(z)G_p(z)}{1+G_c(z)G_p(z)}y_i(t)\ [1]
La ecuación (1) puede ser reescrita de la siguiente forma:
G_c(z)=\frac{u(t)}{e(t)}=\dfrac{1}{G_p(z)}\dfrac{\dfrac{y(t)}{y_i(t)}}{1-\dfrac{y(t)}{y_i(t)}}\ [2]
La ecuación (2) es una representación general de un controlador en un lazo convencional observado en el diagrama de bloques.
Controlador Dahlin
El controlador Dahlin es un algoritmo que asume que el sistema alcanza el Set-Point en una trayectoria equivalente a un sistema de primer orden con atraso
\frac{y(t)}{y_i(t)}=\frac{(1-\alpha )z^{-d-1}}{1-\alpha z^{-1}}\ [3]
donde:
=Parametro de Rapidez
=Retardo del Algoritmo
\alpha=exp\left(\frac{-T_s}{\tau_{LC}}\right)\therefore d=\frac{\Theta }{T_s}
Donde:
=Tiempo de Muestreo, = Constante de tiempo en lazo cerrado deseado
= Retardo de la planta
Aplicando la ecuación (3) en (2):
G_c(z)=\frac{u(t)}{e(t)}=\frac{1}{G_p(z)}\frac{(1-\alpha )z^{-d-1}}{1-\alpha z^{-1}-(1-\alpha )z^{-d-1}}
Si tenemos una planta de segundo orden la cual queremos controlar, dicha planta va a tener el siguiente modelo matemático.
\frac{y(t)}{u(t)}=\frac{z^{-d-1}(b_0+b_1z^{-1}+b_2z^{-2})}{1+a_1z^{-1}+a_2z^{-2}}\ [5]
Aplicando (5) en (4)
Gc(z)=\frac{u(t)}{e(t)}=\frac{1+a_1z^{-1}+a_2z^{-2}}{(b_0+b_1z^{-1}+b_2z^{-2})}\frac{(1-\alpha )}{1-\alpha z^{-1}-(1-\alpha )z^{-d-1}}\ [6]
Como deseamos sintonizar un PID, tomamos la estructura de un PID ideal la cual se representa con la siguiente ecuación
G_c(z)=K_c\left [ \dfrac{(1+\dfrac{T_s}{T_i}+\dfrac{T_d}{T_s})-(1+2\dfrac{T_d}{T_s})z^{-1}+\dfrac{T_d}{T_s}z^{-2}}{1-z^{-1}} \right ]\ [7]
Para la Existencia del PID Dahlin se tiene que establecer las siguientes relaciones:
(b_0+b_1z^{-1}+b_2z^{-2})\approx (b_0+b_1+b_2)
Haciendo uso de dicha relación puedo escribir (6) asi:
Gc(z)=\frac{u(t)}{e(t)}=\frac{(1-\alpha )}{(b_0+b_1+b_2)}\frac{1+a_1z^{-1}+a_2z^{-2}}{1-\alpha z^{-1}-(1-\alpha )z^{-d-1}}\ [8]
1-\alpha z^{-1}-(1-\alpha )z^{-d-1}=(1-z^{-1})\left [ 1+(1-\alpha z^{-1}+\cdots +(1-\alpha )z^{-d}) \right ]\\\approx (1-z^{-1})(1+d(1-\alpha ))
En la expreción anterior se evalua con z=1. El controlador Dahlin tiene una acción integral y las salidas pasadas se utilizan para predicción. De esta manera se obtiene el siguiente controlador:
G_c(z)=\frac{u(t)}{e(t)}=\frac{(1-\alpha )}{(b_0+b_1+b_2)(1+d(1-\alpha) )}\frac{1+a_1z^{-1}+a_2z^{-2}}{1-z^{-1}}
Comparando la Ecuación (7) con la ecuación (9)
G_c(z)=\bar{K}\dfrac{1+a_1z^{-1}+a_2z^{-2}}{1-z^{-1}}
\bar{K}=\frac{(1-\alpha )}{(b_0+b_1+b_2)(1+d(1-\alpha) )}
Entonces las ganancias del controlador PID son:
\bar{K}=K_c(1+\frac{T_s}{T_i}+\frac{T_d}{T_s})
\bar{K}a_1=-K_c\left(1+2\frac{T_d}{T_s}\right)
\bar{K}a_2=K_c\frac{T_d}{T_s}
Donde los parametros del controlador finalmente vienen dados por:
K_c=-\bar{K}(a_1+2a_2)
T_i=\frac{-(a_1+2a_2)T_s}{1+a_1+a_2}
T_d=\frac{-a_2T_s}{a_1+2a_2}
Implementación (Dahlin Controller) Matlab
Se tiene un intercambiador de calor para calentar un fluido X, el proceso puede ser representado perfectamente por la siguiente función de transferencia de cuarto orden:
G_p(s)=\frac{1}{(0.5s+1)(s+1)(5s+1)(10s+1)}
Un ingeniero, levanta un modelo de segundo orden por medio de una identificación off-line obteniendo el siguiente modelo
G_m(s)=\frac{e^{-1.92s}}{44.08s^2+14.88s+1}
Sintonizar el controlador PID utilizando la Sintesis Dahlin
%% Controle PID Dalhin % Tecnicas de Controle de Processos % Sergio Andres Castaño Giraldo clc clear all close all %% Simulacion % Condições iniciais clear all; clc; close all; nit = 160; umin = 0; umax = 4.9; u(1:10) = 0; erro(1:10) = 0; y(1:10) = 0; % Referência r(1:40) = 1; r(41:80) = 3; r(81:120) = 2; r(120:nit) = 2; do(1:119)= 0;do(120:nit) = 0.1; %% Planta T=3.5; %Tempo de Muestreo gps=tf([1],conv(conv([0.5 1],[1 1]),conv([5 1],[10 1]))) ftz=c2d(gps,T); %Planta Discreta [Bp,Ap]=tfdata(ftz,'v'); %Divide Numerador em B e denominador em A gpz=filt(Bp,Ap,T); %Funcion de transferencia discreta %% MODELO num=1; den=[44.08 14.88 1]; gm=tf(num,den); gm.outputdelay=1.92; ftz=c2d(gm,T) %Planta Discreta [B,A]=tfdata(ftz,'v'); %Divide Numerador em B e denominador em A nb=length(B); %Orden de numerador na=length(A)-1; %Orden de Denominador nr=nb-1; %Orden de polinomio R ns=na; %Orden de Polinomio S filt(B,A,T) %% Calculo de polo dat=stepinfo((ftz)); % Respuesta del sistema en malla abierta tau_ma=(dat.SettlingTime)/4; % constante de tiempo en malla abierta Tmf=tau_ma*0.7; % constante de tiempo en malla cerrada "Deseada" p1=exp(-T/Tmf); d=floor(1.92/T); %Atraso d=1; %% Calculo PID Dahlin klinha=(1-p1)/(sum(B)*(1+d*(1-p1))); kc=-klinha*(A(2)+2*A(3)); ti=-((A(2)+2*A(3))*T)/(1+(A(2)+A(3))); td=-(A(3)*T)/(A(2)+2*A(3)); %% Calculo do controle PID digital Dahlin q0=kc*(1+T/ti+td/T); q1=-kc*(1+(2*td)/T); q2=(kc*td)/T; for k = 5:nit %Planta de 4ta orden y(k)=Bp(2)*u(k-1)+Bp(3)*u(k-2)+Bp(4)*u(k-3)+Bp(5)*u(k-4)-Ap(2)*y(k-1)-Ap(3)*y(k-2)-Ap(4)*y(k-3)-Ap(5)*y(k-4)+do(k); %error erro(k)=r(k)-y(k); u(k)=u(k-1)+q0*erro(k)+q1*erro(k-1)+q2*erro(k-2); % Saturacion if u(k) >= umax u(k) = umax; elseif u(k) <= umin u(k) = umin; end end t = 0:T:(nit-1)*T; figure subplot(2,1,1),plot(t,r,'--k',t,y,'-r','Linewidth',2) xlabel('Tiempo (s)'); ylabel('Salida'); legend('y_r','y','Location','SouthEast') grid on; hold subplot(2,1,2),plot(t,u,'b','Linewidth',2) xlabel('Tiempo (s)'); ylabel('Control'); legend('u') grid on;
La respuesta del control se muestra a continuación:
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.