В этом примере показано, как спроектировать массив ПИД-контроллеров для нелинейной установки в Simulink, которая работает в широком диапазоне рабочих точек.
Установка представляет собой реактор с непрерывной мешалкой (CSTR), который работает в широком диапазоне рабочих точек. Один ПИД-контроллер может эффективно использовать температуру хладагента для регулирования выходной концентрации в небольшом рабочем диапазоне, для которого предназначен ПИД-контроллер. Однако, поскольку установка является сильно нелинейной системой, эффективность управления ухудшается, если рабочая точка значительно изменяется. Система с замкнутым контуром может даже стать нестабильной.
Откройте модель завода CSTR.
mdl = 'scdcstrctrlplant';
open_system(mdl)

Для получения дополнительной информации об этой системе см. [1].
Общий подход к решению проблемы нелинейного управления заключается в использовании планирования усиления с линейными контроллерами. Вообще говоря, проектирование системы управления планированием усиления занимает четыре этапа.
Получение модели установки для каждой рабочей области. Обычной практикой является линеаризация установки в нескольких точках равновесия.
Проектирование семейства линейных контроллеров, например PID-контроллеров, для моделей установки, полученных на предыдущем этапе.
Реализовать механизм планирования таким образом, что коэффициенты контроллера, такие как коэффициенты усиления PID, изменяются на основе значений переменных планирования. Для минимизации нарушений в работе установки требуется плавная (бесшумная) передача между контроллерами.
Оценка эффективности управления с помощью моделирования.
Для получения дополнительной информации о планировании усиления см. [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
Для проектирования нескольких контроллеров PID в пакете используйте pidtune функция. Следующие команды генерируют массив контроллеров PID в параллельной форме. Требуемая частота перехода с разомкнутым контуром находится на 1 rad/sec, а поле фазы является значением по умолчанию 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, как показано в разделе Реализация контроллеров PID с планированием усиления.
Закройте модель.
bdclose(mdl)
[1] Себорг, Дейл Э., Томас Ф. Эдгар и Дункан А. Мелликамп. Динамика процессов и управление. 2-е изд., John Wiley & Sons, Inc, 2004, стр. 34-36.
[2] Раг, Уилсон Дж. и Джефф С. Шамма. «Исследование планирования прибыли». Automatica 36, no. 10 (Октябрь 2000): 1401-1425.