Прогнозирующее управление модели объекта с одним входом и одним выходом

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

Задайте модель объекта управления

Задайте модель объекта управления как двойной интегратор (вход является переменной, которой управляют, и выходом измеренный выход).

plant = tf(1,[1 0 0]);

Спроектируйте контроллер MPC

Создайте объект контроллера с периодом выборки 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

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)

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

Объекты

Приложения

Блоки

Похожие темы