Чтобы компенсировать изменение условий работы, можно обновить ограничения на входах и выходах объекта во время выполнения. Можно обновить пределы насыщения для входных и выходных сигналов, а также линейные смешанные ограничения ввода/вывода.
Обновление ограничений во время выполнения поддерживает генерацию кода.
Во время выполнения можно обновить ограничения на входные и выходные сигналы объекта. Для этого сначала задайте начальные границы сигнала при разработке контроллера MPC. Дополнительные сведения см. в разделе «Задание ограничений». Если вы не задаете начальные границы для данного сигнала, вы не можете ограничить этот сигнал во время исполнения.
Чтобы обновить границы сигнала во время симуляции командной строки, на каждом контрольном интервале установите соответствующие свойства mpcmoveopt
объект перед вызовом mpcmove
, mpcmoveAdaptive
, или mpcmoveMultiple
. Для обновления:
Управляемая переменная нижняя и верхняя границы, установите MVMin
и MVMax
свойства, соответственно.
Выходная переменная нижняя и верхняя границы, установите OutputMin
и OutputMax
свойства, соответственно.
Можно также обновить входные и выходные границы во время исполнения в Simulink® для блоков MPC Controller, Adaptive MPC Controller и Multiple MPC Controllers. В следующей таблице перечислены границы, связанные с ними блочные порты и параметры блоков, которые нужно выбрать, чтобы включить порты.
Границы | Имя порта | Параметры блоков |
---|---|---|
Более низкие ограничения по манипулируемым переменным | umin | Lower MV Limits |
Верхние границы манипулируемых переменных | umax | Upper MV Limits |
Нижние границы выходных переменных | ymin | Lower OV Limits |
Верхние границы выходных переменных | ymax | Upper OV Limits |
Соедините сигналы с этими портами, которые задают значения во время выполнения границ для каждой переменной. Если существует более одной манипулированной переменной или выходной переменной, соедините вектор сигнал с соответствующими портами. Для примера, если существуют три переменных выхода, соедините трехэлементный вектор сигнал с ymin
и ymax
порты. Если переменная без ограничений в объекте контроллера, то подключенная значением сигналов игнорируется.
Совет
Для любого ограничения, которое вы устанавливаете равным -Inf
или Inf
по всему горизонту предсказания (равномерный) или на отдельных шагах горизонта предсказания (изменяющихся во времени) соответствующая переменная остается без ограничений во время исполнения; то есть вы не можете изменить его.
Однако можно сохранить переменную без ограничений, чтобы не искажать автономное проектирование контроллера, сохраняя при этом возможность добавления ограничений в сети. Для этого установите границу большого значения при создании контроллера. Не используйте realmax
как большое значение, поскольку это вызывает числовые проблемы во время исполнения. Затем можно изменить ограничение во время выполнения.
Если вы задаете изменяющиеся во времени ограничения в объекте контроллера, новые ограничения применяются к первым конечным значениям в горизонте предсказания. Все последующие значения горизонта предсказания корректируются, чтобы сохранить тот же профиль на горизонте предсказания; то есть меняются на ту же величину.
Для получения примера смотрите Переменные Входы и Выход Границы во время выполнения.
Во время выполнения можно обновить смешанные ограничения ввода/вывода. Для получения дополнительной информации об этих ограничениях смотрите Ограничения на линейные комбинации входов и выходов. Эта функция не поддерживается для контроллеров MPC по расписанию с коэффициентом усиления.
Можно обновить следующие матрицы ограничений во время симуляции:
E
- Манипулируемая переменная константа ограничения
F
- Управляемая выходная константа ограничения
G
- Смешанная константа входного/выходного ограничения
S
- Измеренная константа возмущения
Для этого сначала задайте начальные ограничения с помощью setconstraint
команда. Вы не можете добавить дополнительные ограничения во время исполнения.
Чтобы обновить смешанные ограничения ввода/вывода во время симуляции командной строки, в каждом контрольном интервале установите CustomConstraint
свойство mpcmoveopt
объект перед вызовом mpcmove
или mpcmoveAdaptive
. Задайте CustomConstraint
как структура с E
, F
, G
, и S
поля. Задайте каждое поле как массив с размерностями, которые совпадают с исходными массивами ограничений, заданными с помощью setconstraint
.
Чтобы обновить смешанные ограничения ввода/вывода во время симуляции Simulink, выберите параметр Custom constraints вашего MPC Controller или Adaptive MPC Controller блока. Это добавляет E
, F
, G
, и S
входные порты в блок. The S
входной порт добавляется, только если ваш контроллер имеет измеренные нарушения порядка.
Соедините матричные сигналы с этими портами, которые задают значения времени выполнения для каждого массива. Если вы задаете E
, F
, G
, или S
в контроллере MPC необходимо подключить сигнал к соответствующему входному порту, и этот сигнал должен иметь те же размерности, что и массив, указанный в контроллере. Если массив не определен в объекте контроллера, используйте нулевую матрицу с правильным размером.
Для примера, который обновляет смешанные ограничения ввода/вывода для адаптивного контроллера, смотрите Предотвращение препятствий с использованием Adaptive Model Predictive Control.
mpcmove
| mpcmoveAdaptive
| mpcmoveExplicit
| setconstraint