exponenta event banner

Понимание поведения управления путем изучения оптимальной последовательности управления

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

Установка является двойным интегратором, подверженным насыщению ввода.

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

Базовая настройка контроллера MPC включает в себя:

  • Двойной интегратор в качестве модели прогнозирования

  • Горизонт прогнозирования 20

  • Горизонт управления 10

  • Ограничения ввода -1 <= u(t) <= 1

Сконфигурируйте контроллер MPC.

Ts = 0.1;
p = 20;
m = 10;
mpcobj = mpc(tf(1,[1 0 0]),Ts,p,m);
mpcobj.MV = struct('Min',-1,'Max',1);
nu = 1;
-->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.

Моделирование модели в Simulink

Для выполнения этого примера необходимо приложение Simulink ®.

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

Откройте модель Simulink и запустите моделирование.

mdl = 'mpc_sequence';
open_system(mdl)
sim(mdl)
-->Converting the "Model.Plant" property of "mpc" object to state-space.
-->Converting model to discrete time.
   Assuming no disturbance added to measured output channel #1.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Блок контроллера MPC имеет mv.seq порт вывода, который активируется путем выбора параметра блока оптимальной последовательности управления. Этот порт выводит оптимальную управляющую последовательность, вычисленную контроллером в каждый момент времени выборки. Выходной сигнал представляет собой матрицу с p+ 1 строки иNmv столбцы, где p является горизонтом прогнозирования и Nmv - количество управляемых переменных.

Аналогичным образом контроллер может выводить оптимальную последовательность состояний (x.seq) и оптимальную выходную последовательность (y.seq).

Модель экспортирует эту управляющую последовательность в рабочую область MATLAB ® на каждом этапе моделирования, регистрируя данные какuseq.

Анализ оптимальных последовательностей управления

Постройте график оптимальной последовательности управления в определенные моменты времени.

times = [0 0.2 1 2 2.1 2.2 3 3.5 5];
figure('Name','Optimal sequence history')
for t = 1:9
    ct = times(t)*10+1;
    subplot(3,3,t)
    h = stairs(0:p,useq.signals.values(ct,:));
    h.LineWidth = 1.5;
    hold on
    plot((0:p)+.5,useq.signals.values(ct,:),'*r')
    xlabel('prediction step')
    ylabel('u')
    title(sprintf('Sequence (t=%3.1f)',useq.time(ct)))
    grid
    axis([0 p -1.1 1.1])
    hold off
end

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

bdclose(mdl)

См. также