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 объект — Неявный контроллер MPC

  • explicitMPC объект — Явный контроллер 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

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

Поле Описание
ABCDМатрицы пространства состояний модели в пространстве состояний дискретного времени.
XНоминальные состояния объекта
UНоминальные входные параметры объекта
YНоминальный объект выходные параметры
DXНоминальные производные состояния объекта

model поле возвращено только когда любой IsAdaptive или IsLTV парой "имя-значение" является true.

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

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

Введенный в R2016a