exponenta event banner

Многоступенчатый нелинейный контроллер MPC

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

  • Библиотека:
  • Панель инструментов управления прогнозом модели

  • Multistage Nonlinear MPC Controller block

Описание

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

Для использования этого блока необходимо сначала создать nlmpcMultistage в рабочей области MATLAB ®.

Ограничения

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

Порты

Вход

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

Необходимые входные данные

Текущие состояния модели прогнозирования, заданные как векторный сигнал длиной Nx, где Nx - количество состояний модели прогнозирования. Поскольку нелинейный контроллер MPC не выполняет оценку состояния, необходимо измерить или оценить текущие состояния модели прогнозирования в каждом интервале управления.

Управляющие сигналы, используемые в установке на предыдущем интервале управления, определяемом как векторный сигнал lengthNmv, где Nmv - количество манипулируемых переменных.

Примечание

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

Дополнительные входные данные

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

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

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

Зависимости

Для активизации этого порта выберите параметр Measured ristances.

Если контроллер использует дополнительные параметры в своей модели прогнозирования, включите этот входной порт и подключите векторный сигнал к элементам Npm, где Npm - количество параметров состояния (равно Model.ParameterLength имущества nlmpcMultistage объект контроллера). Контроллер передает эти параметры в его модельное состояние перехода и состояние якобинских функций.

Чтобы включить этот порт, выберите параметр StateFcn parameters.

Если контроллер не использует дополнительные параметры, необходимо отключить порт state.param.

Зависимости

Если контроллер использует дополнительные параметры в любой функции затрат или ограничений этапа, включите этот входной порт и подключите векторный сигнал с элементами Npv, где Npv, равным sum(Stages.ParameterLength), - общее количество параметров для всех функций этапа. Параметры для всех этапов складываются в вектор параметров следующим образом.

[parameter vector for stage 1;
 parameter vector for stage 2;
 ...
 parameter vector for stage p+1;
]

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

Чтобы включить этот порт, выберите параметр StageFcn parameters.

Если контроллер не использует дополнительные параметры, необходимо отключить порт stage.param. Дополнительные сведения см. в разделе nlmpcMultistage и nlmpcmove.

Зависимости

Ограничения в сети

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

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

Чтобы изменять границы по горизонту прогнозирования от времени k до времени k + p-1, подключите mv.min к сигналу матрицы со столбцами Ny и до p строк. Здесь k - текущее время, а p - горизонт прогнозирования. Каждая строка содержит границы для одного шага горизонта прогнозирования. Если указано меньше p строк, границы в последней строке применяются к остальной части горизонта прогнозирования.

Зависимости

Для активизации этого порта выберите параметр Lower MV limits.

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

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

Чтобы изменять границы по горизонту прогнозирования от времени k до времени k + p-1, подключите mv.max к сигналу матрицы со столбцами Ny и до p строк. Здесь k - текущее время, а p - горизонт прогнозирования. Каждая строка содержит границы для одного шага горизонта прогнозирования. Если указано меньше p строк, границы в последней строке применяются к остальной части горизонта прогнозирования.

Зависимости

Для активизации этого порта выберите параметр Upper MV limits.

Чтобы задать минимальное время выполнения, управляемое ограничениями переменной скорости, включите этот входной порт. Если этот порт отключен, блок использует нижние границы, указанные в ManipulatedVariable.RateMin свойство объекта контроллера. Границы dmv.min не должны быть положительными.

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

Чтобы изменять границы по горизонту прогнозирования от времени k до времени k + p-1, подключите dmv.min к сигналу матрицы со столбцами Ny и до p строк. Здесь k - текущее время, а p - горизонт прогнозирования. Каждая строка содержит границы для одного шага горизонта прогнозирования. Если указано меньше p строк, границы в последней строке применяются к остальной части горизонта прогнозирования.

Зависимости

Для активизации этого порта выберите параметр Lower MVRate limits.

Чтобы задать максимальное время выполнения, управляемое ограничениями переменной скорости, включите этот входной порт. Если этот порт отключен, блок использует верхние границы, указанные в ManipulatedVariables.RateMax свойство объекта контроллера. Границы dmv.max должны быть неотрицательными.

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

Чтобы изменять границы по горизонту прогнозирования от времени k до времени k + p-1, подключите dmv.max к сигналу матрицы со столбцами Ny и до p строк. Здесь k - текущее время, а p - горизонт прогнозирования. Каждая строка содержит границы для одного шага горизонта прогнозирования. Если указано меньше p строк, границы в последней строке применяются к остальной части горизонта прогнозирования.

