Несколько контроллеров MPC

Моделируйте переключение между несколькими неявными контроллерами MPC

Библиотека

Библиотека Simulink MPC

Описание

В каждый момент управления блок Multiple MPC Controllers получает текущий измеренный объект вывод, ссылка и измеренное воздействие объекта (если таковые имеются). Кроме того, это получает переключающийся сигнал, который выбирает активный контроллер из списка кандидата контроллеры MPC, разработанные в различных рабочих точках в рабочем диапазоне. Активный контроллер затем решает квадратичную программу, чтобы решить, что оптимальный объект управлял переменными для текущих входных сигналов.

Блок Multiple MPC Controllers позволяет вам достигнуть лучшего управления, когда условия работы изменяются. Используя доступные измерения, можно обнаружить текущую операционную область во время выполнения и выбрать соответствующий активный контроллер через импорт switch. Переключение контроллеров для различных операционных областей является общим подходом к решению нелинейных проблем управления с помощью линейных методов управления.

Чтобы повысить эффективность, неактивные контроллеры не вычисляют перемещения оптимального управления. Однако, чтобы обеспечить передачу bumpless между контроллерами, неактивные контроллеры продолжают выполнять оценку состояния.

Блок Multiple MPC Controllers испытывает недостаток в нескольких дополнительных функциях, найденных в блоке MPC Controller, можно следующим образом:

  • Вы не можете отключить оптимизацию. Один контроллер должен всегда быть активным.

  • Вы не можете инициировать проектирование контроллера из диалогового окна блока; то есть, нет никакой кнопки Design. Разработайте все контроллеры кандидата прежде, чем сконфигурировать блок Multiple MPC Controllers.

  • Точно так же нет никакой кнопки Review. Вместо этого используйте команду review или приложение MPC Designer.

  • Вы не можете обновить пользовательские ограничения на линейные комбинации вводов и выводов во время выполнения.

Блок Adaptive MPC Controller компенсирует изменения рабочей точки путем изменения ее модели прогноза. Преимущества блока Multiple MPC Controllers по блоку Adaptive MPC Controller следующие:

  • Более простая настройка – нет никакой потребности идентифицировать параметры модели прогноза с помощью онлайновых данных.

  • Его контроллеры кандидата формируют ограниченный набор, который можно протестировать полностью.

И блок Multiple MPC Controllers и блок Adaptive MPC Controller позволяют вашей системе управления адаптироваться к изменению условий работы во время выполнения. В следующей таблице перечислены преимущества использования каждого блока.

БлокАдаптивный контроллер MPCНесколько контроллеров MPC
Подход адаптацииОбновите модель прогноза для одного контроллера, когда условия работы изменяютсяПереключитесь между несколькими контроллерами, разработанными для различных операционных областей
Преимущества
  • Только должен разработать один контроллер оффлайн

  • Меньше вычислительного усилия во время выполнения и меньшего объема потребляемой памяти

  • Более устойчивый к реальным изменениям в условиях объекта

  • Никакая потребность в онлайновой оценке модели объекта управления

  • У контроллеров могут быть различный шаг расчета, горизонты и веса

  • Модели прогноза могут иметь различные порядки или временные интервалы

  • Конечное множество контроллеров кандидата может быть протестировано полностью

Диалоговое окно

Блок Multiple MPC Controller имеет следующие группировки параметра:

Параметры

Cell Array of MPC Controllers

Контроллеры кандидата, заданные как:

  • Массив ячеек объектов mpc.

  • Массив ячеек из символьных векторов, где каждый элемент является именем объекта mpc в рабочей области MATLAB®.

Заданный массив должен содержать по крайней мере два контроллера кандидата. Первая запись в массиве ячеек является контроллером, который соответствует входному значению переключателя 1, второе соответствует входному значению переключателя 2 и так далее.

Массив ячеек начальных состояний контроллера

Дополнительные начальные состояния для каждого контроллера кандидата, заданного как:

  • Массив ячеек объектов mpcstate.

  • Массив ячеек из символьных векторов, где каждый элемент является именем объекта mpcstate в рабочем пространстве MATLAB.

  • {[],[],...} или {'[]','[]',...} — Используйте номинальное условие, заданное в Model.Nominal как начальное состояние для каждого контроллера.

Требуемый Inports

Controller Selection

Входной сигнал switch должен быть скалярным целым числом между 1 и n c, где n c является количеством заданных контроллеров кандидата. В каждый момент управления этот сигнал определяет активный контроллер. Значение переключателя 1 соответствует первой записи в массиве ячеек контроллеров кандидата, значение 2 соответствует второму контроллеру и так далее.

