Saltar al contenido
Control Automático Educación

Predictor de Smith

Cuando un proceso o sistema tiene un retardo dominante, realizar un sistema de control puede ser complicado y para solucionar este problema uno de los métodos más famosos es conocido como el Predictor de Smith.

En esta entrada vas a aprender en detalle como funciona el predictor de Smith, aprenderás sus limitaciones y finalmente verás como simularlo en Matlab y Simulink.

Antes de comenzar, te invito a que te suscribas al canal de YouTube si deseas seguir aprendiendo sobre estos temas y que mires nuestro curso gratuito de control clásico.

Procesos con Tiempo Muerto

La mayoría de los procesos industriales presentan retardos (tiempos muertos) en sus dinámicas que dificultan la tarea de regulación de sus variables.

Ejemplos típicos en la industria son las columnas de destilación y los evaporadores e intercambiadores de calor.

¿Qué es un Retardo?

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.

En el siguiente ejemplo se muestra como el retardo o el tiempo muerto aparece en la dinámica de calentamiento de un liquido al interior de un tanque.

Cuando la resistencia se activa (escalón azul) observemos que la temperatura al final del tubo solo responde un tiempo despues (linea roja), sin embargo si tuvieramos la posibilidad de colocar un sensor justo en el tanque, el retardo de tiempo sería eliminado (linea azul).

Retardo de un sistema

Sistemas de Control para procesos con Retardo

Para tratar el problema de los retardos sobre los sistemas de control en lazo cerrado existen dos grandes lineas de investigación las cuales son:

  1. Compensadores de tiempo muerto (DTC)
  2. Control predictivo basado en modelo (MPC)

En esta entrada, vamos a hablar exclusivamente de los compensadores de tiempo muerto (DTC), sin embargo si estás interesado en la segunda estratégia, aquí tenemos un curso completo de 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 dentro de los lazos de control.

Predictor de Smith

La estructura del predictor de Smith (Smith predictor en ingles) 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 el modelo es igual a el proceso real implica que P_n(s)=G_n(s)e^{-L_ns}=P(s).

Este compensador de tiempo muerto es capaz de predecir la salida del proceso real, y(t), por medio de la dinámica sin retardo G_n, o sea que con esa estructura el control es capaz de predecir el comportamiento del proceso real, P(s), en un tiempo igual al retardo Ln.

El método de Smith en Control, 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 queda libre de la influencia del retardo.

Por otro lado, 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 del Predictor de Smith

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 predictor de Smith en un proceso estable y para eso vamos a sintonizar un controlador primario C(s) del tipo PI.

En este caso se realizará una comparación de un lazo cerrado de control con y sin la estructura del predictor de Smith.

Si se tiene el siguiente proceso del sistema real, P(s), y vamos a suponer que tenemos un modelo, Pn(s), perfecto, o sea 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 esta estructura de control no consigue rechazar perturbaciones en el caso que tengamos 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 de un Predictor de Smith

Para este ejemplo vamos a diseñar un controlador PI por cancelamiento de polos para un proceso con retardo (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 proyectado colocando el parámetro Ti igual al tau (constante de tiempo) de la planta, o sea Ti=6.

Para este ejemplo se desea una respuesta en lazo cerrado 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 en Simulink

A continuación se puede descargar el código del predictor de Smith en Simulink y también el código del Predictor de Smith en Matlab.

Ambas implementaciones son equivalentes:

  • La implementación en MATLAB realiza un predictor de Smith discreto;
  • La implementación en Simulink realiza un predictor de Smith en tiempo Continuo y en tiempo discreto.

Los códigos del el compensador de smith pueden ser descargados a través del siguiente botón:

% 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