Зависимости

Для активизации этого порта выберите параметр Upper MVRate limits.

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

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

Чтобы изменить границы по горизонту прогнозирования от времени k + 1 до времени k + p, подключите x.min к сигналу матрицы со столбцами Ny и до p строк. Здесь k - текущее время, а p - горизонт прогнозирования. Каждая строка содержит границы для одного шага горизонта прогнозирования. Если указано меньше p строк, границы в последней строке применяются к оставшейся части горизонта прогнозирования.

Зависимости

Для активизации этого порта выберите параметр Lower state limits.

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

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

Чтобы изменить границы по горизонту прогнозирования от времени k + 1 до времени k + p, подключите x.max к сигналу матрицы со столбцами Ny и до p строк. Здесь k - текущее время, а p - горизонт прогнозирования. Каждая строка содержит границы для одного шага горизонта прогнозирования. Если указано меньше p строк, границы в последней строке применяются к оставшейся части горизонта прогнозирования.

Зависимости

Для активизации этого порта выберите параметр Upper state limits.

Другие

Терминальное состояние, определяемое как векторный сигнал длиной Nx. Чтобы задать требуемые ограничения состояния клеммы, включите этот входной порт. Чтобы указать требуемые состояния терминала во время выполнения через этот входной порт, необходимо указать конечные значения в TerminalState области Model имущества nlmpcMultistage объект, который передается в блок в качестве параметра. Определить inf для состояний, которые не должны быть ограничены значением клеммы. Во время выполнения блок игнорирует любые значения входного сигнала, которые соответствуют inf значения в объекте. Если не указано условие значения клеммы в nlmpcMultistage объект, сигнал на этом входном порте игнорируется во время выполнения.

Если этот порт не включен, ограничение состояния терминала (если присутствует) не изменяется во время выполнения.

Зависимости

Чтобы включить этот порт, выберите параметр Terminal state.

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

z0 - вектор-столбец длиной, равной сумме длин всех векторов переменных решения для каждого этапа. Исходные догадки должны быть сложены следующим образом:

[state vector guess for stage 1;
 manipulated variable vector guess for stage 1;
 manipulated variable vector rate guess for stage 1; % if used
 slack variable vector guess for stage 1; % if used
 state vector guess for stage 2;
 manipulated variable vector guess for stage 2;
 manipulated variable vector rate guess for stage 2; % if used
 slack variable vector guess for stage 2; % if used
 ...
 state vector guess for stage p;
 manipulated variable vector guess for stage p;
 manipulated variable vector rate guess for stage p; % if used
 slack variable vector guess for stage p; % if used
 state vector guess for stage p+1;
 slack variable vector guess for stage p+1; % if used
]
Дополнительные сведения см. в разделе nlmpcMultistage и nlmpcmove.

Зависимости

Для активизации этого порта выберите параметр Initial guess.

Продукция

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

Требуемые выходные данные

Оптимальное управляющее действие манипулируемой переменной, выводимое как сигнал вектора столбца длиной Nmv, где Nmv - количество манипулируемых переменных.

Если решатель сходится к локальному оптимальному решению (nlp.status положительный), то mv содержит оптимальное решение.

Если решатель достигает максимального числа итераций без нахождения оптимального решения (nlp.status равен нулю) и Optimization.UseSuboptimalSolution свойство контроллера:

  • true, то mv содержит неоптимальный раствор

  • false, то mv такое же, как last_mv

Если решатель не работает (nlp.status отрицательный), mv совпадает с last_mv.

Дополнительные выходы

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

Значение стоимости имеет значение, только если выходные данные nlp.status неотрицательны.

Зависимости

Чтобы включить этот порт, выберите параметр Optimal cost.

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

Переменный вектор провисания для всех стадий складывается как:

[slack variable vector for stage 1; % if used
 slack variable vector for stage 2; % if used
 ...
 slack variable vector for stage p+1; % if used
]

Состояние оптимизации, выведите одно из следующих значений:

  • Положительное целое - решатель сходится к оптимальному решению

  • 0 - достигнуто максимальное число итераций без схождения к оптимальному решению;

  • Отрицательное целое число - сбой решателя

Зависимости

Для активизации этого порта выберите параметр Optimization status.

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

