Saltar al contenido
Control Automático Educación

Predictor de Smith

La mayoria de los procesos industriales presentan atrasos en sus dinámicas. Ejemplos típicos en la industria son las columnas de destilación y los evaporadores e intercambiadores de calor. El retardo es un fenómeno que transcurre por el desplazamiento temporal que puede aparecer entre dos o mas variables de control y este puede ser generado por ejemplo por el tiempo necesario para transportar masa, energía o información.

Retardo de un sistema

Para tratar el problema de los retardos existen dos lineas de investigación las cuales son:

  • Compensadores de tiempo muerto (DTC)
  • Control predictivo basado en modelo (MPC)
    Otto Smith

En 1957 el norte americano Otto Smith sugirió un compensador que remueve efectivamente el retardo de la ecuación característica del sistema, ese compensador de tiempo muerto fue conocido como el predictor de Smith (PS) y fue la base de diversos estudios que actualmente se vienen desarrollando para tratar los problemas del retardo.

La estructura del predictor de Smith (PS) viene dado por la siguiente representación de modelo interno:

Predictor de Smith

En la estructura el control primario es C(s), el proceso real es P(s), el modelo rápido o modelo sin retardo es Gn(s) y el retardo viene dado por la expresión e^{-L_ns}. Note además que si mi modelo es igual que mi proceso real implica que P_n(s)=G_n(s)e^{-L_ns}=P(s). Esa estructura es capaz de predecir la salida del proceso real y(t) por medio de la dinámica sin retardo G_n osea que con esa estructura el control es capaz de predecir el comportamiento del proceso real P(s) en un tiempo igual al retardo Ln.

La estructura del predictor de Smith, se puede reducir utilizando el algebra de bloques a la siguiente representación equivalente:

Predictor de Smith Equivalente

donde el control esquivalente viene dado por:

C_{eq}=\dfrac{C(s)}{1+C(s)G_n(s)-C(s)P_n(s)}

Así las relaciones de la entrada r(t) y la salida y(t)  suponiendo P(s)=P_n(s)  viene dado por:

H_{yr}(s)=\dfrac{y(t)}{r(t)}=\dfrac{C(s)P_n(s)}{1+C(s)G_n(s)}

Notamos que gracias a la estructura del predictor de Smith, la ecuación característica del proceso que libre de la influencia del retardo

y la relación de la entrada q(t) y la salida y(t) viene dado por:

H_{yq}(s)=\dfrac{y(t)}{q(t)}=P_n(s)\left [ 1-\dfrac{C(s)P_n(s)F_r(s)}{1+C(s)G_n(s)} \right ]

Limitaciones

El predictor de Smith tiene algunas limiaciones las cuales pueden enunciarse a continuación:

  1. El predictor de Smith solo sirve para procesos estables.
  2. La estructura NO es capaz de acelerar la dinámica de rechazo de perturbaciones.
  3. No se puede usar la estructura de el predictor de Smith en procesos integradores o en procesos inestables porque la estructura es internamente inestable, lo que quiere decir que si entra una perturbación, la estructura se inestabilizara para estos dos procesos.
  4. Pequeños errores de modelo, por ejemplo cuando P(s) es diferente a Pn(s), puede hacer que la estructura entre rápidamente a la inestabilidad.

Estas limitaciones del predictor de Smith, pueden ser tratadas por medio de una modificación propuesta por Normey-Rico y Camacho en 1997, adicionando a la estructura un filtro. Esa nueva estructura se conoce como el Predictor de Smith Filtrado. Esa estructura será estudiada en otra entrada.

Respuestas obtenidas con el Predictor de Smith

Para hacer simulaciones de procesos del predictor de Smith y el predictor de Smith filtrado, pueden descargar el mismo software que utilicé en la presentación del video de Youtube.

>>>Click aca para descargar<<<

Vamos a ver como funciona el PS en un proceso estable y para eso vamos a sintonizar un controlador primario C(s) del tipo PI. Veremos entonces que pasa si colocamos el PI solo y si colocamos el PI en la estructura del PS.

Si se tiene el siguiente proceso del sistema real P(s) y vamos a suponer que tenemos un modelo Pn(s) perfecto, osea P(s)=Pn(s). Supongamos entonces que nuestro proceso tiene la siguiente representación de un sistema de primer orden con retardo:

P(s)=P_n(s)=\dfrac{e^{-3s}}{s+1}

y se diseña el siguiente controlador PI:

C(s)=\dfrac{1.2s+1}{1.2s}

donde Kc=1 y Ti=1.2

De esa forma tenemos la siguiente representacion, utilizando la estructura convencional de un control PI y utilizando la estructura del Predictor de Smith con el mismo PI:

Predictor de Smith VS PI

En linea roja, tenemos el control convencional con el PI y en linea azul tenemos el control PI en la estructura del predictor de Smith.

Caso integrador

