В этом примере показано, как спроектировать цикл каскадного регулирования с двумя ПИ-контроллерами с помощью команды 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, в то время как производительность отслеживания заданного значения почти идентична.