En este capitulo vamos a aprender a enmascarar un controlador RST (el cual obedece a la filosofia de un controlador por asignación de polos) en los comunes y convencionales controladores PID.
Antes de empezar, te invito a que Veas nuestro 👉 Curso de Control de Procesos 👈 donde hemos explicado en detalle el funcionamiento del controlador RST y que te servirá para entender esta entrada.
Control RST dentro de un Control PID
Son muchas las personas que piensan que el estudio del control es innecesario principalmente porque al momento de implementar un controlador en una industria, siempre en el 95% de los casos vamos a encontrarnos con un controlador PID.
En cierta medida esto puede ser cierto, debido a que el controlador PID ha sido utilizado por decadas dando excelentes resultados en el control de procesos.
En esta tercera entrega de control de procesos, vamos a ver aplicada la teoria de control, donde vamos a hacer todo el analisis y el calculo de un controlador RST Incremental y los resultados obtenidos (Polinomio R,S y T) o controlador Reference Signal Tracking, vamos a ingresarlos en un control PID. En otras palabras vamos a enmascarar nuestro RST en esos controladores PID comunes que vemos en todas las industrias o en los PLCs que programamos.
Inicialmente vamos a ver la ecuación que representa un controlador PID ideal.
u(t)=kc\left [ e(t)+\frac{1}{ti}\int e(t)dt+td\frac{\mathrm{d} e(t)}{\mathrm{d} t} \right ]
donde:
es la acción de control
es la ganancia proporcional (P)
es el tiempo integral
es el tiempo derivativo
es el error del sistema. (Referencia – Salida del sistema)
En este punto te podría interesar estos otros articulos:
Predictor de Smith
Método Cohen y Coon de Sintonía para Controles PID
Como Hacer un Control PID de Temperatura con Arduino
Reescribiendo la ecuación anterior en el dominio discreto por medio de la aproximación rectangular, se tiene que un PID puede representarse asi:
u(k)=u(k-1)+q_0e(k)+q_1e(k-1)+q_2e(k-2)
donde:
q_0=kc\left [ 1+\dfrac{t_s}{2t_i}+\dfrac{t_d}{t_s} \right ]
q_1=-k_c\left [ 1-\dfrac{t_s}{2t_i}+\dfrac{2t_d}{t_s} \right ]
q_2=\dfrac{k_ct_d}{t_s}
es el tiempo de muestreo.
Llevando la ecuación discreta al dominio de Z tenemos
\Delta u(t)=(q_0+q_1z^{-1}+q_2z^{-2})e(t)
\rightarrow \Delta u(t)=\left [ q_0+q_1z^{-1}+q_2z^{-2} \right ]\left [ y_i(t)-y(t) \right ]
Comparando la ley de control PID anterior con la ley de control RST la cual se escribe a continuación.
R(z^{-1})\Delta u(t)=T(z^-1)y_i(t)-S(z^{-1})y(t)
se tiene lo siguiente
R(z^{-1})=1
S(z^{-1})=T(z^-1)=q_0+q_1z^{-1}+q_2z^{-2}
De esta manera, hemos enmascarado el controlador RST en un PID, asi de ahora en adelante podríamos hacer todo el diseño de un controlador por asignación de polos RST incremental y ingresar las ganancias en un controlador PID convencional que encontramos en las fabricas.
Pero para que quede mas claro, y no quede todo en ecuaciones, vamos a mirar un ejemplo de como exactamente funciona este negocio.
Ejemplo – Diseño de un control RST en un PID
Vamos a tomar los datos del ejemplo anterior, del control RST Incremental que hicimos.
Del diagrama anterior tenemos las dos ecuaciones mas importantes que necesitamos para el diseño del algoritmo. Que son la ley de control y la ecuación de salida del sistema.
Ley de control RST
R(z^{-1})\Delta u(t)=T(z^-1)y_i(t)-S(z^{-1})y(t)
Para un sistema de segundo orden seria:
u(k)=TY_i(k)-S_0y(k)-S_1y(k-1)-S_2y(k-2)-(R_1-1)u(k-1)-R_1u(k-2)
Salida del sistema
A(z^{-1})y(t)=B(z^{-1})u(t)+d0(t)
para un sistema de segundo orden
y(k)=b_0u(k-1)+b_1u(k-2)-a_1y(k-1)-a_2y(k-2)+d0(k)
Listo con estas dos ecuaciones, vamos a tomar los valores que nos dio el ejemplo anterior, es decir los valores de los polinomios R,S,T
R(z^{-1})=1+0.3176z^{-1}
S(z^{-1})=10.5781-13.3579z^{-1}+4.2884z^{-2}
T(z^{-1})=1.5085
Procedemos entonces a enmascarar nuestro controlador RST en un PID
R(z^{-1})=1
q_0=S_0=10.5781
q_1=S_1=-13.3579
q_2=S_2=4.2884
Ahora si evaluamos el polinomio S cuando las Z valen 1 (Teorema de valor final) vamos a ver que se cumple que S=T
S(1)=10.5781-13.3579+4.2884=1.5085=T(1)
Ya con esto tenemos nuestros parámetros para ingresarlos en un PID discreto. Para hacerlo en un PID continuo basta con reemplazar las q0,q1 y q2 en las ecuaciones de aproximación rectangular y despejar kc, ti y td. (homework)
A continuación esta el codigo donde se compara el algoritmo RST y el algoritmo del PID sintonizado con los parámetros del RST
clc; clear all; close all; %% Condiciones Iniciales nit=400; %Numero de interacciones umin=0; %Señal de saturacion minima del controlador umax=4.9; %Señal de saturacion maxima del controlador u(1:10)=0; %Inicializo las 10 primeras señales de control en zero y(1:10)=0; %Inicializo las 10 primeras señales de salida en zero error(1:10)=0; %Inicializo las 10 primeras señales del error en zero % Referencia o Set-Point r(1:100) = 1; r(101:200) = 4; r(201:300) = 3; r(301:nit) = 3; %% Datos de la planta o del sistema ts=0.1; %Tiempo de muestreo num=1; %Numerador Continuo den=[0.1 1.1 1]; %Denominador Continuo gp=tf(num,den); %Funcion de transferencia ftz=c2d(gp,ts); %Discretizacion de la planta [B,A]=tfdata(ftz,'v'); %Divide Numerador em B e denominador em A %% Diseño del Controlador por Asignacion de polos %Datos de diseño, segun se desee el funcionamiento del control Tss=2; %Tiempo de establecimiento deseado en lazo cerrado ep=0.6; %Coeficiente de amortiguacion %Calculos wn=4/(ep*Tss); %Calculo de la frecuencia natural %Determina los Polos conjugados que se van a asignar al sistema za=exp(-ep*wn*ts); th=57.3*wn*ts*sqrt(1-ep^2); polos=za*[cosd(th)+i*sind(th),cosd(th)-i*sind(th)]; % Polinomio deseado, com polo insignificante igual a zero Am=poly([polos 0 0]); %Delata A. Multiplica el denominador (A) por integrador (Z-1) DA=conv(A,[1 -1]); %Resuelve las ecuaciones de forma matricial %Matriz M con los coeficientes de R y S M=[1 B(2) 0 0; DA(2) B(3) B(2) 0; DA(3) 0 B(3) B(2);DA(4) 0 0 B(3)]; %Matriz q coeficientes de la asignacion de polos (Am) q=[Am(2)-DA(2); Am(3)-DA(3);Am(4)-DA(4);Am(5)]; %Matriz X, resultado de la operacion. Inversa de M por q X=inv(M)*q; R=[1 X(1)]; %Polinomio R S=X(2:end)'; %Polinomio S T=sum(S); %Polinomio T %Ingresa la perturbacion en el instante 300 d0(1:300)=0; d0(301:nit)=0.1; %% Lazo cerrado de control RST for k = 5:nit %Salida de la Planta de Segundo orden y(k)=B(2)*u(k-1)+B(3)*u(k-2)-A(2)*y(k-1)-A(3)*y(k-2)+d0(k); %Ley de Control RST u(k)=T*r(k)-S(1)*y(k)-S(2)*y(k-1)-S(3)*y(k-2)-(R(2)-1)*u(k-1)+R(2)*u(k-2); % Saturacion del sistema if u(k) >= umax u(k) = umax; elseif u(k) <= umin u(k) = umin; end end t = 0:ts:(nit-1)*ts; figure subplot(2,1,1),plot(t,r,'--k',t,y,'-r','Linewidth',2.5) title('ALGORITMO DE CONTROL RST'); xlabel('Tempo (s)'); ylabel('Velocidade'); legend('y_r','y','Location','SouthEast') grid on; hold subplot(2,1,2),plot(t,u,'--b','Linewidth',3) xlabel('Tempo (s)'); ylabel('Controle (volts)'); legend('u') grid on; %% Implementacion del control RST en un control convencional PID R=1; q0=S(1); %q0 es igual a S0 q1=S(2); %q1 es igual a S1 q2=S(3); %q2 es igual a S2 %Lazo cerrado de control PID for k = 5:nit %Salida de la Planta de Segundo orden y(k)=B(2)*u(k-1)+B(3)*u(k-2)-A(2)*y(k-1)-A(3)*y(k-2)+d0(k); %Señal de Error (Referencia menos salida del sistema) error(k) = r(k) - y(k); %Ley de Control PID u(k) = u(k-1) + q0*error(k) + q1*error(k-1) + q2*error(k-2); % Saturacion del sistema if u(k) >= umax u(k) = umax; elseif u(k) <= umin u(k) = umin; end end t = 0:ts:(nit-1)*ts; figure subplot(2,1,1),plot(t,r,'--k',t,y,'-r','Linewidth',2.5) title('ALGORITMO DE CONTROL RST IMPLEMENTADO EN UN PID'); xlabel('Tempo (s)'); ylabel('Velocidade'); legend('y_r','y','Location','SouthEast') grid on; hold subplot(2,1,2),plot(t,u,'--b','Linewidth',3) xlabel('Tempo (s)'); ylabel('Controle (volts)'); legend('u') grid on;
A continuación se muestra la respuesta del sistema, Tanto del control RST como del control PID. Se evidencia una respuesta muy similar. La diferencia radica principalmente en la acción de control del PID que es un poco mas agresiva que la acción de control del RST.
En términos generales se muestra como es posible hacer nuestros diseños de controladores y enmascararlos en los controladores convencionales PID que vemos en todas las industrias.
Ayuda compartiendo la información de la pagina en redes sociales, dale un like, twittea o un plus (+) en google, para que mas personas puedan acceder a la información del sitio web.
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.