В этом примере показано, как спроектировать контроллер для процесса смешения с помощью пользовательских смешанных входных/выходных ограничений.
Непрерывный процесс смешивания объединяет три сырья в хорошо смешанном контейнере с получением смеси, имеющей желаемые свойства. Безразмерные управляющие уравнения:
где
- запас смеси (в контейнере).
- скорость плуга для корма.
- скорость удаления смеси из запаса, т.е. потребность.
- концентрация составляющей в корме.
- концентрация составляющей в смеси.
время.
В этом примере существует два важных компонента, = 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
как СН:
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.
The 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)