Этот пример показывает, как управлять установкой двойного интегратора с входной насыщенностью в Simulink ®.
Определите модель объекта управления как двойной интегратор (вход является манипулируемой переменной и выход измеряемого результата).
plant = tf(1,[1 0 0]);
Создайте объект контроллера с периодом дискретизации 0,1 секунды, горизонтом предсказания 10 шагов и горизонтом управления и 3 хода.
mpcobj = mpc(plant, 0.1, 10, 3);
-->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.
Поскольку вы не задали веса квадратичной функции затрат, которая будет минимизирована контроллером, их значение принято как значение по умолчанию (0 для манипулируемых переменных, 0,1 для манипулируемых переменных скоростей, 1 для выходных переменных). Кроме того, на данной точке задача MPC все еще без ограничений, так как вы еще не указали никаких ограничений.
Задайте пределы насыщения привода как ограничения на управляемую переменную.
mpcobj.MV = struct('Min',-1,'Max',1);
Simulink является графическим блоком схемой, окружением для многодоменных системных симуляций. Можно соединить блоки, представляющие динамические системы (в этом случае объект и контроллер MPC), и моделировать замкнутый цикл.
% Check that Simulink is installed, otherwise display a message and return if ~mpcchecktoolboxinstalled('simulink') disp('Simulink is required to run this example.') return end
Откройте ранее существовавшую модель Simulink для симуляции замкнутой системы. Модель объекта управления реализована с двумя блоками интеграторов последовательно. Алгоритм интегрирования с переменным шагом ode45 используется, чтобы вычислить поведение непрерывного цикла времени. Блок MPC Controller сконфигурирован для использования рабочей области mpcobj
объект как контроллер. Манипулированные переменные, а также вывод и опорный сигнал. Выходной сигнал также сохраняется блоком To-Workspace.
mdl = 'mpc_doubleint';
open_system(mdl)
Симулируйте управление с обратной связью линейной модели объекта управления в Simulink. Обратите внимание, что перед началом симуляции модель объекта управления в mpcobj
преобразуется в модель дискретного пространства состояний. По умолчанию контроллер использует в качестве наблюдателя конструктора фильтров Калмана, принимая нарушение порядка белого шума на каждом объекте.
sim(mdl) % you can also simulate by pressing the "Run" button.
-->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.
Реакция с обратной связью показывает хорошую эффективность отслеживания уставки, так как выход объекта отслеживает его ссылку примерно через 2,5 секунды. Как и ожидалось, управляемая переменная остается в пределах предопределенных ограничений.
Закройте открытую модель Simulink, не сохраняя никаких изменений.
bdclose(mdl)
mpc
| MPC Controller | MPC Designer