Если сигнал switch за пределами области значений 1 и n c, предыдущий контроллер, вывод сохраняется.

Measured output или State estimate

Если диспетчеры кандидата используют оценку состояния по умолчанию, этот импорт маркирован mo. Соедините этот импорт в измеренные выходные сигналы объекта.

Если ваши диспетчеры кандидата используют пользовательскую оценку состояния, проверяйте Use custom estimated states instead of measured outputs в раздел General. Проверка этой опции изменяет метку на этом импорте в x[k|k]. Соедините сигнал, обеспечивающий оценки состояния контроллера. (Состояние контроллера включает объект, воздействие и шумовые образцовые состояния.) Оценки предоставили во время, tk должен быть основан на измерениях и других доступных данных во время tk.

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

Reference

Размерность ref не должна изменяться с одного момента управления на следующее. Каждый элемент должен быть вещественным числом.

Когда ref является 1 сигналом ny, где ny является количеством выходных параметров, нет никакого ссылочного предварительного просмотра сигнала. Контроллер применяет текущие ссылочные значения через горизонт прогноза.

Чтобы использовать предварительный просмотр сигнала, задайте ref как N-by-ny сигнал, где N является количеством временных шагов, для которых вы задаете ссылочные значения. Здесь, 1<Np, и p является горизонтом прогноза. Предварительный просмотр обычно улучшает производительность, поскольку диспетчер может ожидать будущие ссылочные изменения сигнала. Первая строка ref задает ссылки ny для первого шага в горизонте прогноза (в следующем интервале управления k = 1), и так далее для шагов N. Если N <p, последняя строка определяет постоянные ссылочные значения для остающегося p - шаги N.

Например, предположите ny = 2 и p = 6. В данный момент контроля сигнал, соединенный с импортом ref:

[2 5  ←  k=1
 2 6  ←  k=2
 2 7  ←  k=3
 2 8] ←  k=4

Сигнал сообщает диспетчеру что:

  • Ссылочными значениями для первого шага горизонта прогноза k = 1 является 2 и 5.

  • Первое ссылочное значение остается в 2, но вторых увеличениях постепенно.

  • Второе ссылочное значение становится 8 в начале четвертого шага k = 4 в горизонте прогноза.

  • Оба значения остаются постоянными в 2 и 8 соответственно для шагов 5-6 горизонта прогноза.

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

Необходимые выходные порты

Переменные, которыми управляют,

Выходной порт mv обеспечивает сигнал, задающий nu1 переменные, которыми управляют, для управления объектом. Активный контроллер обновляет свою переменную, которой управляют, выведенную путем решения проблемы квадратичного программирования с помощью или решателя KWIK по умолчанию или пользовательского решателя QP. Для получения дополнительной информации см. Решатель QP.

Блок Multiple MPC Controller передает вывод активного контроллера к выходному порту mv.

Если активный контроллер обнаруживает неосуществимую проблему QP или сталкивается с числовыми трудностями при решении плохо обусловленной проблемы QP, mv остается в своем новом успешном решении, x.LastMove.

В противном случае, если проблема QP выполнима, и решатель достигает заданного максимального количества итераций, не находя решение, mv:

  • Остается в его новом успешном решении, если свойством Optimizer.UseSuboptimalSolution активного контроллера является false.

  • Субоптимальное решение, достигнутое после итоговой итерации, если свойством Optimizer.UseSuboptimalSolution активного контроллера является true. Для получения дополнительной информации смотрите Субоптимальное Решение QP.

Дополнительный Inports (общий раздел)

Measured disturbance

Добавьте импорт (md), с которым вы соединяете измеренный сигнал воздействия. Количество измеренных воздействий задано для вашего контроллера, nmd1, должен совпадать с размерностями связанного сигнала воздействия.

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

Когда md является 1 сигналом nmd, нет никакого измеренного предварительного просмотра воздействия. Контроллер применяет текущие значения воздействия через горизонт прогноза.

Чтобы использовать предварительный просмотр воздействия, задайте md как N-by-nmd сигнал, где N является количеством временных шагов, которыми известны измеренные воздействия. Здесь, 1<Np+1, и p является горизонтом прогноза. Предварительный просмотр обычно улучшает производительность, поскольку диспетчер может ожидать будущие воздействия. Первая строка md задает nmd текущие значения воздействия (k = 1) с другими строками, задающими воздействия для последующих интервалов управления. Если N <p + 1, контроллер применяет последнюю строку для остающегося p - N + 1 шаг.

