Используя пользовательские ограничения ввода и вывода

Этот пример показывает как модели проекта прогнозирующий контроллер со смешанными ограничениями ввода/вывода.

Разработайте контроллер MPC

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

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

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

  • Управляйте горизонтом 20

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

plant = tf(1,[1 0 0]);                          % Prediction model
Ts = .1;                                        % Sampling time
p = 20;                                         % Prediction horizon
m = 20;                                         % Control horizon
mpcobj = mpc(plant,Ts,p,m);                     % MPC object
mpcobj.MV = struct('Min',-1,'Max',1);           % Input saturation constraints
-->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.

Задайте Смешанный ввод/вывод (ввод-вывод) Ограничение

Сумма входа u(t) и вывода y(t) должна быть неотрицательной и меньшей, чем 1,2:

                0 <= u(t) + y(t) <= 1.2

Чтобы наложить это объединенное (смешанное) ограничение ввода-вывода, сформулируйте его как набор ограничений неравенства, включающих u(t) и y(t):

                u(t) +  y(t) <= 1.2
               -u(t) + -y(t) <= 0
setconstraint(mpcobj,[1;-1],[1;-1],[1.2;0]);

Моделируйте Используя Simulink®

Чтобы запустить этот пример, Simulink® требуется.

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

Моделируйте управление с обратной связью линейной модели объекта управления в Simulink. Контроллер "mpcobj" задан в диалоговом окне блока.

mdl = 'mpc_mixedconstraints';
open_system(mdl);            % Open Simulink(R) Model
sim(mdl);                    % Start Simulation
-->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 всегда сохраняет сумму u+y между 0 и 1.2 при отслеживании ссылочного r=1 сигнала.

bdclose(mdl);

Смотрите также

Похожие темы