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