Этот пример показов, как использовать нелинейный контроллер MPC для управления нелинейным непрерывным реактором с баком перемешиванием (CSTR), когда он переходит от низкой скорости преобразования к высокой скорости преобразования.
Реактор с непрерывным перемешиванием бака (CSTR) является общей химической системой в технологической промышленности. Схема системы CSTR:
Эта система представляет собой неадиабатический бак реактор с оболочкой, широко описанный в [1]. Сосуд принимается идеально смешанным, и происходит одна экзотермическая и необратимая реакция первого порядка A -- > 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 кгмоль/м ^ 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 нужна оценка трех состояний (включая неизмеренное нарушением порядка состояние) на каждом шаге расчета. Чтобы предоставить эту оценку, используйте блок 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., T. F. Edgar, and D. A. Mellichamp. Динамика и управление процессами, 2-е издание, Уайли, 2004, стр. 34-36 и 94-95.
bdclose(mdl)
nlmpc
| Nonlinear MPC Controller