В этом примере показано, как спроектировать массив ПИД-регуляторов для нелинейного объекта в Simulink®, который действует по широкому спектру рабочих точек.
Объект является непрерывным реактором смесителя (CSTR), который действует по широкому спектру рабочих точек. Один ПИД-регулятор может эффективно использовать температуру хладагента, чтобы отрегулировать выходную концентрацию вокруг небольшого рабочего диапазона, для которого спроектирован ПИД-регулятор. Однако, поскольку объект является строго нелинейной системой, эффективность управления ухудшается, если рабочая точка значительно изменяется. Система с обратной связью может даже стать нестабильной.
Откройте модель объекта управления CSTR.
mdl = 'scdcstrctrlplant';
open_system(mdl)
Для получения дополнительной информации об этой системе см. [1].
Общий подход, чтобы решить нелинейную задачу управления должен использовать табличное управление с линейными контроллерами. Вообще говоря, разработка системы управления табличного управления делает четыре шага.
Получите модель объекта управления для каждой операционной области. Обычная практика должна линеаризовать объект в нескольких рабочих точках равновесия.
Спроектируйте семейство линейных контроллеров, таких как ПИД-регуляторы, для моделей объекта управления, полученных на предыдущем шаге.
Реализуйте механизм планирования, таким образом, что коэффициенты контроллера, такие как коэффициенты ПИД, изменяются на основе значений переменных планирования. Сглаженный (bumpless) передача между контроллерами требуется, чтобы минимизировать воздействие к эксплуатации установки.
Оцените эффективность управления с симуляцией.
Для получения дополнительной информации о табличном управлении см. [2].
Этот пример фокусируется на разработке семейства ПИД-регуляторов для нелинейного объекта CSTR.
Выходная концентрация C
используется, чтобы идентифицировать различные операционные области. Объект CSTR может действовать на любой скорости преобразования между низкой скоростью преобразования (C
= 9 ) и высокая скорость преобразования (
C
= 2 ). В этом примере разделите рабочий диапазон на восемь областей, представленных
C
= 2 через
9
.
Задайте операционные области.
C = [2 3 4 5 6 7 8 9];
Создайте массив технических требований рабочей точки по умолчанию.
op = operspec(mdl,numel(C));
Инициализируйте технические требования рабочей точки путем указывания, что выходная концентрация является известным значением и определением выходного значения концентрации.
for ct = 1:numel(C) op(ct).Outputs.Known = true; op(ct).Outputs.y = C(ct); end
Вычислите рабочие точки равновесия, соответствующие значениям C
.
opoint = findop(mdl,op,findopOptions('DisplayReport','off'));
Линеаризуйте объект в этих рабочих точках.
Plants = linearize(mdl,opoint);
Поскольку объект CSTR нелинеен, линейные модели отображают различные характеристики. Например, модели объекта управления с высокими и низкими скоростями преобразования устойчивы, в то время как другие не.
isstable(Plants,'elem')'
ans = 1x8 logical array 1 1 0 0 0 0 1 1
Чтобы спроектировать несколько ПИД-регуляторов в пакете, используйте pidtune
функция. Следующие команды генерируют массив ПИД-регуляторов в параллельной форме. Желаемая частота среза разомкнутого контура в 1
рад/секунда и запас по фазе являются значением по умолчанию 60
степени.
Controllers = pidtune(Plants,'pidf',1);
Отобразите контроллер для C
= 4 .
Controllers(:,:,4)
ans = 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 with Kp = -12.4, Ki = -1.74, Kd = -16, Tf = 0.00875 Continuous-time PIDF controller in parallel form.
Чтобы анализировать ответы с обратной связью для отслеживания заданного значения шага, сначала создайте системы с обратной связью.
clsys = feedback(Plants*Controllers,1);
Постройте ответы с обратной связью.
figure hold on for ct = 1:length(C) % Select a system from the LTI array sys = clsys(:,:,ct); sys.Name = ['C=',num2str(C(ct))]; sys.InputName = 'Reference'; % Plot step response stepplot(sys,20); end legend('show','location','southeast')
Все замкнутые циклы устойчивы, но перерегулирования циклов с нестабильными объектами (C
= 4 , через
7
) являются слишком большими. Чтобы улучшить результаты для нестабильных моделей объекта управления, увеличьте целевую полосу пропускания разомкнутого контура до 10
рад/секунда.
Controllers = pidtune(Plants,'pidf',10);
Отобразите контроллер для C
= 4 .
Controllers(:,:,4)
ans = 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 with Kp = -283, Ki = -151, Kd = -128, Tf = 0.0183 Continuous-time PIDF controller in parallel form.
Создайте системы с обратной связью и постройте переходные процессы с обратной связью для новых контроллеров.
clsys = feedback(Plants*Controllers,1); figure hold on for ct = 1:length(C) % Select a system from the LTI array. sys = clsys(:,:,ct); set(sys,'Name',['C=',num2str(C(ct))],'InputName','Reference'); % Plot the step response. stepplot(sys,20) end legend('show','location','southeast')
Все ответы с обратной связью являются теперь удовлетворительными. Для сравнения исследуйте ответ, когда вы будете использовать тот же контроллер во всех рабочих точках. Создайте другой набор систем с обратной связью, где каждый использует C
= 2 контроллер и график их ответы.
clsys_flat = feedback(Plants*Controllers(:,:,1),1); figure stepplot(clsys,clsys_flat,20) legend('C-dependent Controllers','Single Controller')
Массив ПИД-регуляторов, спроектированных отдельно для каждой концентрации, дает значительно лучшую эффективность, чем один контроллер.
Однако ответы с обратной связью, показанные выше, вычисляются на основе линейных аппроксимаций полной нелинейной системы. Чтобы подтвердить проект, реализуйте механизм планирования в своей модели с помощью блока PID Controller как показано в Реализации Запланированные на усиление ПИД-регуляторы (Simulink Control Design).
Закройте модель.
bdclose(mdl)
[1] Seborg, Дэйл Э., Томас Ф. Эдгар и Дункан А. Мелличамп. Динамика процесса и Управление. 2-й редактор, John Wiley & Sons, Inc, 2004, стр 34-36.
[2] Rugh, Вильсон Дж. и Джефф С. Шэмма. 'Исследование в области Табличного управления'. Automatica 36, № 10 (октябрь 2000): 1401-1425.
operspec
(Simulink Control Design) | findop
(Simulink Control Design) | pidtune