exponenta event banner

Управление ПДК с переменным временем установки с изменяющимся временем

В этом примере показано, как Toolbox™ модельного прогнозирующего управления может использовать изменяющиеся во времени модели прогнозирования для достижения более высокой производительности при управлении изменяющимся во времени растением.

Сравниваются следующие контроллеры MPC:

  1. Линейный контроллер MPC на основе инвариантной по времени средней модели

  2. Линейный контроллер MPC на основе инвариантной по времени модели, которая обновляется на каждом временном шаге.

  3. Линейный контроллер MPC на основе изменяющейся во времени модели прогнозирования.

Линейная установка, изменяющаяся во времени

В этом примере установка представляет собой линейную систему с переменным во времени одним входом-одним выходом 3-го порядка с полюсами, нулями и коэффициентом усиления, которые периодически изменяются во времени.

$$G = \frac{{5s + 5 + 2\cos \left( {2.5t} \right)}}{{{s^3}
 + 3{s^2} + 2s + 6 + \sin \left( {5t} \right)}}$$

Столбы растений перемещаются между стабильными и нестабильными во время работы, что приводит к сложной проблеме управления.

Создание массива моделей завода в t = 0, 0.1, 0.2,..., 10 секунд.

Models = tf;
ct = 1;
for t = 0:0.1:10
    Models(:,:,ct) = tf([5 5+2*cos(2.5*t)],[1 3 2 6+sin(5*t)]);
    ct = ct + 1;
end

Преобразуйте модели в формат state-space и дискретизируйте их с временем выборки 0,1 секунды.

Ts = 0.1;
Models = ss(c2d(Models,Ts));

Проектирование контроллера MPC

Задача управления состоит в отслеживании шагового изменения опорного сигнала. Во-первых, разработать контроллер MPC для средней модели установки. Время выборки контроллера составляет 0,1 секунды.

sys = ss(c2d(tf([5 5],[1 3 2 6]),Ts));  % prediction model
p = 3;                                  % prediction horizon
m = 3;                                  % control horizon
mpcobj = mpc(sys,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.

Установите жесткие ограничения на управляемую переменную и задайте веса настройки.

mpcobj.MV = struct('Min',-2,'Max',2);
mpcobj.Weights = struct('MV',0,'MVRate',0.01,'Output',1);

Установите начальное состояние установки равным нулю.

x0 = zeros(size(sys.B));

Моделирование по замкнутому контуру с неявным MPC

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

Установите продолжительность моделирования в 5 секунд.

Tstop = 5;

Используйте mpcmove команда в цикле для моделирования реакции замкнутого цикла.

yyMPC = [];
uuMPC = [];
x = x0;
xmpc = mpcstate(mpcobj);
fprintf('Simulating MPC controller based on average LTI model.\n');
for ct = 1:(Tstop/Ts+1)
    % Get the real plant.
    real_plant = Models(:,:,ct);
    % Update and store the plant output.
    y = real_plant.C*x;
    yyMPC = [yyMPC,y];
    % Compute and store the MPC optimal move.
    u = mpcmove(mpcobj,xmpc,y,1);
    uuMPC = [uuMPC,u];
    % Update the plant state.
    x = real_plant.A*x + real_plant.B*u;
end
-->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.
Simulating MPC controller based on average LTI model.

Моделирование по замкнутому контуру с адаптивным MPC

Выполните второе моделирование, чтобы проверить, может ли адаптивный контроллер MPC достичь цели управления.

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

yyAMPC = [];
uuAMPC = [];
x = x0;
xmpc = mpcstate(mpcobj);
nominal = mpcobj.Model.Nominal;
fprintf('Simulating MPC controller based on LTI model, updated at each time step t.\n');
for ct = 1:(Tstop/Ts+1)
    % Get the real plant.
    real_plant = Models(:,:,ct);
    % Update and store the plant output.
    y = real_plant.C*x;
    yyAMPC = [yyAMPC, y];
    % Compute and store the MPC optimal move.
    u = mpcmoveAdaptive(mpcobj,xmpc,real_plant,nominal,y,1);
    uuAMPC = [uuAMPC,u];
    % Update the plant state.
    x = real_plant.A*x + real_plant.B*u;
end
Simulating MPC controller based on LTI model, updated at each time step t.

Моделирование по замкнутому контуру с переменным во времени MPC

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

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

Используйте mpcmoveAdaptive команда в цикле для моделирования реакции замкнутого цикла. Укажите массив моделей завода, а не одну модель. Контроллер использует каждую модель в массиве на разных этапах горизонта прогнозирования.

yyLTVMPC = [];
uuLTVMPC = [];
x = x0;
xmpc = mpcstate(mpcobj);
Nominals = repmat(nominal,3,1); % Nominal conditions are constant over the prediction horizon.
fprintf('Simulating MPC controller based on time-varying model, updated at each time step t.\n');
for ct = 1:(Tstop/Ts+1)
    % Get the real plant.
    real_plant = Models(:,:,ct);
    % Update and store the plant output.
    y = real_plant.C*x;
    yyLTVMPC = [yyLTVMPC, y];
    % Compute and store the MPC optimal move.
    u = mpcmoveAdaptive(mpcobj,xmpc,Models(:,:,ct:ct+p),Nominals,y,1);
    uuLTVMPC = [uuLTVMPC,u];
    % Update the plant state.
    x = real_plant.A*x + real_plant.B*u;
end
Simulating MPC controller based on time-varying model, updated at each time step t.

Сравнение производительности контроллеров MPC

Сравните отклики с замкнутым контуром.

t = 0:Ts:Tstop;
figure
subplot(2,1,1);
plot(t,yyMPC,'-.',t,yyAMPC,'--',t,yyLTVMPC);
grid
legend('Implicit MPC','Adaptive MPC','Time-Varying MPC','Location','SouthEast')
title('Plant Output');
subplot(2,1,2)
plot(t,uuMPC,'-.',t,uuAMPC,'--',t,uuLTVMPC)
grid
title('Control Moves');

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

Моделирование с замкнутым контуром изменяющегося во времени MPC в Simulink

Для моделирования изменяющегося во времени управления MPC в Simulink передайте изменяющиеся во времени модели завода в model вход блока адаптивного контроллера MPC.

xmpc = mpcstate(mpcobj);
mdl = 'mpc_timevarying';
open_system(mdl);

Запустите моделирование.

sim(mdl,Tstop);
fprintf('Simulating MPC controller based on LTV model in Simulink.\n');
Simulating MPC controller based on LTV model in Simulink.

Постройте график изменяющихся во времени результатов моделирования MATLAB и Simulink.

figure
subplot(2,1,1)
plot(t,yyLTVMPC,t,ysim,'o');
grid
legend('mpcmoveAdaptive','Simulink','Location','SouthEast')
title('Plant Output');
subplot(2,1,2)
plot(t,uuLTVMPC,t,usim,'o')
grid
title('Control Moves');

Отклики с замкнутым контуром в MATLAB и Simulink идентичны.

bdclose(mdl);

См. также

|

Связанные темы