Адаптивное MPC управление нелинейным химическим реактором Используя последовательную линеаризацию

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

Первый принцип нелинейная модель объекта управления доступен и линеаризует в каждом интервале управления. Адаптивный контроллер MPC затем обновляет его внутреннюю прогнозирующую модель с линеаризовавшей моделью объекта управления и достигает нелинейного управления успешно.

О непрерывном реакторе смесителя

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

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

Входные параметры модели CSTR:

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

Цель управления состоит в том, чтобы поддержать концентрацию реагента A в его желаемом заданном значении, которое изменяется в зависимости от времени когда реакторные переходы от низкой скорости преобразования до высокой скорости преобразования. Температура хладагента является переменной, которой управляют, используемой контроллером MPC, чтобы отследить ссылку, а также отклонить измеренное воздействие, являющееся результатом входной потоковой температуры канала. Входная потоковая концентрация канала, принят, чтобы быть постоянным. Модель Simulink mpc_cstr_plant реализует нелинейный объект CSTR.

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

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

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

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

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

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

(2) Разработайте один контроллер MPC оффлайн в начальной рабочей точке. Во время выполнения используйте блок Adaptive MPC Controller (обновляющий прогнозирующую модель в каждом интервале управления) вместе с блоком Linear Parameter Varying (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, сначала необходимо разработать контроллер MPC в начальной рабочей точке, где СТОИМОСТЬ И СТРАХОВАНИЕ является 10 kgmol/m^3, Ti и Tc являются 298.15 K.

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

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'};

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

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];

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

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. Блок "Successive Linearizer" в блоке MATLAB function, который линеаризует первый принцип нелинейный объект CSTR и предоставляет линейную модель объекта управления блоку "Adaptive MPC Controller" в каждом интервале управления. Дважды щелкните по блоку, чтобы видеть код MATLAB. Можно использовать блок в качестве шаблона, чтобы разработать соответствующий линеаризатор для собственных приложений.

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

Подтвердите адаптивную производительность MPC управления

Производительность контроллера подтверждена и против отслеживания заданного значения и против подавления помех.

  • Отслеживание: реакторные переходы заданного значения CA концентрации от оригинала 8.57 (низкая скорость преобразования) к 2 (высокая скорость преобразования) kgmol/m^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)

Смотрите также

Похожие темы