Вычислите закон о MPC управлении
Библиотека Simulink MPC
Блок MPC Controller получает текущий измеренный выходной сигнал (mo
), ссылочный сигнал (ref
) и дополнительный измеренный сигнал воздействия (md
). Блок вычисляет оптимальные переменные, которыми управляют (mv
) путем решения проблемы квадратичного программирования с помощью или решателя KWIK по умолчанию или пользовательского решателя QP. Для получения дополнительной информации см. Решатель QP.
Чтобы использовать блок в симуляции и генерации кода, необходимо задать объект mpc
, который задает образцовый прогнозирующий контроллер. Этот контроллер, должно быть, был уже разработан для объекта, которым он управляет.
Поскольку блок MPC Controller использует блоки MATLAB function, компиляции требуется каждый раз, когда вы изменяете объект MPC и блок. Кроме того, потому что MATLAB® не позволяет скомпилированному коду находиться в любой папке продукта MATLAB, необходимо использовать папку неMATLAB, чтобы работать над моделью Simulink®, когда вы используете блоки MPC.
Блок MPC Controller имеет следующие группировки параметра:
Необходимо обеспечить объект mpc
, который задает неявный контроллер MPC. Сделать так:
Введите имя объекта mpc
в окне редактирования MPC Controller. Этот объект должен присутствовать в рабочем пространстве MATLAB.
Если вы хотите изменить настройки контроллера в графической среде, открыть приложение MPC Designer путем нажатия на Design. Например, вы можете:
Импортируйте новую модель прогноза.
Измените горизонты, ограничения и веса модели.
Оцените производительность MPC с линейным объектом.
Экспортируйте обновленный контроллер в рабочее пространство MATLAB.
Чтобы видеть, как хорошо контроллер работает на нелинейный объект, запустите симуляцию Simulink с обратной связью.
Если вы не имеете существующего объекта mpc
в рабочем пространстве MATLAB, оставляете поле MPC controller пустым. С блоком MPC Controller, соединенным с объектом, нажмите Design, чтобы открыть MPC Designer. Используя приложение, линеаризуйте модель Simulink в заданной рабочей точке и разработайте свой контроллер. Для получения дополнительной информации см. Проект Контроллер MPC в Simulink и Линеаризуйте Модели Simulink Используя MPC Designer.
Чтобы использовать этот подход проекта, у вас должно быть программное обеспечение Simulink Control Design™.
Если вы задаете контроллер в поле MPC Controller, можно рассмотреть проект для устойчивости во время выполнения и проблем робастности путем нажатия на Review. Для получения дополнительной информации см. Модель Анализа Прогнозирующий Контроллер для Проблем Устойчивости и Робастности.
Задает начальное состояние контроллера. Если этот параметр оставлен незаполненный, блок использует номинальную стоимость, которая задана в свойстве Model.Nominal
объекта mpc
. Чтобы заменить значение по умолчанию, создайте объект mpcstate
в своей рабочей области и введите ее имя в поле.
Если ваш диспетчер использует оценку состояния по умолчанию, этот импорт маркирован mo
. Соедините этот импорт в измеренные выходные сигналы объекта. Диспетчер MPC использует измеренный объект выходные параметры, чтобы улучшить его оценки состояния.
Включить пользовательскую оценку состояния, в разделе General, Use custom estimated states instead of measured outputs проверки. Проверка этой опции изменяет метку на этом импорте в x[k|k]
. Соедините сигнал, который обеспечивает оценки состояния контроллера (объект, воздействие и шумовые образцовые состояния). Используйте пользовательские оценки состояния, когда альтернативный метод оценки рассматривается выше встроенного средства оценки или когда состояния полностью измеримы.
Размерность ref
не должна изменяться с одного момента управления на следующее. Каждый элемент должен быть вещественным числом.
Когда ref
является 1 сигналом ny, где ny является количеством выходных параметров, нет никакого ссылочного предварительного просмотра сигнала. Контроллер применяет текущие ссылочные значения через горизонт прогноза.
Чтобы использовать предварительный просмотр сигнала, задайте ref
как N-by-ny сигнал, где N является количеством временных шагов, для которых вы задаете ссылочные значения. Здесь, , и 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
обеспечивает сигнал, задающий переменные, которыми управляют, для управления объектом. В каждый момент управления контроллер обновляет его выходной порт mv
путем решения проблемы квадратичного программирования с помощью или решателя KWIK по умолчанию или пользовательского решателя QP. Для получения дополнительной информации см. Решатель QP.
Если контроллер обнаруживает неосуществимую задачу оптимизации или сталкивается с числовыми трудностями при решении плохо обусловленной задачи оптимизации, mv
остается в своем новом успешном решении; то есть, контроллер вывел замораживания.
В противном случае, если задача оптимизации выполнима, и решатель достигает заданного максимального количества итераций, не находя оптимальное решение, mv
:
Остается в его новом успешном решении, если свойством Optimizer.UseSuboptimalSolution
контроллера является false
.
Субоптимальное решение, достигнутое после итоговой итерации, если свойством Optimizer.UseSuboptimalSolution
контроллера является true
. Для получения дополнительной информации смотрите Субоптимальное Решение QP.
Добавьте импорт (md
), с которым вы соединяете измеренный сигнал воздействия. Количество измеренных воздействий задано для вашего контроллера, , должен совпадать с размерностями связанного сигнала воздействия.
Количество измеренных воздействий не должно изменяться с одного момента управления на следующее, и каждое значение воздействия должно быть вещественным числом.
Когда md
является 1 сигналом nmd, нет никакого измеренного предварительного просмотра воздействия. Контроллер применяет текущие значения воздействия через горизонт прогноза.
Чтобы использовать предварительный просмотр воздействия, задайте md
как N-by-nmd сигнал, где N является количеством временных шагов, которыми известны измеренные воздействия. Здесь, , и 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) nu, используемые на объекте. Используйте эту опцию, когда мВ применился к объекту между временем, tk–1 и tk отличаются, чем оптимальный мВ, вычисленный в последнем интервале управления, например, должны сигнализировать о насыщении или условии переопределения. Когда включено, блок использует этот сигнал исправить оценки состояния контроллера в tk.
Оценка состояния контроллера принимает, что мВ является кусочной константой. Во время tk значением ext.mv
должен быть эффективный мВ между временами tk–1 и tk. Например, если мВ на самом деле отличается на этом интервале, вы можете предоставить усредненное во времени значение, оцененное во время tk.
Следующий пример, из модели mpc_bumpless
, включает переключатель, который может заменить контроллер вывод с сигналом, предоставленным оператором. Кроме того, контроллер вывел, может насыщать. Возвращение фактического мВ, используемого на объекте (маркировал u(t)
в примере), улучшает точность оценок состояния контроллера.
Если внешняя опция мВ неактивна или импорт ext.mv
в несвязанном, контроллер принимает, что его MV вывод используется на объекте без модификации.
Используя эту опцию может вызвать алгебраический цикл в модели Simulink, поскольку существует прямое сквозное соединение от импорта ext.mv
до выходного порта mv
. Чтобы предотвратить такие алгебраические циклы, вставьте блок Блок памяти или Unit Delay.
Если вы хотите, чтобы один или несколько переменные, которыми управляют, (MV) отследил целевые значения, которые изменяются со временем, используют эту опцию, чтобы добавить импорт mv.target
. Соедините этот порт с целевым сигналом с размерностью nu, где nu является количеством MVS.
Для этого, чтобы быть эффективным, соответствующий мВ должен иметь ненулевые веса штрафа (эти веса являются нулем по умолчанию).
Добавьте выходной порт (cost
), который обеспечивает оптимальное значение целевой функции квадратичного программирования в текущее время (неотрицательный скаляр). Если контроллер выполняет хорошо, и никакие ограничения не были нарушены, значение должно быть маленьким. Если задача оптимизации неосуществима, однако, значение бессмысленно. (См. qp.status
.)
Добавьте выходной порт (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
, чтобы поставить будильник или принять другие специальные меры.
Следующая схема показывает, как использовать индикатор состояния, чтобы контролировать блок MPC Controller в режиме реального времени. Для получения дополнительной информации смотрите Контролирующее Состояние Оптимизации, чтобы Обнаружить Отказы контроллера.
Добавьте выходной порт (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 конечные значения. i
th элемент umin
заменяет свойство ManipulatedVariables(i).Min
контроллера во время выполнения.
Если переменной, которой управляют, не задали нижнюю границу в объекте контроллера, то соответствующее связанное значение сигналов проигнорировано.
Если этот параметр не выбран, блок использует постоянные ограничительные значения, сохраненные в его объекте mpc
.
Вы не можете задать изменяющиеся во времени ограничения во время выполнения с помощью матричного сигнала.
Если свойство ManipulatedVariables(i).Min
контроллера задано как вектор (то есть, ограничение отличается по горизонту прогноза), i
th элемент umin
заменяет первую конечную запись в этом векторе и остающийся сдвиг значений, чтобы сохранить тот же ограничительный профиль.
Добавьте импортируют umax
, который можно соединить с ограничительным сигналом во время выполнения для переменных верхних границ, которыми управляют. Этот сигнал является вектором с nu конечные значения. i
th элемент umax
заменяет свойство ManipulatedVariables(i).Max
контроллера во время выполнения.
Если переменной, которой управляют, не задали верхнюю границу в объекте контроллера, то соответствующее связанное значение сигналов проигнорировано.
Если этот параметр не выбран, блок использует постоянные ограничительные значения, сохраненные в его объекте mpc
.
Вы не можете задать изменяющиеся во времени ограничения во время выполнения с помощью матричного сигнала.
Если свойство ManipulatedVariables(i).Max
контроллера задано как вектор (то есть, ограничение отличается по горизонту прогноза), i
th элемент umax
заменяет первую конечную запись в этом векторе и остающийся сдвиг значений, чтобы сохранить тот же ограничительный профиль.
Добавьте импортируют ymin
, который можно соединить с ограничительным сигналом во время выполнения для нижних границ выходной переменной. Этот сигнал является вектором с ny конечные значения. i
th элемент ymin
заменяет свойство OutputVariables(i).Min
контроллера во время выполнения.
Если выходной переменной не задали нижнюю границу в объекте контроллера, то соответствующее связанное значение сигналов проигнорировано.
Если этот параметр не выбран, блок использует постоянные ограничительные значения, сохраненные в его объекте mpc
.
Вы не можете задать изменяющиеся во времени ограничения во время выполнения с помощью матричного сигнала.
Если свойство OutputVariables(i).Min
контроллера задано как вектор (то есть, ограничение отличается по горизонту прогноза), i
th элемент ymin
заменяет первую конечную запись в этом векторе и остающийся сдвиг значений, чтобы сохранить тот же ограничительный профиль.
Добавьте импортируют ymax
, который можно соединить с ограничительным сигналом во время выполнения для верхних границ выходной переменной. Этот сигнал является вектором с ny конечные значения. i
th элемент ymax
заменяет свойство OutputVariables(i).Max
контроллера во время выполнения.
Если выходной переменной не задали верхнюю границу в объекте контроллера, то соответствующее связанное значение сигналов проигнорировано.
Если этот параметр не выбран, блок использует постоянные ограничительные значения, сохраненные в его объекте mpc
.
Вы не можете задать изменяющиеся во времени ограничения во время выполнения с помощью матричного сигнала.
Если свойство OutputVariables(i).Max
контроллера задано как вектор (то есть, ограничение отличается по горизонту прогноза), i
th элемент ymax
заменяет первую конечную запись в этом векторе и остающийся сдвиг значений, чтобы сохранить тот же ограничительный профиль.
Добавьте импортирует E
, F
, G
и S
к блоку, который можно соединить со следующими пользовательскими сигналами матрицы ограничений во время выполнения:
Матрица ограничений переменной E
— Manipulated с размером nc-by-nu, где nc является количеством пользовательских ограничений
F
— Controlled матрица ограничений вывода с размером nc-by-ny
G
Пользовательская матрица ограничений с размером 1 nc
S
Измеренная матрица ограничений воздействия, с размером nc-by-nv, где nv является количеством измеренных воздействий. S
добавляется, только если объект mpc
измерил воздействия.
Эти ограничения заменяют пользовательские ограничения ранее набор с помощью setconstraint
.
Если вы задаете E
, F
, G
или S
в объекте mpc
, необходимо соединить сигнал с соответствующим импортом, и что сигнал должен иметь те же размерности как массив, заданный в контроллере. Если массив не задан в объекте контроллера, используйте нулевую матрицу с правильным размером.
Пользовательские ограничения имеют форму E
u + F
y + S
v <= G
, где:
u является вектором значений переменных, которыми управляют.
y является вектором предсказанных выходных значений объекта.
v является вектором измеренных входных значений воздействия объекта.
Для получения дополнительной информации смотрите Ограничения на Линейные комбинации Вводов и выводов.
Контроллер, предназначенный для приложений реального времени, должен иметь "кнопки", которые можно использовать, чтобы настроить его производительность, когда он действует с действительным объектом. Эта группа дополнительного импорта служит той цели.
Схема, показанная ниже показов три из Контроллера MPC, настраивающего импорт. В этом контексте симуляции импорт настраивается с помощью предварительно сохраненных сигналов (ywt
, duwt
и переменные ECRwt
в От блоков Рабочей области). На практике вы соединили бы кнопку или подобную ручную настройку.
Вы не можете задать изменяющиеся во времени веса во время выполнения с помощью матричного сигнала.
Добавьте импорт (y.wt
), что можно соединить с переменной вывода во время выполнения (OV) сигнал веса. Этот сигнал заменяет свойство Weights.OV
объекта mpc
, который устанавливает относительную важность отслеживания уставки OV.
Чтобы использовать те же настраивающие веса по горизонту прогноза, соедините y.wt
с векторным сигналом с элементами ny, где ny является количеством управляемых выходных параметров. Каждый элемент задает неотрицательный настраивающий вес для каждой управляемой выходной переменной. Для получения дополнительной информации об определении настраивающихся весов смотрите Веса Мелодии.
Чтобы отличаться настраивающиеся веса по горизонту прогноза, соедините y.wt
с матричным сигналом со столбцами ny и до строк p, где p является горизонтом прогноза. Каждая строка содержит настраивающиеся веса для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, настраивающиеся веса в итоговой строке запрашивают остаток от горизонта прогноза. Для получения дополнительной информации о переменных весах по горизонту прогноза смотрите Изменяющиеся во времени Веса и Ограничения.
Если вы не соединяете сигнал с импортом y.wt
, блок использует веса OV, заданные в вашем объекте mpc
.
Добавьте импорт (u.wt
), который можно соединить с сигналом веса переменной, которой управляют, (MV) во время выполнения. Этот сигнал заменяет свойство Weights.MV
объекта mpc
, который устанавливает относительную важность целевого отслеживания мВ.
Чтобы использовать те же настраивающие веса по горизонту прогноза, соедините u.wt
с векторным сигналом с элементами nu, где nu является количеством переменных, которыми управляют. Каждый элемент задает неотрицательный настраивающий вес для каждой переменной, которой управляют. Для получения дополнительной информации об определении настраивающихся весов смотрите Веса Мелодии.
Чтобы отличаться настраивающиеся веса по горизонту прогноза, соедините u.wt
с матричным сигналом со столбцами nu и до строк p, где p является горизонтом прогноза. Каждая строка содержит настраивающиеся веса для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, настраивающиеся веса в итоговой строке запрашивают остаток от горизонта прогноза. Для получения дополнительной информации о переменных весах по горизонту прогноза смотрите Изменяющиеся во времени Веса и Ограничения.
Если вы не соединяете сигнал с импортом u.wt
, блок использует веса мВ, заданные в вашем объекте mpc
.
Добавьте импорт (du.wt
), который можно соединить с сигналом веса уровня переменной, которой управляют, (MV) во время выполнения. Этот сигнал заменяет свойство Weights.MVrate
объекта mpc
, который устанавливает относительную важность изменений мВ.
Чтобы использовать те же настраивающие веса по горизонту прогноза, соедините du.wt
с векторным сигналом с элементами nu, где nu является количеством переменных, которыми управляют. Каждый элемент задает неотрицательный настраивающий вес для каждого плавающего курса, которым управляют. Для получения дополнительной информации об определении настраивающихся весов смотрите Веса Мелодии.
Чтобы отличаться настраивающиеся веса по горизонту прогноза, соедините du.wt
с матричным сигналом со столбцами nu и до строк p, где p является горизонтом прогноза. Каждая строка содержит настраивающиеся веса для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, настраивающиеся веса в итоговой строке запрашивают остаток от горизонта прогноза. Для получения дополнительной информации о переменных весах по горизонту прогноза смотрите Изменяющиеся во времени Веса и Ограничения.
Если вы не соединяете сигнал с импортом du.wt
, блок использует веса уровня мВ, заданные в вашем объекте mpc
.
Добавьте импорт (ecr.wt
) для скалярного неотрицательного сигнала, который заменяет свойство MPCobj.Weights.ECR
контроллера mpc
. Этот импорт не имеет никакого эффекта, если ваш объект контроллера не задает мягкие ограничения, чьи связанные значения ECR являются ненулевыми.
Если существуют мягкие ограничения, увеличивание значения ecr.wt
делает эти ограничения относительно тяжелее. Контроллер затем помещает более высокий приоритет в минимизацию значения предсказанного ограничительного нарушения худшего случая.
Вы не можете смочь избежать нарушений ограничения выходной переменной. Таким образом увеличение значения ecr.wt
часто контрпродуктивно. Такое увеличение заставляет контроллер обращать меньше внимания на его другие цели и не помогает уменьшать ограничительные нарушения. Обычно необходимо настраивать ecr.wt
, чтобы достигнуть соответствующего баланса относительно других целей управления.
Если вы хотите отличаться свой прогноз и горизонты управления во время выполнения, выберите этот параметр. Выполнение так добавляет следующие входные порты в блок:
p
Горизонт прогноза, заданный как положительный целочисленный сигнал. Значение сигналов горизонта прогноза должно быть меньше чем или равно параметру Maximum prediction horizon.
m
Управляйте горизонтом, заданным как одно из следующего:
Положительный целочисленный сигнал, меньше чем или равный горизонту прогноза.
Векторный сигнал положительного целочисленного определения, блокирующего длины интервала. Для получения дополнительной информации смотрите Переменное Блокирование, которым Управляют.
Во время выполнения значения p
и сигналов m
заменяют горизонты по умолчанию, заданные в объекте контроллера.
Для получения дополнительной информации смотрите, Настраивают Горизонты во Время выполнения.
Задайте максимальное значение горизонта прогноза при варьировании горизонта прогноза во время выполнения. Это значение, Pmax, используется, чтобы задать:
Количество строк в оптимальных выходных сигналах последовательности mv.seq
, x.seq
и y.seq
. При варьировании горизонта прогноза во время выполнения эти сигналы имеют Pmax +1 строка.
Максимальное количество строк для изменяющихся во времени входных сигналов весов y.wt
, u.wt
и du.wt
. При варьировании горизонта прогноза во время выполнения эти сигналы могут иметь в большинстве строк Pmax.
Чтобы включить этот параметр, выберите параметр Adjust prediction horizon and control horizon at run time.
Для получения дополнительной информации смотрите, Настраивают Горизонты во Время выполнения.
Задайте шаг расчета блока по умолчанию и размерности сигнала для выполнения симуляции, обрезки или линеаризации. В этих случаях выходной сигнал mv
остается в нуле. Необходимо задать значения условия по умолчанию, которые совместимы с проектом модели Simulink.
Эти условия по умолчанию применяются, только если поле MPC Controller пусто. Если вы задаете контроллер от рабочего пространства MATLAB, шаг расчета и размеры сигнала от заданного диспетчера используются.
Задайте шаг расчета контроллера по умолчанию.
Задайте размерности сигнала по умолчанию для следующих типов входного сигнала:
Переменные, которыми управляют,
Неизмеренные воздействия
Измеренные воздействия
Можно указать, что измеренные воздействия сигнализируют о размерности, только если, на разделе General, в разделе Additional Inports, опция Measured disturbance выбрана.
Задайте размерности сигнала по умолчанию для следующих типов выходного сигнала:
Измеренные выходные параметры
Неизмеренные выходные параметры
Задайте тип данных блока переменных, которыми управляют, как одно из следующего:
'double'
Плавающая точка двойной точности (значение по умолчанию)
единственный
Плавающая точка с одинарной точностью
Если вы реализуете блок на цели с одинарной точностью, задаете тип выходных данных как single
.
Для примера симуляции с одинарной точностью и с двойной точностью и генерации кода для контроллера MPC, смотрите Симуляцию и Генерацию кода Используя Simulink Coder.
Чтобы просмотреть типы данных порта в модели, в Редакторе Simulink, выбирают Display > Signals & Ports Port Data Types.
Используйте шаг расчета родительской подсистемы как шаг расчета блока. Выполнение так позволяет вам условно выполнять этот блок в Подсистеме вызова функций или Инициированных блоках Subsystem. Для примера смотрите Используя диспетчера MPC Блока В Вызове функции и Инициированных Подсистемах.
Необходимо выполнить Подсистему вызова функций или Инициированные блоки Subsystem на уровне частоты дискретизации контроллера. В противном случае вы видите неожиданные результаты.
Чтобы просмотреть шаг расчета блока, в Редакторе Simulink, выбирают Display > Sample Time. Выберите Colors, Annotations или All. Для получения дополнительной информации, информация о Шаге расчета вида на море (Simulink).
Добавьте импорт (switch
), вход которого задает, выполняет ли контроллер вычисления оптимизации. Если входной сигнал является нулем, контроллер обычно ведет себя. Если входной сигнал является ненулевым, блок MPC Controller выключает вычисления оптимизации контроллера. Это действие уменьшает вычислительное усилие, когда контроллер, вывод не нужен, такой как тогда, когда система действует вручную или другой контроллер, вступил во владение. Однако контроллер продолжает обновлять его оценки внутреннего состояния обычным способом. Таким образом это готово возобновить вычисления оптимизации каждый раз, когда switch
сигнализирует о возвратах к нулю. В то время как оптимизация контроллера выключена, блок MPC Controller передает текущий сигнал ext.mv
выводу контроллера. Если импорт ext.mv
не включен, контроллер, которым вывод сохранен в значении, которое это имело, когда оптимизация была отключена.