Этот пример показывает, как разработать массив ПИД-регуляторов для нелинейного объекта в 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',pidtuneOptions('Crossover',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 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.
Закройте модель.
bdclose(mdl)
[1] Seborg, D. E. Т. Ф. Эдгар и Д. А. Мелличамп. Динамика процесса и Управление, 2-й Эд., Вайли, 2004, стр 34-36.
[2] Rugh, W. J. и Дж. С. Шэмма. "Исследование в области планирования усиления". Automatica, Выпуск 36, 2000, стр 1401-1425.