Адаптивное MPC управление нелинейного химического реактора с помощью онлайн-оценки модели

Этот пример показов, как использовать адаптивный контроллер MPC для управления нелинейным непрерывным реактором с баком перемешиванием (CSTR), когда он переходит от низкой скорости преобразования к высокой скорости преобразования.

Модель ARX в дискретном времени идентифицируется в режиме онлайн блоком Recursive Polynomial Model Estimator на каждом контрольном интервале. Адаптивный контроллер MPC использует его, чтобы обновить внутреннюю модель объекта управления и успешно достигает нелинейного управления.

О реакторе непрерывного перемешивания Бака

Реактор непрерывно перемешиваемого Бака (CSTR) является общей химической системой в технологической промышленности. Схема системы CSTR:

Это неадиабатический бак реактор с оболочкой, широко описанный в книге Себорга «Process Dynamics and Control», опубликованной Wiley, 2004. Сосуд принимается идеально смешанным, и происходит одна экзотермическая и необратимая реакция первого порядка A -- > B. Входной поток реагента A подается в бак с постоянной объемной скоростью. Поток продукта непрерывно выходит с той же объемной скоростью, и плотность жидкости постоянна. Таким образом, объем взаимодействующей жидкости является постоянным.

Входы модели CSTR:

$$ \begin{array} {ll}
u_1 = CA_i \; & \textnormal{Concentration of A in inlet feed
stream} [kgmol/m^3] \\
u_2 = T_i \; & \textnormal{Inlet feed stream temperature} [K] \\
u_3 = T_c \; & \textnormal{Jacket coolant temperature} [K] \\
\end{array} $$

и выходы (y (t)), которые также являются состояниями модели (x (t)), являются:

$$ \begin{array} {ll}
y_1 = x_1 = CA \; & \textnormal{Concentration of A in reactor tank} [kgmol/m^3] \\
y_2 = x_2 = T \; & \textnormal{Reactor temperature} [K] \\
\end{array} $$

Цель управления состоит в том, чтобы поддерживать температуру реактора$T$ на желаемом уровне, который изменяется с течением времени, когда реактор переходит от низкой скорости преобразования к высокой скорости преобразования. Температура хладагента$T_c$ является манипулируемой переменной, используемой контроллером MPC, чтобы отслеживать ссылку, а также отклонять измеренное нарушение порядка, возникающее из-за температуры входного потока. $T_i$Концентрация входного потока сырья,, $CA_i$принята постоянной. Модель Simulink mpc_cstr_plant реализует нелинейный объект CSTR.

Об адаптивной модели прогнозирующего управления

Хорошо известно, что динамика CSTR является сильно нелинейной по отношению к изменениям температуры в реакторе и может быть нестабильной в разомкнутом контуре во время перехода от одного рабочего условия к другому. Один контроллер MPC, разработанный в конкретных рабочих условиях, не может обеспечить удовлетворительную эффективность управления в широкой рабочей области значений.

Чтобы управлять нелинейным объектом CSTR с помощью линейного метода MPC управления, у вас есть несколько опции:

  • Если линейная модель объекта управления не может быть получена во время исполнения, сначала вам нужно получить несколько линейных моделей объекта управления в автономном режиме при различных условиях работы, которые охватывают типовую рабочую область значений. Далее можно выбрать один из двух подходов для реализации стратегии MPC управления:

(1) Проектируйте несколько контроллеров MPC в автономном режиме, по одному для каждой модели объекта управления. Во время выполнения используйте блок Multiple MPC Controller, который переключает контроллеры MPC от одного к другому на основе желаемой стратегии планирования. Для получения дополнительной информации смотрите Gain-Scheduled MPC Control of Nonlinear Chemical Reactor. Используйте этот подход, когда модели объекта управления имеют различные порядки или временные задержки.

