Main Content

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

P2(s)=3s+2

El lazo exterior de la planta P1 es

P1(s)=10(s+1)3

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')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Single Loop, Cascade.

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')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Single Loop, Cascade.

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.

Consulte también

|

Temas relacionados