Diseñar un sistema de control en cascada con controladores PI
Este ejemplo muestra cómo diseñar un lazo de control en cascada con dos controladores PI utilizando el comando pidtune.
Introducción al control en cascada
El control en cascada se utiliza principalmente para lograr la anulación rápida de la perturbación antes de que se propague a otras partes de la planta. El sistema de control en cascada más sencillo consta de dos lazos de control (interno y externo), como se muestra en el diagrama de bloques siguiente.
El controlador C1 del lazo externo es el controlador principal que regula la variable controlada principal y1 estableciendo el valor de consigna del lazo interno. El controlador C2 del lazo interno es el controlador secundario que anula la perturbación d2 localmente antes de que se propague a P1. Para que un sistema de control en cascada funcione correctamente, el lazo interno debe responder mucho más rápido que el lazo externo.
En este ejemplo, diseñará un sistema de control de lazo simple con un controlador PI y un sistema de control en cascada con dos controladores PI. Se comparan las respuestas de los dos sistemas de control tanto para el seguimiento de la referencia como para la anulación de perturbaciones.
Planta
En este ejemplo, el lazo interno de la planta P2 es
El lazo exterior de la planta P1 es
P2 = zpk([],-2,3); P1 = zpk([],[-1 -1 -1],10);
Diseñar un sistema de control de lazo simple con un controlador PI
Utilice el comando pidtune para diseñar un controlador PI en forma estándar para todo el modelo de planta P = P1 * P2.
El ancho de banda de lazo abierto deseado es de 0,2 rad/s, lo que corresponde aproximadamente a un tiempo de respuesta de 10 segundos.
% The plant model is P = P1*P2 P = P1*P2; % Use a PID or PIDSTD object to define the desired controller structure C = pidstd(1,1); % Tune PI controller for target bandwidth is 0.2 rad/s C = pidtune(P,C,0.2); C
C = 1 1 Kp * (1 + ---- * ---) Ti s with Kp = 0.0119, Ti = 0.849 Continuous-time PI controller in standard form
Diseñar un sistema de control en cascada con dos controladores PI
Se recomienda diseñar primero el controlador del lazo interno C2 y, después, diseñar el controlador del lazo externo C1 con el lazo interno cerrado. En este ejemplo, el ancho de banda del lazo interno se selecciona como 2 rad/s, que es diez veces mayor que el ancho de banda del lazo externo deseado. Para que un sistema de control en cascada sea eficaz, es esencial que el lazo interno responda mucho más rápido que el externo.
Ajuste el controlador de lazo interno C2 con un ancho de banda de lazo abierto de 2 rad/s.
C2 = pidtune(P2,pidstd(1,1),2); C2
C2 = 1 1 Kp * (1 + ---- * ---) Ti s with Kp = 0.244, Ti = 0.134 Continuous-time PI controller in standard form
Ajuste el controlador de lazo exterior C1 con el mismo ancho de banda que el sistema de lazo simple.
% Inner loop system when the control loop is closed first clsys = feedback(P2*C2,1); % Plant seen by the outer loop controller C1 is clsys*P1 C1 = pidtune(clsys*P1,pidstd(1,1),0.2); C1
C1 = 1 1 Kp * (1 + ---- * ---) Ti s with Kp = 0.015, Ti = 0.716 Continuous-time PI controller in standard form
Comparación del rendimiento
En primer lugar, represente las respuestas de seguimiento de referencia de paso para ambos sistemas de control.
% single loop system for reference tracking sys1 = feedback(P*C,1); sys1.Name = 'Single Loop'; % cascade system for reference tracking sys2 = feedback(clsys*P1*C1,1); sys2.Name = 'Cascade'; % plot step response figure; step(sys1,'r',sys2,'b') legend('show','location','southeast') title('Reference Tracking')
Después, represente las respuestas de anulación de perturbación de paso de d2 para ambos sistemas de control.
% single loop system for rejecting d2 sysd1 = feedback(P1,P2*C); sysd1.Name = 'Single Loop'; % cascade system for rejecting d2 sysd2 = P1/(1+P2*C2+P2*P1*C1*C2); sysd2.Name = 'Cascade'; % plot step response figure; step(sysd1,'r',sysd2,'b') legend('show') title('Disturbance Rejection')
A partir de las dos gráficas de respuesta se puede deducir que el sistema de control en cascada funciona mucho mejor a la hora de anular la perturbación d2, mientras que el rendimiento del seguimiento de los valores de consigna es prácticamente idéntico.