Saltar al contenido

Anti Windup en un Control PID

El Anti Windup en un control PID es una característica fundamental que debe ser tenida en consideración en el lazo cerrado de control para evitar la sobrecarga de la acción integradora.

Es justamente sobre este tema que iremos a hablar el día de hoy. Pero antes si estás interesado en aprender más sobre los Sistemas de Control, puedes ver nuestro curso de Control Clásico.

También pueden suscribirte a nuestro canal de YouTube:

Control PID

Hasta este punto hemos estudiado bastante las características que nos ofrece un controlador PID (proporcional, integral y derivativo) dentro de un sistema de control.

Sin duda, este es el control más popular a nivel industrial, debido a su simplicidad y robustez.

A continuación te presento tres entradas entre muchas de las que tenemos en este sitio web, si estás interesado en profundizar sobre el control PID:

Sin embargo sintonizar o ajustar los parámetros del control PID, puede llegar a ser una tarea complicada, dependiendo claro del tipo de proceso que se desee controlar.

El esquema de lazo cerrado de un controlador PID puede verse a continuación:

PID ISA

Donde la ecuación en el dominio transformado de Laplace del control PID es:

C(s)=k_c\left(1+\dfrac{1}{\tau_is}+\tau_ds \right)

A pesar que varios aspectos sobre el controlador PID pueden ser explicados utilizando la teoría de control lineal, existen algunos aspectos no lineales los cuales debemos considerar.

Limitaciones en los Actuadores del Proceso

Es bien conocido que cuando deseamos aplicar la teoría del control sobre un proceso cualquiera, las características y propiedades del proceso industrial nos darán las pistas para saber que tipo de control implementar.

Generalmente, es seleccionado el compensador PID para regular las variables de los procesos unitários dentro de una planta industrial.

Sin embargo, si el proyecto de este controlador PID no lleva en consideración las limitaciones físicas del proceso, podremos llegar a tener un comportamiento no deseado de la variable controlada.

Se sabe que todos los actuadores físicamente poseen limitaciones. Por ejemplo, un motor tiene una velocidad limitada; la válvula de control no puede abrir más del 100% o cerrar más del 0%, etc.

En un lazo de control, muchas veces por las condiciones deseadas de desempeño, es muy probable alcanzar los limites de los actuadores.

Cuando esto sucede, el lazo cerrado de control pasa a ser un control en lazo abierto debido a que hemos salido de la banda proporcional del controlador y el sistema no tiene como inyectar más o menos energía al proceso.

Saturación del actuador
Saturación del actuador

Note en la figura anterior, que por el simple hecho de estar fuera de la banda proporcional del controlador, la válvula de control se encuentra bien sea totalmente abierta, o totalmente cerrada.

Este comportamiento se mantiene, hasta que la variable controlada se aproxime del setpoint y el sistema entre nuevamente dentro de la banda proporcional, regulando nuevamente la válvula de control, como es observado a partir del segundo 60.

Efecto WindUp Integral

Si en nuestro lazo de control usamos un controlador con acción integradora, por causa de que la acción integral tiene memoria, guardando los datos anteriores del error (o sea está integrando el error) esta integración continuará creciendo inclusive cuando nos encontramos sobre la saturación del sistema.

Efecto WindUp Integrador
Efecto WindUp Integrador

Esto se traduce en que el término integral puede volverse exageradamente grande, o sea se sobre carga, en ingles coloquialmente se le conoce como «winds up».

La consecuencia de esta sobrecarga de la señal integradora, es que cuando el sistema entra de nuevo en la banda proporcional (sale de las limitaciones físicas del proceso) se debe esperar hasta que la integral se descargue para comenzar a reaccionar (integral windup).

Esto conlleva a tener transitorios muy largos.

A continuación veamos un ejemplo del comportamiento dinámico de un control PID ideal (en un sistema sin saturaciones) y un control PID real (un sistema con saturación en el actuador) sin considerar el efecto windup integrador.

Con este ejemplo veremos que efecto tiene saturar la salida del controlador.

Efecto sobrecarga de la acción integral del control PID
Efecto sobrecarga de la acción integral del control PID

La figura del lado izquierdo, muestra como el área (amarillo) bajo el setpoint, es compensada por el área que se encuentra sobre el setpoint. En ese caso la acción de control puede sobrepasar por encima del 0.8, llegando a una respuesta deseada en 32 segundos.