Оптимальная последовательность манипулируемых переменных, возвращаемая в виде матричного сигнала с p + 1 строками и столбцами Nmv, где p - горизонт прогнозирования, а Nmv - количество манипулируемых переменных.

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

Зависимости

Для активизации этого порта выберите параметр Optimum control sequence.

Оптимальная последовательность состояний модели прогнозирования, возвращаемая как сигнал матрицы с p + 1 строками и столбцами Nx, где p - горизонт прогнозирования, а Nx - количество состояний.

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

Зависимости

Для активизации этого порта выберите параметр Optimum state sequence.

Параметры

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

Вы должны предоставить nlmpcMultistage объект, определяющий нелинейный контроллер MPC. Для этого введите имя nlmpc в рабочей области MATLAB.

Программное использование

Параметр блока: nlmpcobj
Тип: строка, символьный вектор
По умолчанию: ""

Выберите этот параметр, чтобы запустить контроллер с тем же временем выборки, что и его модель прогнозирования. Чтобы использовать другое время выборки контроллера, очистите этот параметр и укажите время выборки с помощью параметра Make block run at the different sample time.

Чтобы ограничить число переменных принятия решений и повысить эффективность вычислений, можно запустить контроллер с временем выборки, отличным от горизонта прогнозирования. Например, рассмотрим случай нелинейного контроллера MPC, работающего на частоте 10 Гц. Если время выборки установки и контроллера совпадает, для прогнозирования поведения установки в течение десяти секунд требуется горизонт прогнозирования длиной 100, который создает большое количество переменных принятия решения. Для уменьшения числа переменных принятия решений можно использовать время выборки завода, равное 1 секунде, и горизонт прогнозирования длиной 10 секунд.

Программное использование

Параметр блока: UseObjectTs
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "on"

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

Зависимости

Чтобы включить этот параметр, снимите флажок Использовать образец времени модели прогнозирования (Use prediction model sample time parameter).

Программное использование

Параметр блока: TsControl
Тип: строка, символьный вектор
По умолчанию: ""

Выберите этот параметр для моделирования контроллера с помощью функции MEX, созданной с помощью buildMEX. Это сокращает время моделирования контроллера. Чтобы указать имя функции MEX, используйте параметр Specify MEX function name.

Программное использование

Параметр блока: UseMEX
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Этот параметр используется для указания имени функции MEX, используемой при моделировании. Для создания функции MEX используйте buildMEX функция.

Зависимости

Чтобы включить этот параметр, выберите параметр Use MEX для ускорения моделирования.

Программное использование

Параметр блока: mexname
Тип: строка, символьный вектор
По умолчанию: ""

Вкладка «Общие»

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

Программное использование

Параметр блока: md_enabled
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

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

Программное использование

Параметр блока: stateparam_enabled
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Если функции затрат или ограничений используют параметры на любом этапе, необходимо выбрать этот параметр, чтобы добавить входной порт stage.params.

Программное использование

Параметр блока: stageparam_enabled
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр для добавления порта вывода затрат в блок.

Программное использование

Параметр блока: cost_enabled
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр для добавления выходного порта mv.seq к блоку.

Программное использование

Параметр блока: mvseq_enabled
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр, чтобы добавить выходной порт x.seq в блок.

Программное использование

Параметр блока: stateseq_enabled
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр, чтобы добавить выходной порт ослабления в блок.

Программное использование

Параметр блока: slack_enabled
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр для добавления выходного порта nlp.status в блок.

Программное использование

Параметр блока: status_enabled
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Вкладка «Функции в Интернете»

Выберите этот параметр, чтобы добавить входной порт mv.min в блок.

Программное использование

Параметр блока: mv_min
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт mv.max в блок.

Программное использование

Параметр блока: mv_max
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт dmv.min в блок.

Программное использование

Параметр блока: mvrate_min
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт dmv.max в блок.

Программное использование

Параметр блока: mvrate_max
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр для добавления входного порта x.min к блоку.

Программное использование

Параметр блока: state_min
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт x.max в блок.

Программное использование

Параметр блока: state_max
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр для добавления входного порта x.terminal к блоку.

Программное использование

Параметр блока: terminal_state
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

Выберите этот параметр для добавления входного порта z0 к блоку.

Примечание

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

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

Программное использование

Параметр блока: nlp_initialize
Тип: строка, символьный вектор
Значения: "off", "on"
По умолчанию: "off"

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

.
Представлен в R2021a