(2) Спроектируйте один контроллер MPC в автономном режиме в начальной рабочей точке. Во время исполнения используйте блок Adaptive MPC Controller (обновление прогнозирующей модели на каждом контрольном интервале) вместе с блоком Linear Parameter Variing (LPV) System (снабжение линейной модели объекта управления стратегией планирования). Смотрите Адаптивное MPC управление нелинейного химического реактора с использованием линейной системы изменения параметров для получения дополнительной информации. Используйте этот подход, когда все модели объекта управления имеют одинаковый порядок и временную задержку.

  • Если линейная модель объекта управления может быть получена во время исполнения, необходимо использовать блок Adaptive MPC Controller, чтобы достичь нелинейного управления. Существует два типичных способа получить линейную модель объекта управления в режиме онлайн:

(1) Используйте последовательную линеаризацию. Для получения дополнительной информации смотрите Адаптивное MPC управление нелинейным химическим реактором с использованием последующей линеаризации. Используйте этот подход, когда доступна нелинейная модель объекта управления и может быть линеаризирована во время исполнения.

(2) Используйте оперативную оценку, чтобы идентифицировать линейную модель, когда цикл закрыт, как показано в этом примере. Используйте этот подход, когда линейная модель объекта управления не может быть получена ни из системы LPV, ни из последовательной линеаризации.

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

Для линеаризации объекта необходимы Design™ Simulink ® и Simulink Control.

if ~mpcchecktoolboxinstalled('simulink')
    disp('Simulink(R) is required to run this example.')
    return
end
if ~mpcchecktoolboxinstalled('slcontrol')
    disp('Simulink Control Design(TM) is required to run this example.')
    return
end

Для реализации адаптивного контроллера сначала необходимо спроектировать MPC-контроллер в начальной рабочей точке, где CAi составляет 10 кгмоль/м ^ 3, Ti и Tc равны 298,15 К.

Создайте спецификацию рабочей точки.

plant_mdl = 'mpc_cstr_plant';
op = operspec(plant_mdl);

Концентрация сырья известна при начальных условиях.

op.Inputs(1).u = 10;
op.Inputs(1).Known = true;

Температура подачи известна при начальных условиях.

op.Inputs(2).u = 298.15;
op.Inputs(2).Known = true;

Температура хладагента известна при начальных условиях.

op.Inputs(3).u = 298.15;
op.Inputs(3).Known = true;

Вычислите начальное условие.

[op_point, op_report] = findop(plant_mdl,op);
 Operating point search report:
---------------------------------

 Operating point search report for the Model mpc_cstr_plant.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) mpc_cstr_plant/CSTR/Integrator
      x:           311      dx:      8.12e-11 (0)
(2.) mpc_cstr_plant/CSTR/Integrator1
      x:          8.57      dx:     -6.87e-12 (0)

Inputs: 
----------
(1.) mpc_cstr_plant/CAi
      u:            10
(2.) mpc_cstr_plant/Ti
      u:           298
(3.) mpc_cstr_plant/Tc
      u:           298

Outputs: 
----------
(1.) mpc_cstr_plant/T
      y:           311    [-Inf Inf]
(2.) mpc_cstr_plant/CA
      y:          8.57    [-Inf Inf]

Получите номинальные значения x, y и u.

x0 = [op_report.States(1).x;op_report.States(2).x];
y0 = [op_report.Outputs(1).y;op_report.Outputs(2).y];
u0 = [op_report.Inputs(1).u;op_report.Inputs(2).u;op_report.Inputs(3).u];

Получите линейную модель объекта управления при начальном условии.

sys = linearize(plant_mdl, op_point);

Удаление первого объекта входа CAi и второго выхода CA, поскольку они не используются MPC.

sys = sys(1,2:3);

Дискретизируйте модель объекта управления, потому что адаптивный контроллер MPC принимает только модель объекта управления в дискретном времени.

Ts = 0.5;
plant = c2d(sys,Ts);

Проектирование контроллера MPC

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

Укажите типы сигналов, используемых в MPC.

plant.InputGroup.MeasuredDisturbances = 1;
plant.InputGroup.ManipulatedVariables = 2;
plant.OutputGroup.Measured = 1;
plant.InputName = {'Ti','Tc'};
plant.OutputName = {'T'};

Создайте контроллер с предсказанием по умолчанию и горизонтами управления

mpcobj = mpc(plant);
-->The "PredictionHorizon" property of "mpc" object is empty. Trying PredictionHorizon = 10.
-->The "ControlHorizon" property of the "mpc" object is empty. Assuming 2.
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000.
-->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000.
-->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.

