Этот пример показов, как спроектировать каскадный цикл управления с двух ПИ-контроллеров с помощью команды pidtune.
Каскадный контроль в основном используется для достижения быстрого отказа от нарушения порядка, прежде чем он переходит к другим частям объекта. Самая простая система каскадного управления включает два циклов управления (внутренний и внешний), как показано на блоке ниже.
Контроллер C1 во внешнем контуре является первичным контроллером, который регулирует первичную управляемую переменную y1 путем установки заданной точки внутреннего цикла. Контроллер, C2 во внутреннем цикле, является вторичным контроллером, который отклоняет нарушение порядка d2 локально, прежде чем оно переходит к P1. Чтобы система каскадного управления функционировала правильно, внутренний цикл должен реагировать намного быстрее, чем внешний контур.
В этом примере вы спроектируете одну систему цикла управления с ПИ-контроллер и систему каскадного управления с двух ПИ-контроллеров. Отклики двух систем управления сравниваются как для отслеживания уставки, так и для подавления помех.
В этом примере объект внутреннего цикла P2
Объект внешнего контура P1
P2 = zpk([],-2,3); P1 = zpk([],[-1 -1 -1],10);
Используйте команду pidtune для разработки ПИ-контроллера в стандартной форме для всей модели объекта управления 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, в то время как характеристики отслеживания заданных точек почти идентичны.