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

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

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

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

Эта система является покрытым кожухом неадиабатическим реактором бака, описанным экстенсивно в [1]. Судно принято, чтобы быть отлично смешанным, и происходит одна экзотермическая и необратимая реакция первого порядка,-> 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 = T \; & \textnormal{Reactor temperature} [K] \\
y_2 = x_2 = CA \; & \textnormal{Concentration of A in reactor tank} [kgmol/m^3] \\
\end{array} $$

Цель управления состоит в том, чтобы обеспечить концентрацию реагента в выходном потоке $CA$в его желаемом заданном значении, которое изменяется когда реакторные переходы от низкой скорости преобразования до высокой скорости преобразования. Температура хладагента$T_c$ является переменной, которой управляют, используемой контроллером, чтобы отследить ссылку. Концентрация в потоке канала и потоковой температуре канала является измеренными воздействиями.

Модель Simulink

Чтобы запустить этот пример, Simulink® требуется.

if ~mpcchecktoolboxinstalled('simulink')
    disp('Simulink is required to run this example.')
    return
end

Открытая модель Simulink.

mdl = 'mpc_cstr_nonlinear';
open_system(mdl)

Нелинейная модель предсказания

Нелинейный MPC требует модели предсказания, которая описывает нелинейное поведение вашего объекта к вашему лучшему знанию. Чтобы бросить вызов контроллеру, этот пример намеренно вводит ошибки моделирования, таким образом, что, как повышения температуры, скорость реакции модели предсказания превышает скорость реакции истинного объекта. Для получения дополнительной информации функции состояния модели предсказания, смотрите exocstrStateFcnCT.m.

Кроме того, чтобы отклонить случайное подобное шагу неизмеренное воздействие, происходящее в концентрации в выходном потоке, модель объекта управления увеличивается с интегратором, вход которого принят, чтобы быть нулевым средним белым шумом. После увеличения модель предсказания имеет четыре состояния (T, CA и Dist) и четыре входных параметров (CA_i, T_i, T_c, WN).

Поскольку вы только интересуетесь управлением концентрацией, оставляя реактор, выходная функция возвращает скалярное значение, которое является вторым состоянием (CA) плюс третье состояние (Dist). Для получения дополнительной информации выходной функции модели предсказания, смотрите exocstrOutputFcn.m.

Нелинейный MPC

Цель управления состоит в том, чтобы переместить объект от начальной рабочей точки с низкой скоростью преобразования (CA = 8,5698 килограмм-молей/м^3) к итоговой рабочей точке с высокой скоростью преобразования (CA = 2 килограмм-моля/м^3). В итоговом устойчивом состоянии объект является разомкнутым контуром, нестабильным, потому что охлаждение более не автономно. Поэтому реакторная температура имеет тенденцию убегать из рабочей точки.

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

nlobj = nlmpc(3, 1,'MV',3,'MD',[1 2],'UD',4);

Шаг расчета модели предсказания совпадает с шагом расчета контроллера.

Ts = 0.5;
nlobj.Ts = Ts;

Чтобы уменьшать вычислительное усилие, используйте короткий горизонт предсказания 3 секунд (6 шагов). Кроме того, чтобы увеличить робастность, используйте перемещения блока в горизонте управления.

nlobj.PredictionHorizon = 6;
nlobj.ControlHorizon = [2 2 2];

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

nlobj.MV(1).ScaleFactor = 300;

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

nlobj.MV(1).RateMin = -5;
nlobj.MV(1).RateMax = 5;

Это - хорошая практика, чтобы масштабировать состояние, чтобы быть модульного порядка. Выполнение так не оказывает влияния на стратегию управления, но это может улучшить числовое поведение.

nlobj.States(1).ScaleFactor = 300;
nlobj.States(2).ScaleFactor = 10;

Задайте нелинейные и выходные функции состояния.

nlobj.Model.StateFcn = 'exocstrStateFcnCT';
nlobj.Model.OutputFcn = 'exocstrOutputFcn';

Это - лучшая практика протестировать вашу модель предсказания и любые другие пользовательские функции перед использованием их в симуляции. Для этого используйте validateFcns команда. В этом случае используйте начальную рабочую точку в качестве номинального условия для тестирования, устанавливая неизмеренное состояние воздействия на 0.

x0 = [311.2639; 8.5698; 0];
u0 = [10; 298.15; 298.15];
validateFcns(nlobj,x0,u0(3),u0(1:2)');
Model.StateFcn is OK.
Model.OutputFcn is OK.
Analysis of user-provided model, cost, and constraint functions complete.

Нелинейная оценка состояния

Нелинейному контроллеру MPC нужна оценка трех состояний (включая неизмеренное состояние воздействия) в каждом шаге расчета. Чтобы обеспечить эту оценку, используйте блок Extended Kalman Filter (EKF). Этот блок использует ту же модель в качестве нелинейного контроллера MPC за исключением того, что модель является дискретным временем. Для получения дополнительной информации смотрите exocstrStateFcnDT.m.

EKF измеряет текущую концентрацию и использует ее, чтобы откорректировать предсказание от предыдущего интервала. В этом примере примите, что измерения относительно точны и используют маленькую ковариацию в блоке Extended Kalman Filter.

Симуляция с обратной связью

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

Во время перехода рабочей точки ступенчатые изменения в двух измеренных каналах воздействия происходят в 10 и 20 секунды, соответственно. Во время 40, неизмеренное выходное воздействие (ступенчатое изменение в концентрации реакторного выхода) происходит также.

open_system([mdl, '/Concentration (OV)'])
open_system([mdl, '/Coolant Temp (MV)'])
sim(mdl)

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

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

Ссылки

[1] Seborg, D. E. Т. Ф. Эдгар и Д. А. Мелличамп. Динамика процесса и Управление, 2-й Выпуск, Вайли, 2004, стр 34-36 и 94-95.

bdclose(mdl)

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

|

Похожие темы