Например, предположите nmd = 2 и p = 6. В данный момент контроля сигнал, соединенный с импортом md:

[2 5  ←  k=0
 2 6  ←  k=1
 2 7  ←  k=2
 2 8] ←  k=3

Этот сигнал сообщает диспетчеру что:

  • Текущими значениями MD является 2 и 5 в k = 0.

  • Первый MD остается в 2, но вторых увеличениях постепенно.

  • Второй MD становится 8 в начале третьего шага k = 3 в горизонте прогноза.

  • Оба значения остаются постоянными в 2 и 8 соответственно для шагов 4-6 горизонта прогноза.

mpcpreview показывает, как использовать предварительный просмотр MD в конкретном случае.

Для получения дополнительной информации вычисления смотрите, что MPC Моделирует и Матрицы QP.

Внешняя переменная, которой управляют,

Добавьте импорт (ext.mv), с которым вы соединяете векторный сигнал, который содержит фактические переменные, которыми управляют, (MV), используемые на объекте. Все диспетчеры кандидата используют этот сигнал обновить их оценки состояния контроллера в каждом интервале управления. Используя этот импорт улучшает точность оценки состояния, когда MVS, используемый на объекте, отличается от MVS, вычисленного блоком, например, должным сигнализировать о насыщении или условии переопределения.

Для получения дополнительной информации смотрите соответствующий раздел страницы с описанием блока MPC Controller.

Цели для переменных, которыми управляют,

Если вы хотите, чтобы один или несколько переменные, которыми управляют, (MV) отследил целевые значения, которые изменяются со временем, используют эту опцию, чтобы добавить импорт mv.target. Соедините этот порт с целевым сигналом с размерностью nu, где nu является количеством MVS.

Для этого, чтобы быть эффективным, соответствующий мВ должен иметь ненулевые веса штрафа (эти веса являются нулем по умолчанию).

Дополнительные выходные порты (общий раздел)

Можно сконфигурировать несколько дополнительных выходных сигналов. В каждый момент выборки активный контроллер определяет их значения. Следующее описывает каждого кратко. Для получения дополнительной информации см. документацию блока MPC Controller.

Оптимальная стоимость

Добавьте выходной порт (cost), который обеспечивает оптимальное значение целевой функции квадратичного программирования в текущее время (неотрицательный скаляр). Если контроллер выполняет хорошо, и никакие ограничения не были нарушены, значение должно быть маленьким. Если задача оптимизации неосуществима, однако, значение бессмысленно. (См. qp.status.)

Состояние Optimization

Добавьте выходной порт (qp.status), который позволяет вам контролировать состояние решателя QP для активного контроллера.

Если проблема QP решена успешно в данном интервале контроля, qp.status, вывод возвращает количество итераций решателя QP, используемых в вычислении. Это значение является конечным, положительным целым числом и пропорционально времени, требуемому для вычислений. Таким образом большое значение означает относительно медленное выполнение блока для этого временного интервала.

Решатель QP может не найти оптимальное решение по следующим причинам:

  • qp.status = 0 — Решатель QP не может найти решение в максимальном количестве итераций заданным в объекте mpc. В этом случае, если свойством Optimizer.UseSuboptimalSolution контроллера MPC является false, блок содержит свой mv вывод в новом успешном решении. В противном случае это использует субоптимальное решение, найденное во время последней итерации решателя.

  • qp.status = -1 — Решатель QP обнаруживает неосуществимую проблему QP. Смотрите Контролирующее Состояние Оптимизации, чтобы Обнаружить Отказы контроллера для примера, где большое, длительное воздействие управляет OV вне своих заданных границ. В этом случае блок содержит свой mv вывод в новом успешном решении.

  • qp.status = -2 — Решатель QP столкнулся с числовыми трудностями при решении сильно плохо обусловленной проблемы QP. В этом случае блок содержит свой mv вывод в новом успешном решении.

В приложении реального времени можно использовать qp.status, чтобы поставить будильник или принять другие специальные меры.

Предполагаемые состояния контроллера

Добавьте выходной порт (est.state) для оценок состояния активного контроллера, x[k|k], в каждый момент управления. Эти оценки включают объект, воздействие и шумовые образцовые состояния.

Последовательность оптимального управления

Добавьте выходной порт (mv.seq), который обеспечивает предсказанные оптимальные корректировки мВ (перемещения) по целому горизонту прогноза от k до k+p, где k является текущим временем, и p является горизонтом прогноза. Этот сигнал (p +1)-by-nu матрица, где и nu количество переменных, которыми управляют.

