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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(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

Во-первых, линейная модель объекта управления получена в начальных условиях работы, СТОИМОСТЬ И СТРАХОВАНИЕ является 10 kgmol/m^3, Ti и Tc являются 298.15 K. Функции от Simulink Control Design, такие как "operspec", "findop", "линеаризуют", используются, чтобы сгенерировать линейную систему пространства состояний из модели Simulink.

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

Ts = 0.5;
% Create operating point specification.
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);
% Obtain nominal values of x, y and u.
x0_initial = [op_report.States(1).x; op_report.States(2).x];
y0_initial = [op_report.Outputs(1).y; op_report.Outputs(2).y];
u0_initial = [op_report.Inputs(1).u; op_report.Inputs(2).u; op_report.Inputs(3).u];
 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]

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

plant_initial = linearize(plant_mdl,op_point);
% Discretize the plant model
plant_initial = c2d(plant_initial,Ts);

Задайте типы сигнала и имена, используемые в MPC.

plant_initial.InputGroup.UnmeasuredDisturbances = [1 2];
plant_initial.InputGroup.ManipulatedVariables = 3;
plant_initial.OutputGroup.Measured = [1 2];
plant_initial.InputName = {'CAi','Ti','Tc'};
plant_initial.OutputName = {'T','CA'};

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

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

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.Outputs(2).y = 5.5;
op.Outputs(2).Known = true;

Найдите условия работы устойчивого состояния.

[op_point,op_report] = findop(plant_mdl,op);
% Obtain nominal values of x, y and u.
x0_intermediate = [op_report.States(1).x; op_report.States(2).x];
y0_intermediate = [op_report.Outputs(1).y; op_report.Outputs(2).y];
u0_intermediate = [op_report.Inputs(1).u; op_report.Inputs(2).u; op_report.Inputs(3).u];
 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:           339      dx:      3.42e-08 (0)
(2.) mpc_cstr_plant/CSTR/Integrator1
      x:           5.5      dx:     -2.87e-09 (0)

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

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

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

plant_intermediate = linearize(plant_mdl,op_point);
% Discretize the plant model
plant_intermediate = c2d(plant_intermediate,Ts);

Задайте типы сигнала и имена, используемые в MPC.

plant_intermediate.InputGroup.UnmeasuredDisturbances = [1 2];
plant_intermediate.InputGroup.ManipulatedVariables = 3;
plant_intermediate.OutputGroup.Measured = [1 2];
plant_intermediate.InputName = {'CAi','Ti','Tc'};
plant_intermediate.OutputName = {'T','CA'};

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

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

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.Outputs(2).y = 2;
op.Outputs(2).Known = true;

Найдите условия работы устойчивого состояния.

[op_point,op_report] = findop(plant_mdl,op);
% Obtain nominal values of x, y and u.
x0_final = [op_report.States(1).x; op_report.States(2).x];
y0_final = [op_report.Outputs(1).y; op_report.Outputs(2).y];
u0_final = [op_report.Inputs(1).u; op_report.Inputs(2).u; op_report.Inputs(3).u];
 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:           373      dx:      5.57e-11 (0)
(2.) mpc_cstr_plant/CSTR/Integrator1
      x:             2      dx:      -4.6e-12 (0)

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

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

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

plant_final = linearize(plant_mdl,op_point);
% Discretize the plant model
plant_final = c2d(plant_final,Ts);

Задайте типы сигнала и имена, используемые в MPC.

plant_final.InputGroup.UnmeasuredDisturbances = [1 2];
plant_final.InputGroup.ManipulatedVariables = 3;
plant_final.OutputGroup.Measured = [1 2];
plant_final.InputName = {'CAi','Ti','Tc'};
plant_final.OutputName = {'T','CA'};

Создайте линейный параметр, отличающийся система

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

lpv(:,:,1) = plant_initial;
lpv(:,:,2) = plant_intermediate;
lpv(:,:,3) = plant_final;

Задайте реакторную температуру T как параметр планирования.

lpv.SamplingGrid = struct('T',[y0_initial(1); y0_intermediate(1); y0_final(1)]);

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

lpv_u0(:,:,1) = u0_initial;
lpv_u0(:,:,2) = u0_intermediate;
lpv_u0(:,:,3) = u0_final;
lpv_y0(:,:,1) = y0_initial;
lpv_y0(:,:,2) = y0_intermediate;
lpv_y0(:,:,3) = y0_final;
lpv_x0(:,:,1) = x0_initial;
lpv_x0(:,:,2) = x0_intermediate;
lpv_x0(:,:,3) = x0_final;

Вы не должны предоставлять входной сигнал "u" блоку LPV System, потому что выходной сигнал объекта "y" не используется в этом примере.

Разработайте контроллер MPC в начальных условиях работы

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

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

mpcobj = mpc(plant_initial,Ts);
-->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_initial,'U',[0;0;u0_initial(3)],'Y',y0_initial,'DX',[0 0]);

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

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

Цель будет состоять в том, чтобы отследить заданный переход в реакторной концентрации. Реакторная температура будет измеряться и использоваться в оценке состояния, но диспетчер не попытается отрегулировать его непосредственно. Это будет отличаться по мере необходимости, чтобы отрегулировать концентрацию. Таким образом обнулите его вес MPC.

mpcobj.Weights.OV = [0 1];

Объект вводит 1, и 2 неизмеренные воздействия. По умолчанию контроллер принимает интегрированный белый шум с модульным значением в этих входных параметрах при конфигурировании средства оценки состояния. Увеличьте сигнал к шуму средства оценки состояния фактором 10, чтобы улучшать производительность подавления помех.

Dist = ss(getindist(mpcobj));
Dist.B = eye(2)*10;
setindist(mpcobj,'model',Dist);
-->The "Model.Disturbance" property of "mpc" object is empty:
   Assuming unmeasured input disturbance #1 is integrated white noise.
   Assuming unmeasured input disturbance #2 is integrated white noise.
   Assuming no disturbance added to measured output channel #2.
   Assuming no disturbance added to measured output channel #1.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

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

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

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

mdl = 'ampc_cstr_lpv';
open_system(mdl)

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

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

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

  3. Блок "LPV System" обеспечивает локальную модель объекта управления пространства состояний и ее номинальную стоимость через интерполяцию в каждом интервале управления. Модель объекта управления затем питается блок "Adaptive MPC Controller" и обновляет прогнозирующую модель, используемую контроллером MPC. В этом примере начальная модель объекта управления используется, чтобы инициализировать блок LPV System.

"Система LPV" обеспечивается Control System Toolbox. Можно использовать модель Simulink, когда шаблон, чтобы разработать собственный LPV основывал адаптивные приложения MPC.

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

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

  • Отслеживание: реакторная температура T переходы заданного значения от оригинала 311 K (низкая скорость преобразования) к 377 K (высокая скорость преобразования) kgmol/m^3. Во время перехода объект сначала становится нестабильным затем стабильный снова (см. график полюсов).

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

Моделируйте производительность с обратной связью.

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

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

bdclose(mdl)

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

Похожие темы