В этом примере показано, как управлять объектом с двойным интегратором под входной насыщенностью в Simulink®.
Линейная динамическая модель разомкнутого цикла является двойным интегратором.
plant = tf(1,[1 0 0]);
Создайте объект контроллера с выборкой периода, прогноза и управляйте горизонтами.
Ts = 0.1; p = 10; m = 3; 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.MV = struct('Min',-1,'Max',1);
Чтобы запустить этот пример, Simulink требуется.
if ~mpcchecktoolboxinstalled('simulink') disp('Simulink is required to run this example.') return end
Симулируйте управление с обратной связью линейной модели объекта управления в Simulink. Блок MPC Controller сконфигурирован, чтобы использовать mpcobj
возразите как его контроллер.
mdl = 'mpc_doubleint';
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.
Ответ с обратной связью показывает хорошую производительность отслеживания заданного значения.
bdclose(mdl)
MPC Controller | MPC Designer | mpc