В этом примере показано, как создать каскадный контур управления с двумя контроллерами PI с помощью команды pidtune.
Каскадное управление в основном используется для достижения быстрого отторжения возмущения до его распространения на другие части растения. Простейшая система каскадного управления включает в себя два контура управления (внутренний и внешний), как показано на блок-схеме ниже.

Контроллер C1 во внешнем контуре является первичным контроллером, который регулирует первичную управляемую переменную y1 путем установки уставки внутреннего контура. Контроллер C2 во внутреннем контуре - это вторичный контроллер, который локально отклоняет возмущение d2 перед его распространением на P1. Для правильной работы системы каскадного управления внутренний контур должен реагировать гораздо быстрее, чем внешний контур.
В этом примере будет разработана одноконтурная система управления с PI-контроллером и каскадная система управления с двумя PI-контроллерами. Реакции двух систем управления сравниваются как для эталонного отслеживания, так и для отклонения возмущений.
В этом примере установка внутреннего контура P2
3s + 2
Установка внешнего контура P1
+ 1) 3
P2 = zpk([],-2,3); P1 = zpk([],[-1 -1 -1],10);
Команда pidtune используется для проектирования PI-контроллера в стандартной форме для всей модели установки P = P1 * P2.

Желательная ширина полосы пропускания разомкнутого контура составляет 0,2 рад/с, что приблизительно соответствует времени отклика 10 секунд.
% 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
Оптимальная практика состоит в том, чтобы сначала сконструировать контроллер внутреннего контура C2 а затем сконструировать контроллер внешнего контура C1 с замкнутым внутренним контуром. В этом примере полоса пропускания внутреннего контура выбирается равной 2 рад/с, что в десять раз превышает требуемую полосу пропускания внешнего контура. Для того чтобы иметь эффективную систему каскадного управления, важно, чтобы внутренний контур реагировал гораздо быстрее, чем внешний контур.
Настройка контроллера внутреннего контура C2 с разомкнутой полосой пропускания 2 рад/с.
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
Настройка C1 контроллера внешнего контура с той же пропускной способностью, что и система с одним контуром.
% 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
Во-первых, постройте график контрольных откликов шага для обеих систем управления.
% 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')

Во-вторых, постройте график реакции d2 на отказ от ступенчатого возмущения для обеих систем управления.
% 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')

Из двух графиков ответа можно сделать вывод, что система каскадного управления работает намного лучше при отклонении возмущения d2, в то время как характеристики отслеживания уставки почти идентичны.