exponenta event banner

getCodeGenerationData

Создание структур данных для mpcmoveCodeGeneration

Описание

Эта функция используется для создания структур данных для mpcmoveCodeGeneration функция, которая вычисляет оптимальные перемещения управления для неявных и явных линейных контроллеров MPC.

Для получения информации о создании структур данных для nlmpcmoveCodeGeneration, см. getCodeGenerationData.

пример

[configData,stateData,onlineData] = getCodeGenerationData(mpcobj) создает структуры данных для использования с mpcmoveCodeGeneration.

пример

[___] = getCodeGenerationData(___,Name,Value) задает дополнительные параметры с использованием одного или нескольких Name,Value аргументы пары.

Примеры

свернуть все

Создайте модель завода и определите типы сигналов MPC.

plant = rss(3,2,2);
plant.D = 0;
plant = setmpcsignals(plant,'mv',1,'ud',2,'mo',1,'uo',2);

Создайте контроллер MPC.

mpcObj = mpc(plant,0.1);
-->The "PredictionHorizon" property of "mpc" object is empty. Trying PredictionHorizon = 10.
-->The "ControlHorizon" property of the "mpc" object is empty. Assuming 2.
-->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.
   for output(s) y1 and zero weight for output(s) y2 

Настройте параметры контроллера. Например, определите границы для управляемой переменной.

mpcObj.ManipulatedVariables.Min = -1;
mpcObj.ManipulatedVariables.Max = 1;

Создание структур данных генерации кода.

[configData,stateData,onlineData] = getCodeGenerationData(mpcObj);
-->Converting model to discrete time.
-->The "Model.Disturbance" property of "mpc" object is empty:
   Assuming unmeasured input disturbance #2 is integrated white noise.
   Assuming no disturbance added to measured output channel #1.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
-->Converting model to discrete time.
-->The "Model.Disturbance" property of "mpc" object is empty:
   Assuming unmeasured input disturbance #2 is integrated white noise.
   Assuming no disturbance added to measured output channel #1.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Создайте модель завода и определите типы сигналов MPC.

plant = rss(3,2,2);
plant.D = 0;

Создайте контроллер MPC.

mpcObj = mpc(plant,0.1);
-->The "PredictionHorizon" property of "mpc" object is empty. Trying PredictionHorizon = 10.
-->The "ControlHorizon" property of the "mpc" object is empty. Assuming 2.
-->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.

Создание структур данных генерации кода. Настройка параметров для:

  • Используйте значения с плавающей запятой одинарной точности в создаваемом коде.

  • Повысьте эффективность вычислений, не вычисляя оптимальные данные последовательности.

  • Запустите контроллер MPC в адаптивном режиме.

[configData,stateData,onlineData] = getCodeGenerationData(mpcObj,...
    'DataType','single','OnlyComputeCost',true,'IsAdaptive',true);
-->Converting model to discrete time.
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
-->Assuming output disturbance added to measured output channel #2 is integrated white noise.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
-->Converting model to discrete time.
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
-->Assuming output disturbance added to measured output channel #2 is integrated white noise.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Входные аргументы

свернуть все

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

  • mpc object - неявный контроллер MPC

  • explicitMPC object - явный контроллер MPC, созданный с помощью generateExplicitMPC.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'DataType','single' указывает, что созданный код использует значения с плавающей запятой с одинарной точностью.

Исходное состояние контроллера при использовании mpcmoveCodeGeneration, указанная как пара, разделенная запятыми, состоящая из 'InitialState' и mpcstate объект. Это состояние используется вместо информации о состоянии по умолчанию из mpcobj.

Тип данных, используемый в сгенерированном коде при использовании mpcmoveCodeGeneration, указанный как пара, разделенная запятыми, состоящая из 'DataType' и одно из следующих:

  • 'double' - использовать значения с плавающей запятой двойной точности.

  • 'single' - использовать значения с плавающей запятой с одинарной точностью.

Переключение для вычисления только оптимальной стоимости во время моделирования при использовании mpcmoveCodeGeneration, указанный как пара, разделенная запятыми, состоящая из 'OnlyComputeCost' и либо true или false. Чтобы снизить вычислительную нагрузку, не вычисляя оптимальные данные последовательности, установите OnlyComputeCost кому true.

Индикатор адаптивного MPC при использовании mpcmoveCodeGeneration, указанный как пара, разделенная запятыми, состоящая из 'IsAdaptive' и либо true или false. Набор IsAdaptive кому true если контроллер работает в адаптивном режиме.

Дополнительные сведения о адаптивном MPC см. в разделе Адаптивный MPC.

Примечание

IsAdaptive и IsLTV не может быть true одновременно.

Изменяющийся во времени индикатор MPC при использовании mpcmoveCodeGeneration, указанная как пара, разделенная запятыми, состоящая из 'IsLTV' и либо true или false. Набор IsLTV кому true если контроллер работает в изменяющемся во времени режиме.

