Нелинейный процесс смешивания с пользовательскими ограничениями

Этот пример показывает, как использовать ограничения на комбинацию вводов и выводов, чтобы управлять нелинейным процессом смешивания.

О процессе смешивания

Непрерывный процесс смешивания комбинирует три потока в хорошо смешанном судне, чтобы произвести смешение с желаемыми свойствами. Эти свойства зависят от концентраций двух ключевых составляющих:

  • Питайте уровни

  • Материально-технические ресурсы материалов в смешивающемся судне.

Позвольте уровням канала быть F1, F2, и F3 и общим FT = F1 + F2 + F3. Настройка объекта позволяет F2, F3 и FT управляться независимо. Поэтому F1 = FT - F2 - F3 определяется различием.

Цель управления состоит в том, чтобы настроить уровни канала в порядке сохранить концентрации в судне около целевых значений. Контроллер MPC должен также управлять общими материально-техническими ресурсами материала в смешивающемся судне.

Процесс действует при следующих ограничениях:

  • Физические ограничения требуют 0 <= FT <= 2 и 0 <= F2, F3 <= 0.6.

  • Каждый канал ограничил доступность. Для F2 и F3, максимальная доступность равняется физическому пределу 0.6. Для F1 максимальная доступность 0,8 наложена восходящим процессом.

Во время операции важно препятствовать тому, чтобы контроллер запросил FT < F2 + F3, который подразумевает F1 < 0, который невозможен. Точно так же FT > F2 + F3 + 0.8, подразумевая F1 > 0.8 нужно также избежать. Это может быть выполнено с помощью контроллера MPC со смешанным ограничением (ограничения на комбинации ввода и вывода).

Системные воздействия включают потоковые составы канала и спрос на смешанный материал, F, заданный как уровень, на котором материал оставляет смешивающееся судно. Это установлено нисходящим процессом. С точки зрения процесса смешивания F является измеренным воздействием. Питайтесь воздействия состава не измерены.

Измерения, доступные для управления с обратной связью, включают составляющие концентрации в судно и материально-технические ресурсы смешения.

Задайте линейную модель для процесса смешивания

Создайте линейную аппроксимацию - модель в пространстве состояний на основе номинальной рабочей точки:

ni = 3;                     % number of feed streams
nc = 2;                     % number of components
Fin_nom = [1.6, 0.4, 0];    % Nominal flow rate for the ith feed stream
F_nom  = sum(Fin_nom);      % Nominal flow rate for the exit stream (demand)
cin_nom = [0.7 0.2 0.8      % Nominal composition for jth constituent in the ith feed flow
           0.3 0.8   0];
cout_nom = cin_nom*Fin_nom'/F_nom;  % Nominal product composition

Нормируйте линейную модель, таким образом, что целевой спрос равняется 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];
% Change MV definition to [FT, F2, F3] where F1 = FT - F2 - F3
Bu = [Bu(:,1), Bu(:,2)-Bu(:,1), Bu(:,3)-Bu(:,1)];
% Add the blend demand as the 4th model input, a measured disturbance
Bv = [-1
      zeros(nc,1)];
B = [Bu Bv];
% All the states (inventory and compositions) are measurable
C = eye(nc+1);
% No direct feed-through term
D = zeros(nc+1,ni+1);
% Construct the plant model
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'};

Разработайте контроллер MPC

Создайте объект контроллера с выборкой периода, прогноза и управляйте горизонтами:

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];

Переменными, которыми управляют, является u1 = FT, u2 = F2, u3 = F3. Задайте номинальную стоимость после нормализации:

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

Задайте смешанные ограничения

Наложите следующие ограничения на систему управления:

  • Физическое ограничение F1 = FT - F2 - F3 >= 0.

  • Ограничение доступности, F1 <= 0.8.

Помещая их в стандартную форму, вы получаете:

-FT + F2 + F3 <= 0 FT - F2 - F3 <= 0.8

Это задает входную ограничительную матрицу коэффициентов:

E = [-1 1 1; 1 -1 -1];

Никакие выходные параметры не заданы в смешанных ограничениях, таким образом, обнуляет их коэффициенты:

F = zeros(2,3);

Задайте вектор g в E*u + F*y <= g:

g = [0; 0.8];

Укажите, что оба ограничения трудны (ECR = 0):

v = zeros(2,1);

Задайте нулевые коэффициенты для измеренного воздействия:

h = zeros(2,1);

Включайте смешанные ограничения в объект контроллера:

setconstraint(mpcobj, E, F, g, v, h);

Моделируйте Используя Simulink®

Чтобы запустить этот пример, Simulink® требуется.

if ~mpcchecktoolboxinstalled('simulink')
    disp('Simulink(R) is required to run this example.')
    return
end

Откройте и моделируйте модель 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% (с 1 до 0,9).

  • Во время 2, существует большое (неизмеренное) увеличение концентрации составляющей 1 содержавший в канале 1. Это - нелинейный эффект, но линейный MPC компенсирует хорошо (целевые значения 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')

График показывает:

  • Когда спрос понижается, воздействие состава требует, чтобы F1 был уменьшен. Во время переходного процесса F1 становится нулем. Если бы смешанное ограничение не было включено, оно пошло бы отрицательное, т.е. запросы диспетчера о FT, F2, и F3 будет невозможно удовлетворить, вызывая ухудшение производительности. С включенным ограничением контроллер прилагает все усилия, учитывая физические пределы.

  • Ограничение доступности F1 <= 0.8 сохраняется в любом случае.

bdclose(mdl)

Смотрите также

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте