Этот пример показывает, как получить бесшумную передачу при переключении прогнозирующего контроллера модели с ручного на автоматическую операцию или наоборот.
Во время запуска производственного процесса, перед переходом на автоматическое управление, операторы регулируют ключевые приводы вручную до тех пор, пока объект не приблизится к требуемой рабочей точке. Если не сделано правильно, передача может вызвать отбойник; то есть большое движение привода.
В этом примере вы моделируете модель Simulink ®, которая содержит объект LTI с одним входом и блок MPC Controller.
Модельный прогнозирующий контроллер контролирует все известные сигналы объекта управления, даже когда он не управляет приводами. Этот мониторинг улучшает свои оценки состояния и позволяет бесшумный переход к автоматической операции.
В частности, он показывает, как ext.mv
входной сигнал в блок MPC может использоваться, чтобы поддерживать внутреннее состояние MPC в актуальном состоянии, когда оператор или другой контроллер находится в состоянии управления.
Задайте линейную динамическую модель объекта управления без разомкнутого контура.
num = [1 1]; den = [1 3 2 0.5]; sys = tf(num,den);
Объект является стабильной системой с одним входом с одним выходом, как видно на его переходной характеристике.
step(sys)
Создайте контроллер 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.
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.
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)