Этот пример показывает, как использовать нелинейный контроллер MPC, чтобы управлять нелинейным непрерывным реактором смесителя (CSTR), когда он переходит от низкой скорости преобразования до высокой скорости преобразования.
Непрерывный реактор смесителя (CSTR) является общей химической системой в перерабатывающей промышленности. Схематическая из системы CSTR:
Эта система является покрытым кожухом неадиабатическим реактором корпуса, описанным экстенсивно в [1]. Судно принято, чтобы быть отлично смешанным, и происходит одна экзотермическая и необратимая реакция первого порядка,-> B. Входной поток реагента A питается корпус на постоянном объемном уровне. Поток продукта выходит постоянно на том же объемном уровне, и жидкая плотность является постоянной. Таким образом объем реагирующей жидкости в реакторе является постоянным.
Входные параметры модели CSTR:
Выходные параметры (y (t)), которые являются также состояниями модели (x (t)):
Цель управления состоит в том, чтобы поддержать концентрацию реагента в выходном потоке в его желаемом заданном значении, которое изменяется когда реакторные переходы от низкой скорости преобразования до высокой скорости преобразования. Температура хладагента является переменной, которой управляют, используемой контроллером, чтобы отследить ссылку. Концентрация в потоке канала и потоковой температуре канала является измеренными воздействиями.
Чтобы запустить этот пример, 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 kgmol/m^3) к итоговой рабочей точке с высокой скоростью преобразования (CA = 2 kgmol/m^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)
Нелинейный контроллер MPC | nlmpc