Переключите контроллер онлайн и оффлайн с передачей Bumpless

В этом примере показано, как получить передачу bumpless при переключении прогнозирующего контроллера модели от руководства до автоматической операции или наоборот.

Во время запуска производственного процесса, прежде, чем переключиться на автоматическое управление, операторы настраивают ключевые приводы вручную, пока объект не около желаемой рабочей точки. Если не сделанный правильно, передача может вызвать удар; то есть, большое перемещение привода.

В этом примере вы симулируете модель Simulink®, которая содержит одно вход объект LTI одно выхода и блок MPC Controller.

Прогнозирующий контроллер модели контролирует все известные сигналы объекта, даже когда это не контролирует приводы. Этот контроль улучшает свои оценки состояния и позволяет передачу bumpless в автоматическую операцию.

В частности, это показывает как ext.mv входной сигнал с блоком MPC может использоваться, чтобы усовершенствовать внутреннее состояние MPC, когда оператор или другой контроллер сознают ситуацию.

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

Задайте линейный разомкнутый цикл динамическая модель объекта управления.

num = [1 1];
den = [1 3 2 0.5];
sys = tf(num,den);

Объект является устойчивым одно входом система одно выхода, как замечено в ее переходном процессе.

step(sys)

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

Создайте контроллер MPC, задав:

  • Модель объекта управления

  • Шаг расчета Ts

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

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

Ts = 0.5;
p = 15;
m = 2;
mpcobj = mpc(sys,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);

Задайте выходной настраивающий вес.

mpcobj.Weights.Output=0.01;

Откройте и сконфигурируйте модель Simulink

Откройте модель Simulink.

mdl = 'mpc_bumpless';
open_system(mdl)

В этой модели блок MPC Controller уже сконфигурирован для передачи bumpless с помощью следующих установок параметров контроллера.

  • Внешний переменный параметр, которым управляют, выбран. Этот параметр включает использование внешних переменных, которыми управляют, путем добавления ext.mv импортируйте с блоком.

  • Использование внешний сигнал включить или отключить оптимизацию выбрано. Этот параметр добавляет switch импортируйте для того, чтобы выключить вычисления оптимизации контроллера.

Чтобы достигнуть передачи bumpless, начальные состояния вашего объекта и контроллера должны быть тем же самым, которое имеет место для объекта и контроллера в этом примере. Однако, если начальные условия для вашей системы не соответствуют, можно установить начальные состояния контроллера к начальным состояниям объекта. Для этого извлеките mpcstate возразите от своего диспетчера и установите начальное состояние объекта.

stateobj = mpcstate(MPC1);
stateobj.Plant = x0;

где x0 вектор начальных состояний объекта. Затем установите Начальный Параметр состояния Контроллера блока MPC Controller к stateobj.

Чтобы симулировать переключение между ручной и автоматической операцией, блок Switching отправляет или 1 или 0, чтобы управлять переключателем. Когда это отправляет 0, система находится в автоматическом режиме, и выход от блока MPC Controller переходит к объекту. В противном случае система находится в ручном режиме, и сигнал от блока Operator Commands переходит к объекту.

В обоих случаях фактический вход объекта возвращает контроллеру ext.mv импортируйте, если вход объекта не насыщает в-1 или 1. Контроллер постоянно контролирует объект выход и обновляет его оценку состояния объекта, даже когда в ручной операции.

Эта модель также показывает вариант переключения оптимизации. Когда система переключается на ручную операцию, ненулевой сигнал вводит switch импорт блока контроллера. Сигнал выключает вычисления оптимизации контроллера, который уменьшает вычислительное усилие.

Симулируйте контроллер в Simulink

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

sim(mdl)
-->Converting the "Model.Plant" property of "mpc" object to state-space.
-->Converting model to discrete time.
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Для первых 90 единиц измерения времени Переключающийся Сигнал 0, который заставляет систему действовать в автоматическом режиме. В это время контроллер гладко управляет управляемым объектом выход от его начального значения, 0, к желаемому ссылочному значению,-0.5.

Средство оценки состояния контроллера имеет нулевые начальные условия как значение по умолчанию, которое является соответствующим, когда эта симуляция начинается. Таким образом нет никакого удара при запуске. В общем случае запустите систему, запускающуюся в ручном режиме достаточно долго для контроллера, чтобы получить точную оценку состояния прежде, чем переключиться на автоматический режим.

Во время 90, Переключающийся Сигнал превращается на 1. Это переключатели система к ручной операции и отправляет команды оператора в объект. Одновременно, ненулевой сигнал, вводящий импорт переключателя контроллера, выключает вычисления оптимизации. В то время как оптимизация выключена, блок MPC Controller передает текущий сигнал ext.mv Контроллеру Выход.

Однажды в ручном режиме, команды оператора устанавливают переменную, которой управляют, на-0.5 для 10 единиц измерения времени, и затем на 0. Выходной график Объекта показывает ответ разомкнутого цикла между временами 90 и 180, когда контроллер деактивирован.

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

Выключите переменную обратную связь, которой управляют,

Чтобы исследовать поведение контроллера без переменной обратной связи, которой управляют, измените модель можно следующим образом:

  • Удалите сигналы, вводящие ext.mv и переключатель inports из блока MPC Controller.

  • Удалите блок Unit Delay и сигнальную линию, вводящую ее импорт.

  • Для блока MPC Controller очистите Внешнюю переменную, которой управляют, и Использование внешний сигнал включить или отключить параметры оптимизации.

Чтобы выполнить эти шаги программно, используйте следующие команды.

delete_line(mdl,'Switch/1','Unit Delay/1');
delete_line(mdl,'Unit Delay/1','MPC Controller/3');
delete_block([mdl '/Unit Delay']);
delete_line(mdl,'Switching/1','MPC Controller/4');
set_param([mdl '/MPC Controller'],'mv_inport','off');
set_param([mdl '/MPC Controller'],'switch_inport','off');

Настройте пределы графиков отклика и симулируйте модель.

set_param([mdl '/Yplots'],'Ymin','-1.1~-0.1')
set_param([mdl '/Yplots'],'Ymax','2~1.1')
set_param([mdl '/MVplots'],'Ymin','-0.6~-0.5')
set_param([mdl '/MVplots'],'Ymax','1.1~1.1')
sim(mdl)

Поведение системы идентично исходному случаю для первых 90 единиц измерения времени.

Когда система переключается на ручной режим во время 90, поведение объекта эквивалентно прежде. Однако диспетчер пытается содержать объект в заданном значении. Так, его выходные увеличения и в конечном счете насыщают, как замечено в Контроллере Выход. Поскольку контроллер принимает, что этот выход идет в объект, его оценки состояния становятся неточными. Поэтому, когда система переключается назад на автоматический режим во время 180, существует большой удар на Объекте Выход.

Такой удар создает большие перемещения привода в объекте. Путем сглаженной передачи от руководства до автоматической операции прогнозирующий контроллер модели устраняет такие нежелательные перемещения.

bdclose(mdl)

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