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 (19)

Una consulta, y como yo calculo el tiempo muerto de un proceso, al momento de hacer el modelamiento matematico?

Responder

Es el tiempo que tarda el proceso en comenzar a responder una vez estimulamos el sistema en la entrada.

Responder

Hola, una pregunta, cómo puedo instalar el programa que usas. He buscado y encontre los links, despues de leer el artículo original, pero no puedo descarga ninguno. Link: https://calerga.com/contrib/index.html. El programa se llama “An unified approach for DTC design”. Ayuda, por favor.

Responder

Paul el programa esta disponible aquí mismo en el post. El enlace está debajo del titulo que dice “Respuestas obtenidas con el Predictor de Smith”

Responder

Una consulta, he construido el predictor de Smith, al principio no me salio muy bien el modelamiento matematico de la planta, y era muy notable el error en su respuesta a lazo cerrado, pero luego de modificar empiricamente la constante de tiempo y la ganancia he logrado disminuir el error en estado estacionario.
Mi pregunta es, por qué despues de modificar la funcion de transferencia del modelo interno, mi control PI ha funcionado correctamente, para esta variacion que hice en la funcion de transferencia, si fue sintonizado con el primer polinomio que me salio.

Responder

Es porque has modificado el modelo interno y en ese caso te está dando una mejor predicción del comportamiento del sistema lo que le ayuda a tu controlador que previamente habías calculado.

Responder

Hola Sergio, en tu video muestras como es que el Predictor de Smith, logra retirar el retardo de la ecuacion caracteristica, mi pregunta es: bajo que tipo de tecnica (nyquist, bode, nichols, u otros mas) puedo yo demostrar que un tiempo de retardo considerable esta afectado a mi sistema, pero que sea atraves de la ec. caracteristica, tal como lo mencionas.

Saludos

Responder

El retardo afecta la fase de tu sistema, por eso verás por ejemplo en un diagrama de bode que cuando tienes un sistema con retardo la fase en altas frecuencias cae bastante. Cuando tenemos un lazo cerrado de control esa fase no puede caer de -180 porque de lo contrario el sistema entra en región de inestabilidad. Con respecto a tu pregunta, una forma rápida de determinar que el retardo es dominante y que va a afectar considerablemente tu lazo cerrado es comparar el retardo con la constante de tiempo de tu sistema. Si el retardo es mayor que tu constante de tiempo, entonces tienes un retardo dominante y debes aplicar técnicas de compensación de tiempo muerto.

Responder

Gracias por su respuesta, comprendo que a traves de un diagrama de bode se puede verificar si el sistema esta tendiendo hacia la inestabilidad, pero ese analisis sería en lazo abierto y con todo el polinomio.
El punto principal que consideró en su analisis del Predictor de Smith fue que esta tecnica de control consigue eliminar el atraso de la ecuacion de caracteristica. Lo que no entiendo es que, qué se consigue con ello.? y bajo que tipo de análisis se consigue que eliminar el atraso de la Ec. caracteristica irá mejor al sistema.
En otros videos vi su analisis de bode, en el cual se observa que la FT tiene retardo y como afecta a su estabilidad, pero el retardo se encontraba en numerador y la evaluacion fue en lazo abierto.
Estoy muy entusiasmado en aprender esta tecnica de control de Predictor de Smith, de antemano muchas gracias.

Responder

Es porque el retardo es un término no racional, por eso al quitarlo de la ecuación característica podemos hacer todo el análisis del sistema empleando diversas herramientas como bode, lugar de las raíces, etc. Con un retardo allí se te complica hacer esos análisis y tendrías que hacer una aproximación Padé para poder trabajar con él.

Responder

buenas noches ing. sergio
tengo el siguiemte caso de estudio ” controlar la presion de una torre de absorcion de co2″, para este caso obtengo la FT-planta usando el Aspen Plus Dynamic, pero esta mi FT tiene un tiempo muerto, es posible sintonizar un controlador PID mediante el metodo del Lugar geometrico de la Raiz

Hola Hernan, puedes calcularlo realizando una aproximación Padé al retardo, para que puedas representarlo dicho retardo dentro del lugar geométrico de las raíces.

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