В этом примере показано, как использовать Адаптивный контроллер MPC, чтобы управлять нелинейным непрерывным реактором смесителя (CSTR), когда он переходит от низкой скорости преобразования до высокой скорости преобразования.
Модель ARX дискретного времени идентифицируется онлайн блоком Recursive Polynomial Model Estimator в каждом контрольном интервале. Адаптивный диспетчер MPC использует его, чтобы обновить внутреннюю модель объекта управления и достигает нелинейного управления успешно.
Постоянно реактор смесителя (CSTR) является общей химической системой в перерабатывающей промышленности. Схематическая из системы CSTR:
Это - покрытый кожухом неадиабатический реактор бака, описанный экстенсивно в книге Себорга, "Динамика процесса и Управление", опубликованный Вайли, 2004. Судно принято, чтобы быть отлично смешанным, и происходит одна экзотермическая и необратимая реакция первого порядка,-> B. Входной поток реагента A питается бак на постоянном объемном уровне. Поток продукта выходит постоянно на том же объемном уровне, и жидкая плотность является постоянной. Таким образом объем реагирующей жидкости является постоянным.
Входные параметры модели CSTR:
и выходные параметры (y (t)), которые являются также состояниями модели (x (t)):
Цель управления состоит в том, чтобы обеспечить реакторную температуру в своем желаемом заданном значении, которое изменяется в зависимости от времени когда реакторные переходы от низкой скорости преобразования до высокой скорости преобразования. Температура хладагента является переменной, которой управляют, используемой контроллером MPC, чтобы отследить ссылку, а также отклонить измеренное воздействие, являющееся результатом входной потоковой температуры канала. Входная потоковая концентрация канала, принят постоянным. Модель Simulink mpc_cstr_plant
реализует нелинейный объект CSTR. Для получения дополнительной информации о реакторе CSTR и связанных примерах, см. Модель CSTR.
Известно, что движущие силы CSTR строго нелинейны относительно реакторных температурных изменений и могут быть разомкнутым контуром, нестабильным во время перехода от условий работы до другого. Один контроллер MPC, спроектированный в особых условиях работы, не может дать удовлетворительную эффективность управления в широком рабочем диапазоне.
Чтобы управлять нелинейным объектом CSTR с линейным методом MPC управления, у вас есть несколько опций:
Если линейная модель объекта управления не может быть получена во время выполнения, сначала необходимо получить несколько линейных моделей объекта управления оффлайн в различных условиях работы, которые покрывают типичный рабочий диапазон. Затем можно выбрать один из двух подходов, чтобы реализовать стратегию MPC управления:
(1) Спроектируйте несколько контроллеров MPC оффлайн, один для каждой модели объекта управления. Во время выполнения используйте блок Multiple MPC Controller, который переключает контроллеры MPC от одного до другого на основе желаемой стратегии планирования. Смотрите Запланированное на усиление MPC управление Нелинейным Химическим Реактором для получения дополнительной информации. Используйте этот подход, когда модели объекта управления будут иметь различные порядки или задержки.
(2) Спроектируйте один контроллер MPC оффлайн в начальной рабочей точке. Во время выполнения используйте блок Adaptive MPC Controller (обновляющий прогнозную модель в каждом контрольном интервале) вместе с блоком Linear Parameter Varying (LPV) System (предоставляющий линейную модель объекта управления стратегию планирования). Смотрите Адаптивное MPC управление Нелинейным Химическим Реактором Используя Линейную Варьирующуюся по параметру Систему для получения дополнительной информации. Используйте этот подход, когда все модели объекта управления будут иметь тот же порядок и задержку.
Если линейная модель объекта управления может быть получена во время выполнения, необходимо использовать блок Adaptive MPC Controller, чтобы достигнуть нелинейного управления. Существует два типичных способа получить линейную модель объекта управления онлайн:
(1) Используйте последовательную линеаризацию. Смотрите Адаптивное MPC управление Нелинейным Химическим Реактором Используя Последовательную Линеаризацию для получения дополнительной информации. Используйте этот подход, когда нелинейная модель объекта управления будет доступна и сможет линеаризоваться во время выполнения.
(2) Используйте онлайновую оценку, чтобы идентифицировать линейную модель, когда круг будет замкнут, как показано в этом примере. Используйте этот подход, когда линейная модель объекта управления не сможет быть получена или из системы LPV или из последовательной линеаризации.
Чтобы реализовать адаптивный контроллер MPC, сначала необходимо спроектировать контроллер MPC в начальной рабочей точке, где СТОИМОСТЬ И СТРАХОВАНИЕ составляет 10 килограмм-молей/м^3, Ti и Tc являются 298.15 K.
Создайте спецификацию рабочей точки.
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);
Operating point search report: --------------------------------- opreport = 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: ---------- <strong>Min</strong> <strong>x</strong> <strong>Max</strong> <strong>dxMin</strong> <strong>dx</strong> <strong>dxMax</strong> <strong>___</strong> <strong>______</strong> <strong>___</strong> <strong>_____</strong> <strong>___________</strong> <strong>_____</strong> (1.) mpc_cstr_plant/CSTR/Integrator 0 311.26 Inf 0 8.1176e-11 0 (2.) mpc_cstr_plant/CSTR/Integrator1 0 8.5698 Inf 0 -6.8709e-12 0 Inputs: ---------- <strong>Min</strong> <strong>u</strong> <strong>Max</strong> <strong>______</strong> <strong>______</strong> <strong>______</strong> (1.) mpc_cstr_plant/CAi 10 10 10 (2.) mpc_cstr_plant/Ti 298.15 298.15 298.15 (3.) mpc_cstr_plant/Tc 298.15 298.15 298.15 Outputs: ---------- <strong>Min</strong> <strong>y</strong> <strong>Max</strong> <strong>____</strong> <strong>______</strong> <strong>___</strong> (1.) mpc_cstr_plant/T -Inf 311.26 Inf (2.) mpc_cstr_plant/CA -Inf 8.5698 Inf
Получите номинальную стоимость x, y и u.
x0 = [op_report.States(1).x;op_report.States(2).x]; y0 = [op_report.Outputs(1).y;op_report.Outputs(2).y]; u0 = [op_report.Inputs(1).u;op_report.Inputs(2).u;op_report.Inputs(3).u];
Получите линейную модель объекта управления при начальном условии.
sys = linearize(plant_mdl, op_point);
Пропустите первый вход CAi объекта и второй выход CA, потому что они не используются MPC.
sys = sys(1,2:3);
Дискретизируйте модель объекта управления, потому что Адаптивный контроллер MPC только принимает модель объекта управления дискретного времени.
Ts = 0.5; plant = c2d(sys,Ts);
Вы проектируете MPC в начальных условиях работы. При выполнении в адаптивном режиме модель объекта управления обновляется во время выполнения.
Задайте типы сигнала, используемые в MPC.
plant.InputGroup.MeasuredDisturbances = 1; plant.InputGroup.ManipulatedVariables = 2; plant.OutputGroup.Measured = 1; plant.InputName = {'Ti','Tc'}; plant.OutputName = {'T'};
Создайте контроллер MPC с предсказанием по умолчанию и управляйте горизонтами
mpcobj = mpc(plant);
-->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.
Установите номинальные значения в контроллере
mpcobj.Model.Nominal = struct('X', x0, 'U', u0(2:3), 'Y', y0(1), 'DX', [0 0]);
Установите масштабные коэффициенты, потому что сигналы ввода и вывода объекта имеют различные порядки величины
Uscale = [30 50]; Yscale = 50; mpcobj.DV.ScaleFactor = Uscale(1); mpcobj.MV.ScaleFactor = Uscale(2); mpcobj.OV.ScaleFactor = Yscale;
Из-за физического ограничения конверта хладагента, скорость изменения Tc ограничена 2 градусами в минуту.
mpcobj.MV.RateMin = -2; mpcobj.MV.RateMax = 2;
Реакторной концентрацией непосредственно не управляют в этом примере. Если реакторная температура может успешно контролироваться, концентрация достигнет желаемого требования к производительности из-за сильной связи между этими двумя переменными.
Чтобы запустить этот пример с онлайновой оценкой, программное обеспечение System Identification Toolbox™ требуется.
if ~mpcchecktoolboxinstalled('ident') disp('System Identification Toolbox(TM) is required to run this example.') return end
Откройте модель Simulink.
mdl = 'ampc_cstr_estimation';
open_system(mdl);
Модель включает три части:
Блок "CSTR" реализует нелинейную модель объекта управления.
Блок "Adaptive MPC Controller" запускает спроектированный контроллер MPC в адаптивном режиме.
Блок "Recursive Polynomial Model Estimator" оценивает 2D вход (Ti и Tc) и (T) ARX дискретного времени с одним выходом, основанный на модели на измеренных температурах. Предполагаемая модель затем преобразуется в форму пространства состояний блоком "Model Type Converter" и питается блок "Adaptive MPC Controller" в каждом контрольном интервале.
В этом примере начальная модель объекта управления используется, чтобы инициализировать онлайновое средство оценки набором ковариационной матрицы параметра к 1. Онлайновым методом оценки является "Фильтр Калмана" с шумовым набором ковариационной матрицы к 0,01. Онлайновый результат оценки чувствителен к этим параметрам, и можно далее настроить их, чтобы достигнуть лучшего результата оценки.
И "Рекурсивное Средство оценки Полиномиальной модели" и "Конвертер Типа модели" обеспечиваются System Identification Toolbox. Можно использовать два блока в качестве шаблона, чтобы разработать соответствующую онлайновую оценку модели для собственных приложений.
Начальное значение (q) и B (q) переменные заполняется с числителем и знаменателем начальной модели объекта управления.
[num, den] = tfdata(plant); Aq = den{1}; Bq = num;
Обратите внимание на то, что новая линейная модель объекта управления должна быть системой пространства состояний дискретного времени с тем же порядком и шагом расчета, как исходная модель объекта управления имеет. Если объект имеет задержку, это должно также быть то же самое как исходная задержка и поглощенный в модель в пространстве состояний.
Эффективность контроллера подтверждена и против отслеживания заданного значения и против подавления помех.
Отслеживание: реакторная температура T переходы заданного значения от оригинала 311 K (низкая скорость преобразования) к 377 K (высокая скорость преобразования) kgmol/m^3.
Регулирование: питайтесь температурный Ti имеет медленное колебание, представленное синусоидой амплитудой 5 градусов, которая является измеренным воздействием, питаемым контроллер MPC.
Симулируйте эффективность с обратной связью.
open_system([mdl '/Concentration']) open_system([mdl '/Temperature']) sim(mdl)
-->Assuming output disturbance added to measured output channel #1 is integrated white noise. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
Отслеживание и регулирование эффективности являются очень удовлетворительными.
Адаптивный MPC обеспечивает превосходящую эффективность управления, чем неадаптивный MPC. Чтобы проиллюстрировать этот тезис, эффективность управления того же контроллера MPC, запускающегося в неадаптивном режиме, показывают ниже. Контроллер реализован с блоком MPC Controller.
mdl1 = 'ampc_cstr_no_estimation'; open_system(mdl1) open_system([mdl1 '/Concentration']) open_system([mdl1 '/Temperature']) sim(mdl1)
Как ожидалось отслеживание и регулирование эффективности недопустимы.
bdclose(mdl) bdclose(mdl1)