В этом примере показано, как спроектировать массив ПИД-регуляторов для нелинейного объекта в 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.