Этот пример показов, как спроектировать массив ПИД-регуляторов для нелинейного объекта в Simulink, который работает с широкой областью значений рабочих точек.
Этот объект представляет собой непрерывный реактор с баком перемешиванием (CSTR), который работает в широкой области значений рабочих точек. Один ПИД-регулятор может эффективно использовать температуру хладагента для регулирования концентрации выхода вокруг небольшой рабочей области значений, для которого предназначен ПИД-регулятор. Однако, поскольку объект является сильно нелинейной системой, эффективность управления ухудшается, если рабочая точка значительно изменяется. Система с обратной связью может даже стать нестабильной.
Откройте модель объекта управления CSTR.
mdl = 'scdcstrctrlplant';
open_system(mdl)
Для получения дополнительной информации об этой системе см. раздел [1].
Общим подходом к решению нелинейной задачи управления является использование табличного управления с линейными контроллерами. Вообще говоря, разработка системы управления табличным управлением занимает четыре этапа.
Получите модель объекта управления для каждой рабочей области. Обычной практикой является линеаризация объекта в нескольких рабочих точках равновесия.
Разработайте семейство линейных контроллеров, таких как ПИД-регуляторы, для моделей объекта управления, полученной на предыдущем шаге.
Реализуйте механизм планирования, так что коэффициенты контроллера, такие как коэффициенты ПИД, изменяются на основе значений переменных планирования. Для минимизации нарушений порядка при операции установки требуется плавная (бесшумная) передача между контроллерами.
Оцените эффективность управления с помощью симуляции.
Для получения дополнительной информации о табличном управлении смотрите [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')
Массив ПИД-регуляторов, разработанных отдельно для каждой концентрации, обеспечивает значительно лучшую эффективность по сравнению с одним контроллером.
Однако отклики с обратной связью, показанные выше, вычисляются на основе линейных приближений полной нелинейной системы. Чтобы подтвердить проект, реализуйте механизм планирования в вашей модели с помощью блока ПИД-регулятора, как показано на Реализуйте ПИД-регуляторы Gain-Scheduled.
Закройте модель.
bdclose(mdl)
[1] Seborg, Dale E., Thomas F. Edgar, and Duncan A. Mellichamp. Динамика процесса и управление. 2-е изд., John Wiley & Sons, Inc, 2004, pp. 34-36.
[2] Руг, Уилсон Дж., и Джефф С. Шамма. 'Исследование по табличному управлению'. Автоматика 36, № 10 (октябрь 2000): 1401-1425.