Контроллер коммутатора в оперативном и автономном режиме с бесшумной передачей

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

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

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

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

В частности, он показывает, как 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 уже сконфигурирован для бесшумной передачи с помощью следующих настроек параметра контроллера.

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

  • Выбран сигнал Use external to enable или disable optimization. Этот параметр добавляет switch inport для отключения вычислений оптимизации контроллера.

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

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

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

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

В обоих случаях фактический вход объекта управления поступает обратно на контроллер ext.mv inport, если вход объекта не достигает -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 очистите переменную External manipuled и Используйте внешний сигнал, чтобы включить или отключить параметры оптимизации.

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

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)

См. также