En la figura de la derecha, el actuador tiene una limitación en 0.8 (las lineas punteadas representan el actuador sin restricción) vemos que a pesar de estar saturado, la integral del error sigue creciendo, llegando a un máximo de 2, provocando que el control, una vez sobrepasado el setpoint deba descargar toda esa acción integradora para que la variable efectivamente alcance el setpoint en el segundo 55.

Debemos aplicar un sistema de control anti wind up para evitar estos problemas.

¿Qué es el Anti-Windup?

El método anti-wind-up es un mecanismo de control que busca evitar que la acción integral de un sistema de control continue creciendo (o integrando) cuando el sistema se encuentra en los límites de saturación del elemento final de control (ejemplo, válvula totalmente abierta).

Esto es muy importante, pues cuando el sistema entra de nuevo en una zona de operación en la cual no se encuentre en el límite del actuador, el controlador pueda actuar inmediatamente, sin necesidad de esperar a que todo el error acumulado (acción integral sobrecargada) se descargue.

Técnicas Anti Windup para controladores con acción integral

Para evitar la sobrecarga de la acción integradora, debemos aplicar estratégias Anti Windup en nuestros controladores, especialmente en el control PID que es el más popular de todos.

Vamos a tratar tres métodos anti-windup que actualmente son bastante implementadas en controladores que poseen una acción integradora y de esa forma descargar la acción integral para conseguir una respuesta rápida de nuestra variable controlada.

Anti Windup en Código

La estrategia más fácil de resolver el problema del winds up es avisar al controlador de no cargar más la acción integral porque está saturado.

Esta acción anti-windup del control PID puede verse a continuación:

%PID
u(k) = u(k-1) + q0*e(k) + q1*e(k-1) + q2*e(k-2); 
%Anti-Windup
 if (u(k) >= umax)     
    u(k) = umax;
 elseif (u(k) <= umin)
     u(k) = umin;
 end
Anti windup por Código
Antiwindup por Código

Anti-windup via Incremento de Control

Para evitar el Windup del control PID, puede emplearse el método anti-windup realizando el cálculo del incremento de control en la ley de control, si el actuador satura, lo que se hace es NO sumar el incremento de control.

%PID
deltaU(k) =  q0*e(k) + q1*e(k-1) + q2*e(k-2);
%Anti-Windup
if (u(k-1)+deltaU(k) >= umax || u(k-1)+deltaU(k) <= umin)     
    deltaU(k) = 0;
end
%Acción de Control
u(k) = u(k-1)+deltaU(k);
Anti Windup via Incremento de control
Anti Windup via Incremento de control

Anti-windup via Descarga de la Acción Integral

La otra estrategia anti windup (reset windup) es aplicar directamente un sistema de descarga de la propia acción integradora del controlador.

A continuación puede verse el esquema de un Anti-Windup hecho en Simulink que ejemplifica el efecto de descarga donde se adiciona una ganancia anti windup como cuarto parámetro de sintonia.

Anti Windup descarga acción integral
Esquema Anti Windup descarga acción integral

Note que cuando el sistema de control NO está saturado indica que e_s (t)=0 y cuando está saturado entonces e_s (t)\neq 0.

Analicemos la ecuación matemática de la entrada del integrador:

\dfrac{K_c}{\tau_i}e(t)+\dfrac{1}{\tau_w}e_s(t)

El error de saturación es:

e_s(t)=-\dfrac{K_c\tau_w}{\tau_i}e(t)

Note que cuando se está en estado estacionario implica que e_s (t)=u(t)-v(t), donde:

v(t)=u_{lim}+\dfrac{K_c\tau_w}{\tau_i}e(t)

Dado que la señal de u_{lim} ⁡y e tienen el mismo signo, hace que la señal v sea siempre mayor que la magnitud de u_{lim}, previniendo la sobrecarga del integrador.

Es importante destacar que la ganancia anti-windup \tau_w determina la velocidad de descarga de la acción integradora. Si esta ganancia anti windup es pequeña, la descarga será rápida, caso contrario la descarga será lenta llegando inclusive a no tener ningún efecto si es sintonizado como un valor muy grande.

Suscríbete a este sitio WEB para estar enterado de las nuevas entradas!

Códigos en Matlab / Simulink

A continuación te dejo mi código sobre la implementación del control PID con Anti-Windup implementado en Matlab y también un anti windup en simulink.


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.