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

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

Доступна и линеаризируется первая нелинейная модель объекта управления на каждом контрольном интервале. Адаптивный контроллер 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} $$

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

Мы также предполагаем, что прямые измерения концентраций недоступны или нечасты, что является обычным случаем на практике. Вместо этого мы используем «мягкий датчик» для оценки CA на основе измерений температуры и модели объекта управления.

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

Хорошо известно, что динамика 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) Используйте последовательную линеаризацию, как показано в этом примере. Используйте этот подход, когда доступна нелинейная модель объекта управления и может быть линеаризирована во время исполнения.

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

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

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

if ~mpcchecktoolboxinstalled('simulink')
    disp('Simulink(R) is required to run this example.')
    return
end
if ~mpcchecktoolboxinstalled('slcontrol')
    disp('Simulink Control Design(R) 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 объекта, потому что он не используется MPC.

sys = sys(:,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.OutputGroup.Unmeasured = 2;
plant.InputName = {'Ti','Tc'};
plant.OutputName = {'T','CA'};

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

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.
   for output(s) y1 and zero weight for output(s) y2 

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

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

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

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

Пусть температура реактора T плавает (то есть без какой-либо ошибки отслеживания уставки), потому что цель состоит в том, чтобы контролировать концентрацию реактора CA, и доступна только одна манипулируемая переменная (температура теплоносителя Tc).

mpcobj.Weights.OV = [0 1];

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

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

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

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

mdl = 'ampc_cstr_linearization';
open_system(mdl)

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

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

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

  3. Блок «Последующий Линеаризатор» в блоке MATLAB Function, который линеаризирует первый принцип нелинейного объекта CSTR и предоставляет линейную модель объекта управления блоку «Adaptive MPC Controller» на каждом контрольном интервале. Дважды кликните блок, чтобы увидеть код MATLAB. Можно использовать блок в качестве шаблона для разработки соответствующего линеаризатора для собственных приложений.

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

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

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

  • Отслеживание: уставка концентрации реактора CA переходит от исходной 8.57 (низкая скорость преобразования) к 2 (высокая скорость преобразования) кгмоль/м ^ 3. Во время перехода объект сначала становится нестабильным, а затем снова стабильным (см. график полюсов).

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

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

open_system([mdl '/Concentration'])
open_system([mdl '/Temperature'])
open_system([mdl '/Pole'])
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.

bdclose(mdl)

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

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

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

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

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

bdclose(mdl1)

См. также

Похожие темы