La siguiente respuesta muestra como el Predictor de Smith no consigue rechazar perturbaciones en procesos integradores:

Predictor de Smith caso Integrador

Vemos que en el caso integrador, la estructura consigue controlar, pero al momento de entrar una perturbación la estructura queda con un error en estado estacionario, como vimos en el video la respuesta de Hq(0) es diferente de cero y es por eso que se demuestra que esta estructura no consigue controlar este tipo de sistemas.

Caso Inestable

En el caso inestable sucede lo mismo que en el caso integrador, la unica diferencia es que cuando entra la perturbación, la variable se va para el infinito.

predictor de smith caso inestable

Ejemplo

Vamos a diseñar un controlador PI por cancelamiento de polos (Tal y como lo vimos en esta entrada) en un proceso con atraso dominante representado por la siguiente función de transferencia:

P(s)=P_n(s)=\dfrac{0.12}{6s+1}e^{-3s}

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 Tr=0.75*Ti. De esa forma obtenemos el siguiente controlador PI:

C(s)=\dfrac{66.67 s + 11.11}{6s}

Smith predictor Simulink

A continuación les dejo el código en Simulink y también el código en Matlab para quien guste de trabajar en programación, de la implementación del predictor de Smith. Ambas implementaciones son equivalentes, (La implementacion en matlab es hecha en tiempo discreto) (La implementación en Simulink la hice en ambas Continuo y discreto). Para tener acceso a los códigos y puedas simular el proceso en tu computador, simplemente debes compartir la información de este post y automaticamente será desbloqueado para ti. Asi ayudas a que este sitio web continue creciendo y aportando más contenido gratuito y de calidad.

% Predictor de Smith
% Sergio Andres Castaño Giraldo
% http:\\controlautomaticoeducacion.com
%_________________________________________________________________________
clc
clear all
close all
Ts=0.4;             %Tiempo de Muestreo
%% 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
%% Simulacion
nit=400;        %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(120:nit)=1;   %Estimulo de perturbacion de carga
rn(1:nit)=0;
rn(250:nit)=0.05; %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;
%Loop de Control
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);
%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
yp(k)=yt(k)+ep(k);
%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
%Grafico
t = 0:Ts:(nit-1)*Ts;
subplot(3,1,1);
hold on;
plot(t,ref,'-m',t,y,'-r','Linewidth',2)
legend('Referencia','Salida');
xlabel('Tiempo (s)');
ylabel('Salida');
grid on;
hold on
subplot(3,1,2);
hold on;
plot(t,u,'-b','Linewidth',2)
xlabel('Tiempo (s)');
ylabel('Control');
grid on;
subplot(3,1,3);
hold on;
plot(t,rq,t,rn,'Linewidth',2)
legend('Perturbacion de carga','perturbacion de salida');
xlabel('Tiempo (s)');
ylabel('Salida');
grid on;

BIBLIOGRAFIA

  1. 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)
  2. 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) 
  3. 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)
  4. J. E. Normey-Rico and E. F. Camacho, Control of dead-time processes. London: Springer, 2007. (click aca)

Si te gusto la información no olvides en compartir en redes sociales, también te puedes sucribir a mi canal de youtube o darle me gusta a mi pagina en Facebook.

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.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (7)

Buen dia Sergio
Agradezco que usted enseñe cosas tan buenas sobre la automatizacion y conttol, me gustaria saber si para la sintonizacion del control pid, consideraste los parametros de la estructura del predictor de smith? O no es necesario…
Gracias de antemano.

Responder

Hola Edmundo, precisamente por usar la estructura del predictor de Smith, consigo diseñar los controladores PID como si no tuvieran retardo. Si no estuvieran en esa estructura tendría que considerar el retardo en el diseño de control, lo cual complica el diseño. Esa es la ventaja del PS. Saludos

Responder

hola, buen día.
Me gustaría saber sobre el Predictor de Smith en sistemas MIMO por favor.
Gracias de antemano.

Responder

Camilo, todavia no he comenado a abordar el control MIMO, es por eso que no lo he colocado aca en la página. Te recomiendo veas el libro de mi orientador Julio Normey Rico el libro se llama Control of dead-time processes (clickaca para ver la portada) , allí encontraras mucho sobre el asunto. El estudio de sistemas con retardo es uno de mis objetos de investigación, por eso más adelante pretendo montar más sobre el asunto. Podria dejarte el link de mi tesis pero esta en portugues entonces no creo que te sirva mucho (Click aca), lo mejor es que veas el libro que te mencioné. Saludos

Responder

Sergio, gracias por responderme
Revisare lo adjunto y estaré pendiente de nuevas publicaciones.

Responder

checho, en mi tdg configure un predictor en el controlador AC800M de abb, pero me quedaron varias dudas, cuando lo miramos?

felicitaciones por la pagina, muchas gracias

Responder

Juan cuando quiera, me dice y damos un vistazo en eso. Gracias por visitar el Blog.

Responder