mv.seq содержит расчетные оптимальные перемещения мВ во время k+i-1 для i = 1,...,p. Первая строка mv.seq идентична сигналу выходного порта mv, который является текущей корректировкой мВ, примененной во время k. Поскольку контроллер не вычисляет перемещения оптимального управления во время k+p, последняя строка mv.seq копирует предыдущую строку.

Оптимальная последовательность состояния

Добавьте выходной порт (x.seq), который обеспечивает предсказанную оптимальную последовательность переменной состояния по целому горизонту прогноза от k до k+p, где k является текущим временем, и p является горизонтом прогноза. Этот сигнал (p +1)-by-nx матрица, где nx является количеством состояний на объекте, и неизмеренные возмущения (состояния из шумовых моделей не включены).

x.seq содержит расчетные оптимальные значения состояния во время k+i для i = 1,...,p. Первая строка x.seq содержит текущие состояния во время k, как определено оценкой состояния.

Оптимальная выходная последовательность

Добавьте выходной порт (y.seq), который обеспечивает предсказанную оптимальную последовательность выходной переменной по целому горизонту прогноза от k до k+p, где k является текущим временем, и p является горизонтом прогноза. Этот сигнал (p +1)-by-ny матрица, где и ny количество выходных параметров.

y.seq содержит расчетные оптимальные выходные значения во время k+i-1 для i = 1,...,p+1. Первая строка y.seq содержит текущие производительности во время k на основе предполагаемых состояний и измеренных воздействий; это не измеренный вывод во время k.

Оценка состояния (общий раздел)

Используйте пользовательские предполагаемые состояния вместо того, чтобы использовать встроенный Фильтр Калмана

Замените mo на импорт x[k|k] для пользовательской оценки состояния, как описано в Необходимом Inports. Все диспетчеры кандидата должны использовать ту же опцию оценки состояния, или значение по умолчанию или пользовательский. Когда вы используете пользовательскую оценку состояния, у всех контроллеров кандидата должна быть та же размерность.

Ограничения (онлайновый раздел функций)

В каждый момент управления дополнительные функции, описанные ниже, применяются к активному контроллеру.

Более низкие пределы мВ

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

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

Если этот параметр не выбран, блок использует постоянные ограничительные значения, сохраненные в активном контроллере.

Примечание

Вы не можете задать изменяющиеся во времени ограничения во время выполнения с помощью матричного сигнала.

Верхние пределы мВ

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

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

Если этот параметр не выбран, блок использует постоянные ограничительные значения, сохраненные в активном контроллере.

Примечание

Вы не можете задать изменяющиеся во времени ограничения во время выполнения с помощью матричного сигнала.

Понизьте пределы OV

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

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

Если этот параметр не выбран, блок использует постоянные ограничительные значения, сохраненные в активном контроллере.

Примечание

Вы не можете задать изменяющиеся во времени ограничения во время выполнения с помощью матричного сигнала.

Верхние пределы OV

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

Если этот параметр не выбран, блок использует постоянные ограничительные значения, сохраненные в активном контроллере.

Если этот параметр не выбран, блок использует постоянные ограничительные значения, сохраненные в его объекте mpc.

Примечание

Вы не можете задать изменяющиеся во времени ограничения во время выполнения с помощью матричного сигнала.

Веса (онлайновый раздел функций)

Дополнительные входные параметры описали ниже функции как контроллер "настраивающиеся кнопки". По умолчанию (или когда сигнал не связан), сохраненные настраивающие веса активного контроллера применяются.

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

Веса OV

Добавьте импорт (y.wt), что можно соединить с переменной вывода во время выполнения (OV) сигнал веса. Этот сигнал заменяет свойство Weights.OV объекта mpc, который устанавливает относительную важность отслеживания уставки OV.

Чтобы использовать те же настраивающие веса по горизонту прогноза, соедините y.wt с векторным сигналом с элементами ny, где ny является количеством управляемых выходных параметров. Каждый элемент задает неотрицательный настраивающий вес для каждой управляемой выходной переменной. Для получения дополнительной информации об определении настраивающихся весов смотрите Веса Мелодии.

Чтобы отличаться настраивающиеся веса по горизонту прогноза, соедините y.wt с матричным сигналом со столбцами ny и до строк p, где p является горизонтом прогноза. Каждая строка содержит настраивающиеся веса для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, настраивающиеся веса в итоговой строке запрашивают остаток от горизонта прогноза. Для получения дополнительной информации о переменных весах по горизонту прогноза смотрите Изменяющиеся во времени Веса и Ограничения.

