Этот пример показывает, как разработать контроллер MPC для процесса смешивания с помощью пользовательских ограничений ввода и вывода.
Непрерывный процесс смешивания комбинирует три подачи в хорошо смешанном контейнере, чтобы произвести смешение, желавшее свойств. Безразмерные управляющие уравнения:
где
материально-технические ресурсы смеси (в контейнере).
уровень плуга для канала ith.
уровень, на котором смешение удаляется из материально-технических ресурсов, которые являются спросом.
концентрация составляющей в канале.
концентрация составляющей в смешении.
время.
В этом примере существует две важных составляющие, = 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)
sys = 'mpc_blendingprocess';
open_system(sys)
sim(sys)
-->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.
Контроллер MPC управляет процессом смешивания. Блок маркировал Blending
, включает ранее описанные образцовые уравнения и включает неизмеренное воздействие шага в составляющую 1 состав канала.
Demand
, моделируется как измеренное воздействие. Оператор может отличаться значение спроса, и получившийся сигнал переходит к процессу и в контроллеру.
Модель моделирует следующий сценарий:
В, процесс действует в устойчивом состоянии.
В, Total Demand
уменьшается с к.
В, существует большое увеличение шага концентрации составляющей 1 в канале 1, от 1,17 до 2,17.
Контроллер поддерживает материально-технические ресурсы очень близко к его заданному значению, но серьезное воздействие в составе канала вызывает ошибку прогноза и большое воздействие в составе смеси, специально для составляющей 1, c_1
. Однако контроллер восстанавливает и отвозит состав смеси к его заданному значению.
Постройте сигналы уровня канала.
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')
Общий уровень канала, FT
и сумма уровней канала F2
и F3
совпадают для. Если бы пользовательские входные ограничения не были включены, контроллер запросил бы невозможный отрицательный канал 1 уровень, F1
, в этот период.
bdclose(sys)