В этом примере показано, как спроектировать контроллер MPC для процесса смешивания с помощью пользовательских смешанных ограничений ввода/вывода.
Непрерывный процесс смешивания комбинирует три подачи в хорошо смешанном контейнере, чтобы произвести смешение, желавшее свойств. Безразмерные управляющие уравнения:
где
материально-технические ресурсы смеси (в контейнере).
уровень плуга для канала.
уровень, на котором смешение удаляется из материально-технических ресурсов, которые являются спросом.
концентрация составляющей в канале.
концентрация составляющей в смешении.
время.
В этом примере существует две важных составляющие, = 1 и 2.
Цели управления являются целями для двух составляющих концентраций в смешении и материально-технических ресурсах смеси. Проблема состоит в том, что спрос и составы канала, варьируются. Материально-технические ресурсы, составы смеси и спрос измеряются, но составы канала не измерены.
В номинальных условиях работы:
Питайтесь 1, (в основном составляющая 1) 80% общего притока.
Питайтесь 2, (в основном составляющая 2) 20%.
Питайтесь 3, (чистая составляющая 1) не используется.
Проект процесса позволяет манипуляцию общего канала, вводящего смесительную емкость и отдельные уровни подачи 2 и 3. Другими словами, уровень канала 1:
Каждый канал ограничил доступность:
Уравнения нормированы таким образом, что в номинальном устойчивом состоянии среднее время местонахождения в смесительном контейнере.
Ограничение наложено восходящим процессом, и ограничения наложены физическими пределами.
Процесс смешивания мягко нелинеен, однако можно вывести линейную модель в номинальном устойчивом состоянии. Этот подход довольно точен, если неизмеренные составы канала не изменяются. Если изменение является достаточно большим, установившиеся усиления нелинейного процесса изменяют знак, и система с обратной связью может стать нестабильной.
Задайте количество подачи, ni
, и количество составляющих, nc
.
ni = 3; nc = 2;
Определите номинальные скорости потока жидкости для трех входных потоков и потока вывода или спроса. В номинальных условиях работы выходная скорость потока жидкости равна сумме входных скоростей потока жидкости.
Fin_nom = [1.6,0.4,0]; F_nom = sum(Fin_nom);
Задайте номинальные составляющие составы для входной подачи, где cin_nom(i,j)
представляет состав составляющего i
в канале j
.
cin_nom = [0.7 0.2 0.8;0.3 0.8 0];
Задайте номинальные составляющие составы в выходном канале.
cout_nom = cin_nom*Fin_nom'/F_nom;
Нормируйте линейную модель, таким образом, что целевым спросом является 1
и составом продукта является 1
.
fin_nom = Fin_nom/F_nom; gij = [cin_nom(1,:)/cout_nom(1); cin_nom(2,:)/cout_nom(2)];
Создайте модель в пространстве состояний с потоками канала F1
, F2
, и F3
как MVS:
A = [zeros(1,nc+1); zeros(nc,1) -eye(nc)]; Bu = [ones(1,ni); gij-1];
Измените определение мВ [FT, F2, F3] где F1 = FT - F2 - F3
Bu = [Bu(:,1), Bu(:,2)-Bu(:,1), Bu(:,3)-Bu(:,1)];
Добавьте измеренное воздействие, спрос на смешение, как 4-й вход модели.
Bv = [-1; zeros(nc,1)]; B = [Bu Bv];
Задайте все состояния как измеримые. Состояния состоят из материально-технических ресурсов смеси и составляющих концентраций.
C = eye(nc+1);
Укажите, что нет никакого прямого сквозного соединения от входных параметров до выходных параметров.
D = zeros(nc+1,ni+1);
Создайте линейную модель объекта управления.
Model = ss(A,B,C,D); Model.InputName = {'F_T','F_2','F_3','F'}; Model.InputGroup.MV = 1:3; Model.InputGroup.MD = 4; Model.OutputName = {'V','c_1','c_2'};
Задайте шаг расчета, горизонт предсказания, и управляйте горизонтом для контроллера.
Ts = 0.1; p = 10; m = 3;
Создайте контроллер.
mpcobj = mpc(Model,Ts,p,m);
-->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.
Выходные параметры являются материально-техническими ресурсами, y(1)
, и составляющие концентрации, y(2)
и y(3)
. Задайте номинальную стоимость единицы после нормализации для всех выходных параметров.
mpcobj.Model.Nominal.Y = [1 1 1];
Задайте нормированную номинальную стоимость для переменных, которыми управляют, u(1)
, u(2)
и u(3)
, и измеренное воздействие, u(4)
.
mpcobj.Model.Nominal.U = [1 fin_nom(2) fin_nom(3) 1];
Задайте выходные настраивающие веса. Чтобы уделить больше внимания управлению материально-техническими ресурсами и составом первой составляющей, используйте большие веса для первых двух выходных параметров.
mpcobj.Weights.OV = [1 1 0.5];
Задайте твердые границы (физические пределы) на переменных, которыми управляют.
umin = [0 0 0]; umax = [2 0.6 0.6]; for i = 1:3 mpcobj.MV(i).Min = umin(i); mpcobj.MV(i).Max = umax(i); mpcobj.MV(i).RateMin = -0.1; mpcobj.MV(i).RateMax = 0.1; end
Общий уровень канала и уровни канала 2 и канала 3 имеют верхние границы. Питайтесь 1, также имеет верхнюю границу, определенную восходящим модулем, предоставляющим его.
Учитывая заданные верхние границы на канале 2 и 3 уровня (0.6), возможно, что их сумма могла быть целых 1.2. Поскольку номинальный общий уровень канала 1.0, контроллер может запросить физически невозможное условие, где сумма подачи 2 и 3 превышает общий уровень канала, который подразумевает отрицательный канал 1 уровень.
Следующее ограничение препятствует тому, чтобы контроллер запросил нереалистичное значение.
Задайте это ограничение в форме.
E = [-1 1 1; 1 -1 -1]; g = [0;0.8];
Поскольку никакие выходные параметры не заданы в смешанных ограничениях, обнулите их коэффициенты.
F = zeros(2,3);
Укажите, что оба ограничения трудны (ECR = 0).
v = zeros(2,1);
Задайте нулевые коэффициенты для измеренного воздействия.
h = zeros(2,1);
Установите пользовательские ограничения в контроллере MPC.
setconstraint(mpcobj,E,F,g,v,h)
Модель Simulink содержит нелинейную модель процесса смешивания и неизмеренного воздействия в составляющей 1 состав канала.
Demand
, моделируется как измеренное воздействие. Оператор может варьироваться значение спроса, и получившийся сигнал переходит к процессу и в контроллеру.
Модель симулирует следующий сценарий:
В, процесс действует в устойчивом состоянии.
В, Total Demand
уменьшения от к.
В, существует большое увеличение шага концентрации составляющей 1 в канале 1, от 1,17 до 2,17.
Откройте и симулируйте модель Simulink.
mdl = 'mpc_blendingprocess';
open_system(mdl)
sim(mdl)
-->Converting model to discrete time. Assuming no disturbance added to measured output channel #1. -->Assuming output disturbance added to measured output channel #2 is integrated white noise. -->Assuming output disturbance added to measured output channel #3 is integrated white noise. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
В симуляции:
Во время 0, объект постоянно действует при номинальных условиях.
Во время 1, уменьшения спроса на 10% и контроллер обеспечивает материально-технические ресурсы близко к его заданному значению.
Во время 2, существует большое неизмеренное увеличение концентрации составляющей 1 содержавший в канале 1. Это воздействие вызывает ошибку предсказания и большое воздействие в составе смеси.
Воздействие является нелинейным эффектом, но линейный контроллер MPC восстанавливается хорошо и отвозит состав смеси к его заданному значению
Постройте сигналы уровня канала.
figure plot(MVs.time,[MVs.signals(1).values(:,2), ... (MVs.signals(2).values + MVs.signals(3).values), ... (MVs.signals(1).values(:,2)-MVs.signals(2).values-MVs.signals(3).values)]) grid legend('FT','F2+F3','F1')
Неизмеренное воздействие происходит во время 2, который требует, чтобы контроллер уменьшил F1. Во время переходного процесса становится нулевым F1. Если бы смешанное ограничение ввода/вывода не было включено, F1 был бы отрицателен. Запросам контроллера о FT, F2 и F3 было бы невозможно удовлетворить, который приведет к ухудшению эффективности. С включенным ограничением контроллер прилагает все усилия, учитывая физические пределы системы.
bdclose(mdl)