Если вы не соединяете сигнал с импортом y.wt, блок использует веса OV, заданные в активном контроллере, и эти значения остаются постоянными.

Веса мВ

Добавьте импорт (u.wt), который можно соединить с сигналом веса переменной, которой управляют, (MV) во время выполнения. Этот сигнал заменяет свойство Weights.MV объекта mpc, который устанавливает относительную важность целевого отслеживания мВ.

Чтобы использовать те же настраивающие веса по горизонту прогноза, соедините u.wt с векторным сигналом с элементами nu, где nu является количеством переменных, которыми управляют. Каждый элемент задает неотрицательный настраивающий вес для каждой переменной, которой управляют. Для получения дополнительной информации об определении настраивающихся весов смотрите Веса Мелодии.

Чтобы отличаться настраивающиеся веса по горизонту прогноза, соедините u.wt с матричным сигналом со столбцами nu и до строк p, где p является горизонтом прогноза. Каждая строка содержит настраивающиеся веса для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, настраивающиеся веса в итоговой строке запрашивают остаток от горизонта прогноза. Для получения дополнительной информации о переменных весах по горизонту прогноза смотрите Изменяющиеся во времени Веса и Ограничения.

Веса MVRate

Добавьте импорт (du.wt), который можно соединить с сигналом веса уровня переменной, которой управляют, (MV) во время выполнения. Этот сигнал заменяет свойство Weights.MVrate объекта mpc, который устанавливает относительную важность изменений мВ.

Чтобы использовать те же настраивающие веса по горизонту прогноза, соедините du.wt с векторным сигналом с элементами nu, где nu является количеством переменных, которыми управляют. Каждый элемент задает неотрицательный настраивающий вес для каждого плавающего курса, которым управляют. Для получения дополнительной информации об определении настраивающихся весов смотрите Веса Мелодии.

Чтобы отличаться настраивающиеся веса по горизонту прогноза, соедините du.wt с матричным сигналом со столбцами nu и до строк p, где p является горизонтом прогноза. Каждая строка содержит настраивающиеся веса для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, настраивающиеся веса в итоговой строке запрашивают остаток от горизонта прогноза. Для получения дополнительной информации о переменных весах по горизонту прогноза смотрите Изменяющиеся во времени Веса и Ограничения.

Если вы не соединяете сигнал с импортом du.wt, блок использует свойство Weights.MVrate, заданное в активном контроллере, и эти значения остаются постоянными.

Ослабьте переменный вес

Добавьте импорт (ecr.wt) для скалярного неотрицательного сигнала, который заменяет свойство MPCobj.Weights.ECR активного контроллера. Этот импорт не имеет никакого эффекта, если активный контроллер не задает мягкие ограничения, чьи связанные значения ECR являются ненулевыми.

Раздел других

Блокируйте тип данных

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

  • 'double' Плавающая точка двойной точности (значение по умолчанию)

  • единственный Плавающая точка с одинарной точностью

    Если вы реализуете блок на цели с одинарной точностью, задаете тип выходных данных как single.

Для примера симуляции с одинарной точностью и с двойной точностью и генерации кода для контроллера MPC, смотрите Симуляцию и Генерацию кода Используя Simulink Coder.

Чтобы просмотреть типы данных порта в модели, в Редакторе Simulink®, выбирают Display > Signals & Ports Port Data Types.

Наследуйте шаг расчета

Используйте шаг расчета родительской подсистемы как шаг расчета блока. Выполнение так позволяет вам условно выполнять этот блок в Подсистеме вызова функций или Инициированных блоках Subsystem. Для примера смотрите Используя диспетчера MPC Блока В Вызове функции и Инициированных Подсистемах.

Примечание

Необходимо выполнить Подсистему вызова функций или Инициированные блоки Subsystem на уровне частоты дискретизации контроллера. В противном случае вы видите неожиданные результаты.

Чтобы просмотреть шаг расчета блока, в Редакторе Simulink, выбирают Display > Sample Time. Выберите Colors, Annotations или All. Для получения дополнительной информации, информация о Шаге расчета вида на море (Simulink).

Вопросы совместимости

развернуть все

Поведение изменяется в R2018b

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Генерация кода PLC
Сгенерируйте код Структурированного текста с помощью Simulink® PLC Coder™.

Представленный в R2008b

Для просмотра документации необходимо авторизоваться на сайте