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

Эта система является неадиабатическим резервуарным реактором с рубашкой, подробно описанным в [1]. Предполагается, что сосуд идеально перемешан, и происходит одна экзотермическая и необратимая реакция первого порядка A - > B. Входной поток реагента А подается в резервуар с постоянной объемной скоростью. Поток продукта непрерывно выходит с одинаковой объемной скоростью, и плотность жидкости постоянна. Таким образом, объем реагирующей жидкости в реакторе является постоянным.
Входными данными модели 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} $$](../../examples/mpc/win64/NonlinearMPCExothermicCSTRExample_eq18355773505528335414.png)
Выходами (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} $$](../../examples/mpc/win64/NonlinearMPCExothermicCSTRExample_eq13335163710898019622.png)
Задача управления заключается в поддержании концентрации реагента А в выходящем потоке
при его желательной уставке, которая изменяется при переходе реактора от низкой степени превращения к высокой скорости превращения. Температура хладагента
- это управляемая переменная, используемая контроллером для отслеживания эталона. Концентрация А в потоке сырья и температура потока сырья являются измеренными возмущениями.
Для выполнения этого примера необходимо приложение 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.
Целью контроля является перемещение установки из начальной рабочей точки с низкой скоростью конверсии (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];
Поскольку величина MV составляет порядка 300, а OV - порядка 1, масштабируйте MV, чтобы сделать их совместимыми так, чтобы можно было использовать веса настройки по умолчанию.
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 нуждается в оценке трех состояний (включая состояние неизмеренного возмущения) в каждый момент времени выборки. Для получения этой оценки используйте блок расширенного фильтра Калмана (EKF). Этот блок использует ту же модель, что и нелинейный контроллер MPC, за исключением того, что модель является дискретной. Для получения более подробной информации см. exocstrStateFcnDT.m.
EKF измеряет текущую концентрацию и использует ее для корректировки прогноза из предыдущего интервала. В этом примере предположим, что измерения являются относительно точными и используют малую ковариацию в блоке расширенного фильтра Калмана.
При моделировании вместо резкого изменения шага увеличьте целевую концентрацию. Можно использовать гораздо более высокую скорость изменения, поскольку используется модель нелинейного прогнозирования.
При переходе рабочей точки ступенчатые изменения в двух измеренных каналах возмущения происходят при 10 и 20 секунд, соответственно. В момент времени 40также имеет место неизмеренное выходное возмущение (ступенчатое изменение концентрации выхода из реактора).
open_system([mdl, '/Concentration (OV)']) open_system([mdl, '/Coolant Temp (MV)']) sim(mdl)


Концентрация в выходном потоке точно отслеживает его эталон и сходится к желаемому конечному значению. Кроме того, контроллер отклоняет как измеренные возмущения, так и неизмеренные возмущения.
Начальные перемещения регулятора ограничены максимальной скоростью изменения температуры хладагента. Это может быть улучшено путем обеспечения контроллера MPC опорным сигналом с опережением, который информирует контроллер об ожидаемом изменении опорного сигнала на горизонте прогнозирования.
[1] Себорг, Д. Э., Т. Ф. Эдгар и Д. А. Мелликамп. Process Dynamics and Control, 2-е издание, Уайли, 2004, стр. 34-36 и 94-95.
bdclose(mdl)
nlmpc | Нелинейный контроллер MPC