Спроектируйте семейство ПИД-регуляторов для нескольких рабочих точек

В этом примере показано, как спроектировать массив ПИД-регуляторов для нелинейного объекта в Simulink, который действует по широкому спектру рабочих точек.

Открытая модель объекта управления

Объект является непрерывным реактором смесителя (CSTR), который действует по широкому спектру рабочих точек. Один ПИД-регулятор может эффективно использовать температуру хладагента, чтобы отрегулировать выходную концентрацию вокруг небольшого рабочего диапазона, для которого спроектирован ПИД-регулятор. Однако, поскольку объект является строго нелинейной системой, производительность управления ухудшается, если рабочая точка значительно изменяется. Система с обратной связью может даже стать нестабильной.

Откройте модель объекта управления CSTR.

mdl = 'scdcstrctrlplant';
open_system(mdl)

Для получения дополнительной информации об этой системе см. [1].

Введение в табличное управление

Общий подход, чтобы решить нелинейную задачу управления использует табличное управление с линейными контроллерами. Вообще говоря, разработка системы управления табличного управления делает четыре шага:

  1. Получите модель объекта управления для каждой операционной области. Обычная практика должна линеаризовать объект в нескольких рабочих точках равновесия.

  2. Спроектируйте семейство линейных контроллеров, таких как ПИД-регуляторы, для моделей объекта управления, полученных на предыдущем шаге.

  3. Реализуйте механизм планирования, таким образом, что коэффициенты контроллера, такие как коэффициенты ПИД, изменяются на основе значений переменных планирования. Сглаженный (bumpless) передача между контроллерами требуется, чтобы минимизировать воздействие к эксплуатации установки.

  4. Оцените производительность управления с симуляцией.

Для получения дополнительной информации о табличном управлении см. [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.

Для просмотра документации необходимо авторизоваться на сайте