exponenta event banner

Изменение границ ввода и вывода во время выполнения

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

Дополнительные сведения об обновлении линейных ограничений во время выполнения см. в разделе Обновление ограничений во время выполнения.

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

Определение установки дискретного времени SISO с временем выборки Ts.

Ts = 0.1;
plant = c2d(tf(1,[1 .8 3]),Ts);
[A,B,C,D] = ssdata(plant);

Создайте контроллер MPC с указанным горизонтом прогнозирования, p, горизонт управления, cи время выборки, Ts. Использовать plant в качестве внутренней модели прогнозирования.

p = 10;
m = 4;
mpcobj = mpc(plant,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.Weights.MV = 0;
mpcobj.Weights.MVrate = 0.5;
mpcobj.Weights.OV = 1;

В этом примере верхняя и нижняя границы управляемой переменной и верхняя граница выходной переменной изменяются во время выполнения. Для этого необходимо сначала определить начальные фиктивные конечные значения для этих ограничений в объекте контроллера MPC. Укажите значения для MV.Min, MV.Max, и OV.Max.

Во время выполнения эти ограничения изменяются с помощью mpcmoveopt объект в командной строке или соответствующие входные сигналы в блок контроллера MPC.

mpcobj.MV.Min = 1;
mpcobj.MV.Max = 1;
mpcobj.OV.Max = 1;

Моделирование модели с помощью Simulink

Открыть модель Simulink.

mdl = 'mpc_varbounds';
open_system(mdl)

В этой модели входной минимальный и максимальный порты ограничения (umin и umaxи выходной порт максимального ограничения (ymax) блока контроллера MPC включены. Поскольку минимальная выходная граница не ограничена, ymin входной порт отключен.

Сконфигурируйте выходную уставку, refи продолжительность моделирования, Tsim.

ref = 1;
Tsim = 20;

Выполните моделирование и просмотрите входные и выходные ответы в области ввода-вывода.

sim(mdl)
open_system([mdl '/I//O'])
-->Converting the "Model.Plant" property of "mpc" object to state-space.
-->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.

Моделирование модели в командной строке

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

x = zeros(size(B,1),1);
xmpc = mpcstate(mpcobj);

Сохранение в массивах выходных данных замкнутого цикла, управляемой переменной и траекторий состояния MPC-контроллера YY, UU, и XXсоответственно.

YY = [];
UU = [];
XX = [];

Создание mpcmoveopt объект для указания значений, связанных со временем выполнения.

options = mpcmoveopt;

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

for t = 0:round(Tsim/Ts)
    % Store the plant state.
    XX = [XX; x];

    % Compute and store the plant output. There is no direct feedthrough
    % from the input to the output.
    y = C*x;
    YY = [YY; y'];

    % Get the reference signal value from the data output by the Simulink
    % simulation.
    ref = yout.Data(t+1,2);

    % Update the input and output bounds. For consistency, use the
    % constraint values output by the Simulink simulation.
    options.MVMin = uout.Data(t+1,2);
    options.MVMax = uout.Data(t+1,3);
    options.OutputMax = yout.Data(t+1,3);

    % Compute the MPC control action.
    u = mpcmove(mpcobj,xmpc,y,ref,[],options);

    % Update the plant state and store the input signal value.
    x = A*x + B*u;
    UU = [UU; u'];
end

Сравнение результатов моделирования

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

figure
subplot(1,2,1)
plot(0:Ts:Tsim,[UU uout.Data(:,1) uout.Data(:,2) uout.Data(:,3)])
grid
title('Input')
legend('Command-line input','Simulink input','Lower bound',...
    'Upper bound','Location','Southeast')
subplot(1,2,2)
plot(0:Ts:Tsim,[YY yout.Data(:,1) yout.Data(:,3)])
grid
title('Output')
legend('Command-line output','Simulink output','Upper bound',...
    'Location','Southeast')

Результаты моделирования командной строки и Simulink одинаковы. Контроллер MPC поддерживает входные и выходные сигналы в заданных пределах по мере изменения ограничений в процессе моделирования.

bdclose(mdl)

См. также

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