Установите номинальные значения в контроллере

mpcobj.Model.Nominal = struct('X', x0, 'U', u0(2:3), 'Y', y0(1), 'DX', [0 0]);

Установите масштабные коэффициенты, потому что входные и выходные сигналы объекта имеют различные порядки величин

Uscale = [30 50];
Yscale = 50;
mpcobj.DV.ScaleFactor = Uscale(1);
mpcobj.MV.ScaleFactor = Uscale(2);
mpcobj.OV.ScaleFactor = Yscale;

Из-за физического ограничения рубашки хладагента скорость изменения Тс ограничена 2 степенями в минуту.

mpcobj.MV.RateMin = -2;
mpcobj.MV.RateMax = 2;

Концентрация в реакторе не контролируется непосредственно в этом примере. Если температуру реактора можно успешно контролировать, концентрация достигнет требуемой эффективности благодаря сильной связи между этими двумя переменными.

Реализуйте адаптивное MPC управление объекта CSTR в Simulink(R)

Чтобы запустить этот пример с онлайн-оценкой, требуется программное обеспечение System Identification Toolbox™.

if ~mpcchecktoolboxinstalled('ident')
    disp('System Identification Toolbox(TM) is required to run this example.')
    return
end

Откройте модель Simulink.

mdl = 'ampc_cstr_estimation';
open_system(mdl);

Модель включает три части:

  1. Блок «CSTR» реализует нелинейную модель объекта управления.

  2. Блок «Adaptive MPC Controller» запускает проектируемый MPC контроллер в адаптивном режиме.

  3. Блок «Recursive Polynomial Model Estimator» оценивает модель ARX с двумя входами (Ti и Tc) и с одним выходом (T) в дискретном времени на основе измеренных температур. Предполагаемая модель затем преобразуется в форму пространства состояний блоком «Model Type Converter» и подается в блок «Adaptive MPC Controller» на каждом контрольном интервале.

В этом примере исходная модель объекта управления используется, чтобы инициализировать онлайн-оценщик с ковариацией матрицы, установленной на 1. Онлайновым методом оценки является «Фильтр Калмана» с матрицей ковариации шума, установленной на 0,01. Результат онлайн-оценки чувствителен к этим параметрам, и вы можете дополнительно настроить их, чтобы достичь лучшего результата оценки.

И «Recursive Polynomial Model Estimator», и «Model Type Converter» предоставлены System Identification Toolbox. Можно использовать эти два блока в качестве шаблона для разработки соответствующей оценки онлайн-модели для собственных приложений.

Начальное значение переменных A (q) и B (q) заполняется числителем и знаменателем исходной модели объекта управления.

[num, den] = tfdata(plant);
Aq = den{1};
Bq = num;

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

Валидация адаптивной эффективности MPC управления

Эффективность контроллера проверяется на соответствие отслеживанию уставки и подавления помех.

  • Трекинг: температура реактора T переходов уставки от исходной 311 К (низкая скорость преобразования) к 377 К (высокая скорость преобразования) кгмоль/м ^ 3.

  • Регулирование: температура подачи Ti имеет медленное колебание, представленное синусоидой с амплитудой 5 степеней, которая является измеренным нарушением порядка, подаваемым на контроллер MPC.

Симулируйте эффективность в системе с обратной связью.

open_system([mdl '/Concentration'])
open_system([mdl '/Temperature'])
sim(mdl)
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Отслеживать и регулировать эффективность очень удовлетворительно.

Сравнение с неадаптивным MPC управлением

Адаптивный MPC обеспечивает превосходную эффективность управления, чем неадаптивный MPC. Для иллюстрации этой точки показана эффективность управления того же контроллера MPC, работающего в неадаптивном режиме. Контроллер реализован с блоком MPC Controller.

mdl1 = 'ampc_cstr_no_estimation';
open_system(mdl1)
open_system([mdl1 '/Concentration'])
open_system([mdl1 '/Temperature'])
sim(mdl1)

Как и ожидалось, отслеживание и регулирование эффективности неприемлемы.

bdclose(mdl)
bdclose(mdl1)

См. также

Похожие темы

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