В этом примере показано, как проверить оптимизированную последовательность манипулируемых переменных, вычисленных контроллером прогнозирования модели в каждый момент времени выборки.
Установка является двойным интегратором, подверженным насыщению ввода.
Базовая настройка контроллера 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 ®.
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)