Дополнительные сведения о изменяющемся во времени MPC см. в разделе Изменяющийся во времени MPC.

Примечание

IsAdaptive и IsLTV не может быть true одновременно.

Индикатор переменного горизонта при использовании mpcmoveCodeGeneration, указанная как пара, разделенная запятыми, состоящая из 'UseVariableHorizon' и либо true или false. Чтобы изменить горизонты прогнозирования и управления во время выполнения, установите UseVariableHorizons кому true.

При использовании переменных горизонтов mpcmoveCodeGeneration игнорирует горизонты, указанные в configData и вместо этого использует горизонт прогнозирования и управления, указанный в onlineData.horizons.

Дополнительные сведения см. в разделе Корректировка горизонтов во время выполнения.

Выходные аргументы

свернуть все

Параметры конфигурации MPC, которые являются постоянными во время выполнения, возвращаются в виде структуры. Эти параметры получены из настроек контроллера в mpcobj. При моделировании геймпада передайте configData кому mpcmoveCodeGeneration без изменения каких-либо параметров.

Для получения дополнительной информации о том, как сгенерированный код MPC использует матрицы констант в configData для решения проблемы QP см. раздел Строительство проблемы QP для сгенерированного кода C.

Начальные состояния контроллера, возвращенные в виде структуры. Инициализация моделирования с начальными состояниями, определенными в mpcobj, пройти stateData кому mpcmoveCodeGeneration. Чтобы использовать другие начальные условия, измените stateData. Можно указать состояния контроллера, не используемые по умолчанию, с помощью InitialState.

Для получения дополнительной информации о stateData поля, см. mpcmoveCodeGeneration.

stateData имеет следующие поля.

ОбластьОписание
Plant

Оценки состояния модели установки

Disturbance

Оценки состояния модели неизмеренного возмущения

Noise

Оценки состояния модели шума выходного измерения

LastMove

Управление управляемыми переменными перемещается из предыдущего интервала управления

Covariance

Ковариационная матрица для оценок состояния контроллера

iA

Активные ограничения неравенства

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

ОбластьОписание
signals

Входные и выходные сигналы, возвращаемые в виде структуры со следующими полями.

ОбластьОписание
ymИзмеренные выходы
refВыходные ссылки
mdИзмеренные возмущения
mvTargetЦели для управляемых переменных
externalMVУправляемые переменные, применяемые к заводу извне

limits

Ограничения ввода и вывода, возвращаемые в виде структуры со следующими полями:

ОбластьОписание
yminНижние границы выходных сигналов
ymaxВерхние границы выходных сигналов
uminНижние границы входных сигналов
umaxВерхние границы входных сигналов

Когда mpcobj явный контроллер MPC, mpcmoveCodeGeneration игнорирует limits поле.

weights

Обновленные веса оптимизации QP, возвращенные в виде структуры со следующими полями:

ОбластьОписание
ywtВыходные веса
uwtМанипулируемые переменные веса
duwtМанипулируемые веса переменной скорости
ecrВес переменной ослабления, используемой для смягчения ограничения

Когда mpcobj явный контроллер MPC, mpcmoveCodeGeneration игнорирует weights поле.

customconstraints

Обновлены настраиваемые смешанные ограничения ввода/вывода, возвращенные в виде структуры со следующими полями:

ОбластьОписание
E Константа изменяемой зависимости
FКонстанта контролируемого выходного ограничения
GКонстанта смешанного ограничения ввода/вывода
SИзмеренная константа ограничения возмущения

Когда mpcobj явный контроллер MPC, mpcmoveCodeGeneration игнорирует customconstraints поле.

horizons

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

ОбластьОписание
p Горизонт прогнозирования
mГоризонт управления

horizons возвращается только в том случае, если UseVariableHorizon пара имя-значение true.

Когда mpcobj явный контроллер MPC, mpcmoveCodeGeneration игнорирует horizons поле.

model

Обновленные заводские и номинальные значения для адаптивного ПДК и изменяющегося во времени ПДК, возвращаемые в виде структуры со следующими полями:

ОбластьОписание
A, B, C, DМатрицы состояния-пространства дискретно-временной модели состояния-пространства.
XНоминальные состояния установки
UНоминальные заводские вводы
YНоминальные выходы установки
DXНоминальные производные состояния растений

model возвращается только в том случае, если IsAdaptive или IsLTV пара имя-значение true.

getCodeGenerationData прибыль onlineData с пустыми матрицами для всех полей структуры, за исключением signals.ref, signals.ym, и signals.md. Эти поля содержат соответствующие номинальные значения сигналов из mpcobj. Если контроллер не имеет измеренных возмущений, signals.md возвращается как пустая матрица.

Дополнительные сведения о настройке onlineData поля, см. mpcmoveCodeGeneration.

Представлен в R2016a