En esta entrada veremos una modificación de la estructura del Predictor de Smith que vimos en la entrada pasada (Click aqui para ver la clase del Predictor de Smith), dicha modificación se conoce como el Predictor de Smith Filtrado (PSF) que tiene como principal caracteristica corregir las principales limitaciones del Predictor de Smith Original. Las cuales son acelerar la dinámica de rechazo de perturbación y controlar procesos integradores y inestables.
Preditor de Smith Filtrado
La estructura del predictor de Smith filtrado es representada asi:
Sabemos que las relaciones de entrada y salida vienen dadas por las siguientes ecuaciones, las cuales son prácticamente las mismas vistas en la entrada del Predictor de Smith:
Vemos que la dinámica del Filtro Fr(s) solo aparece en las respuestas de las perturbaciones q(t) y n(t).
Si tomamos la respuesta frente a la perturbación de carga (q(t)), notaremos la mejora que el filtro de predicción Fr(s) introduce en la estructura del PSF:
Predictor de Smith Filtrado en un Invernadero
El siguiente trabajo muestra la aplicación del predictor de Smith filtrado multivariable en un invernadero.
Ejemplo PSF de primer orden
Si tenemos el siguiente sistema:
y Tenemos un controlador primario PI
Si diseñamos un control rápido PI por cancelación de polos osea que
donde
dividimos el filtro en
El objetivo es conseguir que el polinomio
Para cumplir la condición 1 debo imponer que:
Para cumplir la condición 2 debo imponer que:
Como voy a matar una dinámica de primer orden, diseño un filtro de primer orden:
este numerador es usado para cumplir la condición 1.
el denominador del filtro es usado para determinar el tiempo de respuesta de rechazo de perturbación.
Reemplazando
Así, de esta ecuación la única incógnita es
Determinando el valor de
Daría un polinomio
note como se cancelan los polos lentos del modelo:
Puede notarse que ahora la dinámica de rechazo de perturbación está dado por el dominador del filtro y por los polos de lazo cerrado.
Sintonía del Controlador MPC (MPC Tuning)
Retardo o Tiempo Muerto de un Sistema
Control NMPC – Matlab – Simulink
Segunda opción en Calculo del Filtro
Una segunda opción seria diseñar un filtro de segundo orden que además de cancelar los polos lentos, también cancele la dinámica de lazo cerrado. De esa forma se escogería diseñar un filtro con la siguiente forma:
Diseñando este filtro mi respuesta de rechazo de perturbación va a tener una velocidad diferente a la velocidad del seguimiento de referencia.
Aqui se aplica el mismo concepto, debo hacer con que el numerador
así, se tiene que:
Sistemas Integradores o Inestables
Para un caso integrador o mismo para un caso inestable, para efectos de analisis se puede utilizar la misma estructura del PSF, pero para efectos de implementación práctica, no se puede utilizar la misma estructura del PSF. Debido a que esa estructura es internamente inestable. Ya que si observamos la dinámica de rechazo de perturbaciones, veremos que si la planta (
Para solucionar este problema, basta con tener una estructura equivalente al PSF, la cual la conoceremos como estructura estable:
Donde
Para que la nueva estructura sea internamente estable, hay que asegurarse de que tanto el filtro
Ejemplo 1 (Caso Estable Continuo)
Comencemos con un proceso estable con la siguiente característica (Mismo ejemplo visto en la entrada del predictor de Smith):
El controlador PI es hecho colocando el parámetro Ti igual al tao de la planta, osea Ti=6. Determinamos entonces que deseamos que la respuesta en lazo cerrado sea un 75% más rápido que la respuesta en lazo abierto asi
La respuesta en lazo cerrado viene dado por:
Sabemos que la dinámica de rechazo de perturbación viene dada por:
reemplazamos los valores que conocemos. Ya tenemos el lazo cerrado y tenemos la dinamica de la planta en lazo abierto:
Ahora diseñamos el filtro cumpliendo las dos condiciones necesarias. Para este caso diseñamos un filtro de segundo orden, para cancelar la dinámica de lazo cerrado.
Ya tenemos el valor de
De esa forma, el filtro del predictor de Smith, viene dado por:
Podemos notar como el rechazo de perturbaciones es acelerado gracias a la inclusión del filtro, el cual consigue cancelar la dinámica de la planta en lazo abierto:
Respuesta del Sistema:
En la grafica de la salida se compara el comportamiento del Predictor de Smith y el Predictor de Smith Filtrado, puede verse como el PSF acelera la dinámica de rechazo de perturbación. El código de implementación está abajo al final del post, para que lo puedas copiar e implementar en tu propio computador.
Ejemplo caso Integrador (igual para caso Inestable)
Para entender mejor el concepto de sintonia del filtro, se presentará a continuación un ejemplo. Se asume un proceso integrador, propuesto por el siguiente modelo nominal :
Se discretiza el proceso con un retenedor de orden cero (ZOH) y se obtiene el siguiente sistema:
Dividimos el modelo del proceso en terminos estables y terminos inestables como:
Parte estable=
Parte inestable=
Numerador=
desmembrabdo el bloque
El ingeniero tiene la libertad de escoger arbitrariamente el denominador del filtro con raíces dentro del circulo unitario con un orden igual o mayor al numero de polos NO deseados del sistema. En este ejemplo dado que tenemos tan solo «1» polo indeseado en el origen, vamos a escoger el filtro de orden uno. Para eso seleccionamos el polo del filtro igual a o,9. Así, todos los polos de lazo abierto del modelo del proceso que esten fuera del circulo de radio 0,9 serán cancelados por el filtro predictor garantizando con esto la eliminación del polo en el origen.
El polo del filtro entonces es seleccionado como
La idea es que la parte del numerador,
Reescriviendo la ecuación en terminos de potências positivas, se tiene que
El polinomio
Igualando termino a termino y solucionando el sistema de ecuaciones, se llega a que
Así el bloque
Para este proceso se sintoniza un controlador PI con los siguientes parametros:
Esquema en Simulink:
Resultado:
Espero esta información te haya sido de utilidad, no olvides compartir para de esa manera permitir que más personas se beneficien de esta información.
Códigos en MATLAB:
A continuación están todos los codigos del predictor de Smith Filtrado implementados en MATLAB y SIMULINK para que tu mismo los puedas reproducir en tu casa y aprendas una forma de hacerlo. Para tener acceso a los códigos solo debes compartir el contenido de este post, de esa forma ayudas a que otras personas conozcan sobre esta información y además ayudas a que este sitio web continue aportando contenido gratuito y de calidad. Gracias!
Código para el Caso Estable:
% Predictor de Smith
% Sergio Andres Castaño Giraldo
% http:\\controlautomaticoeducacion.com
%_________________________________________________________________________
clc
clear all
close all
Ts=0.4; %Tiempo de Muestreo
FS=18;
%% Proceso Real P(s)
nP=0.12; %Numerador de la Planta
dP=[6 1]; %Denominador de la Planta
P=tf(nP,dP); %Processo real P(s)
L=3.0; %Retardo de P(s)
P.iodelay=L; %Aplico el retardo en P(s)
Pd=c2d(P,Ts); %Discretizo el Proceso con retendedor de Orden Cero P(z)
[B,A]=tfdata(Pd,'v'); %Divido el proceso discreto en numerador y denominador
d=Pd.iodelay; %Obtengo el retardo en discreto
%% Modelo Nominal Pn(s)
nPn=0.12; %Numerador del Proceso Nominal
dPn=[6 1]; %Denominador del Proceso Nominal
Gn=tf(nP,dP); %Modelo Nominal sin retardo Gn(s)
Ln=3.0; %Retardo de Pn(s)
Pn=Gn;
Pn.iodelay=Ln; %Aplico el retardo en P(s)
Pdn=c2d(Pn,Ts); %Discretizo el Proceso nominal con retendedor de Orden Cero Pn(z)
Gnd=Pdn;
Gnd.iodelay=0; %Modelo Nominal sin retardo Gn(z)
[Bgn,Agn]=tfdata(Gnd,'v'); %Divido el modelo discreto en numerador y denominador
[Bn,An]=tfdata(Pd,'v'); %Divido el proceso discreto en numerador y denominador
dn=Pdn.iodelay; %Obtengo el retardo en discreto
%% Controlador Primario por cancelamiento de polos
Ti=dPn(1); %Selecciono el parametro Ti=Tn (Parametro Integral)
Kn=nPn; %Ganancia de la planta
Tr=dPn(1)*0.75; %Constante de tiempo que deseo en lazo cerrado (75% del tao de la planta)
Kc=Ti/(Kn*Tr); %Parametro proporcional del controlador PI
C=tf(Kc*[Ti 1],[Ti 0]); %Controlador PI [C(s)]
Cd=c2d(C,Ts,'tustin'); %Discretizo el controlador
[Bc,Ac]=tfdata(Cd,'v'); %Divido el controlador discreto en numerador y denominador
%% Filtro de Robustez
Tr=4.5; %Dinamica en lazo Cerrado
Tf=3; %Dinamica del Filtro
beta=(1-(1-Tf/Ti)^2*exp(-Ln/Ti))*Ti;
Frs=tf(conv([Tr 1],[beta 1]),conv([Tf 1],[Tf 1]));
Fr=c2d(Frs,Ts,'tustin');
%Fr=filtro_siso(Pdn,0.5,0.91,1); %Calculo del filtro de robustez del PSF
[Bf,Af]=tfdata(Fr,'v'); %Divido el filtro discreto en numerador y denominador
%% Simulacion
nit=600; %Numero de Interacciones
ref(1:nit)=0; %Vector de SetPoint
ref(27:end)=1; %Escalon unitario en el Set Point
rq(1:nit)=0;
rq(220:nit)=10; %Estimulo de perturbacion de carga
rn(1:nit)=0;
rn(450:nit)=0.3; %Estimulo da perturbacion de salida
%Variables de simulacion
y1(1:nit) = 0; y(1:nit) = 0; u(1:nit) = 0;e(1:nit) = 0;yp(1:nit) = 0;
yt(1:nit) = 0; yp(1:nit) = 0; ep(1:nit) = 0;yn(1:nit) = 0; up(1:nit) = 0;
yf(1:nit) = 0; %Salida Filtrada
%Loop de Control
for i=1:2
for k=d+5:nit
%Salida del proceso real P(z) [y(t)]
y1(k)= B(1)*up(k-1-d)+B(2)*up(k-2-d)-A(2)*y1(k-1);
y(k)=y1(k)+rn(k);
%Salida del proceso nominal Pn(z)
yn(k)= Bn(1)*u(k-1-dn)+Bn(2)*u(k-2-dn)-An(2)*yn(k-1);
%Diferencia entre proceso real y proceso nominal (error de prediccion)
ep(k)=y(k)-yn(k);
if i==2 %Si es igual a 2 utilice el filtro del PSF
yf(k)= Bf(1)*ep(k-1)+Bf(2)*ep(k-2)+Bf(3)*ep(k-3)-Af(2)*yf(k-1)-Af(3)*yf(k-2);
end
%Salida del modelo rapido Gn(z) [y(k+d)]
yt(k)= Bgn(1)*u(k-1)+Bgn(2)*u(k-2)-Agn(2)*yt(k-1);
%Suma entre error de prediccion y salida predicha
if i==1
yp(k)=yt(k)+ep(k);
else
yp(k)=yt(k)+yf(k);
end
%Error de la ley de control
e(k)=ref(k)-yp(k);
%ley de control
u(k)=u(k-1)+ Bc(1)*e(k)+Bc(2)*e(k-1);
%Ingreso de perturbacion en la entrada
up(k)=u(k)+rq(k);
end
if i==1
ySP=y;
uSP=u;
else
ySPF=y;
uSPF=u;
end
end
%Grafico
t = 0:Ts:(nit-1)*Ts;
figure(1)
subplot(3,1,1);
hold on;
plot(t,ref,t,ySP,t,ySPF,'Linewidth',3)
legend('Referencia','PS','PSF');
xlabel('Tiempo (s)','FontSize',FS);
ylabel('Salida','FontSize',FS);
set(gca,'fontsize',FS);
grid on;
hold on
subplot(3,1,2);
hold on;
plot(t,uSP,t,uSPF,'Linewidth',3)
xlabel('Tiempo (s)','FontSize',FS);
ylabel('Control','FontSize',FS);
set(gca,'fontsize',FS);
grid on;
subplot(3,1,3);
hold on;
plot(t,rq,t,rn,'Linewidth',3)
legend('Perturbacion de carga','perturbacion de salida');
xlabel('Tiempo (s)','FontSize',FS);
ylabel('Salida','FontSize',FS);
set(gca,'fontsize',FS);
grid on;
hold on
Código para el Caso Integrador y Inestable
>> Descarga el código del Simulink y de Matlab <<
% Predictor de Smith Filtrado
% Sergio Andres Castaño Giraldo
% http:\\controlautomaticoeducacion.com
%_________________________________________________________________________
h=0.2; % Tiempo de Muestreo
tsim=140; % tiempo de simulación
Fs=18; % Tamaño de la letra del plot
%% Descripción del Sistema
% Modelo nominal del proceso
Pn=tf(3.5,[1 0]);
Gn=Pn;
% Modelo nominal del proceso con retardo
Pn.iodelay=1;
%Discretización del Sistema
Pnd=c2d(Pn,h); % Modelo discreto
Gnd=c2d(Gn,h);
%Proceso Real (Caso Ideal)
Pd=Pnd;
%% Parametros del controlador
k11f=0.14; t11f=10; % Parametros del PI
C=k11f+k11f/t11f*tf([h 0],[1 -1],h);
%--------------- Calculo del filtro ------------------------------
Fr=tf([1.5 -1.4],[1 -0.9],h);
% Calculo del Filtro estable S
S=Gnd-Fr*Pnd;
%Simula utilizando SIMULINK
sim('PSF_Int');
%Grafico
figure(1)
subplot(2,1,1);
plot(t,Q(:,1),t,Q(:,2),'Linewidth',3)
legend('Referencia','PSF','PSF');
xlabel('Tiempo (s)','FontSize',FS);
ylabel('Salida','FontSize',FS);
set(gca,'fontsize',FS);
grid on;
subplot(2,1,2);
hold on;
plot(t,Q(:,3),'Linewidth',3)
xlabel('Tiempo (s)','FontSize',FS);
ylabel('Control','FontSize',FS);
set(gca,'fontsize',FS);
grid on;
BIBLIOGRAFIA
- S. A. C. Giraldo, R. C. C. Flesch, and J. E. Normey-Rico, “Multivariable greenhouse control using the filtered Smith predictor,” Journal of Control, Automation and Electrical Systems, pp. 1–10, 2016. (click aca)
- S. A. C. Giraldo, R. C. C. Flesch, J. E. Normey-Rico, and M. Z. P. Sejas, “Decoupling filtered smith predictor design for multivariable systems with multiple time delays,” in 2016 12th IEEE International Conference on Industry Applications (INDUSCON), Nov 2016, pp. 1–8. (Click aca)
- S. A. C. Giraldo, “ESTUDO DE TECNICAS DE SINTONIA DO PREDITOR DE SMITH FILTRADO PARA SISTEMAS MULTIVARIAVEIS COM ATRASO ” (Portugués) Mestrado, Florianópolis, 2016. (Click aca)
- J. E. Normey-Rico and E. F. Camacho, Control of dead-time processes. London: Springer, 2007. (click aca)
Citar este Artículo
¡Hola! Soy Sergio Andrés Castaño Giraldo. Bienvenidos a Control Automático Educación, un espacio dedicado a una de mis grandes pasiones: la Ingeniería de Control y la Automatización.
Mi objetivo aquí es tender un puente entre la teoría académica y la práctica profesional. Como profesor e investigador, he tenido la oportunidad de trabajar en proyectos complejos —desde sistemas de compresión en plataformas offshore hasta modelos de control avanzado— y todo ese aprendizaje lo vuelco en este sitio.
Aquí encontrarás material que crece constantemente: desde fundamentos de instrumentación hasta estrategias de control avanzado y programación profesional. Mi meta es que la información que comparto te sea de utilidad real en tu carrera o formación.
Te invito a que te suscribas, te unas a nuestro canal de YouTube y formemos una comunidad de aprendizaje continuo. ¡Gracias por estar aquí!
