Создание структур данных для 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.
mpcobj - Прогнозирующий контроллер моделиmpc объект | explicitMPC объектПрогнозирующий контроллер модели, указанный как один из следующих параметров:
mpc object - неявный контроллер MPC
explicitMPC object - явный контроллер MPC, созданный с помощью generateExplicitMPC.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'DataType','single' указывает, что созданный код использует значения с плавающей запятой с одинарной точностью.'InitialState' - Исходное состояние контроллераmpcstate объект'DataType' - Тип данных, используемый в сгенерированном коде'double' (по умолчанию) | 'single'Тип данных, используемый в сгенерированном коде при использовании mpcmoveCodeGeneration, указанный как пара, разделенная запятыми, состоящая из 'DataType' и одно из следующих:
'double' - использовать значения с плавающей запятой двойной точности.
'single' - использовать значения с плавающей запятой с одинарной точностью.
'OnlyComputeCost' - Переключение для вычисления только оптимальной стоимостиfalse (по умолчанию) | trueПереключение для вычисления только оптимальной стоимости во время моделирования при использовании mpcmoveCodeGeneration, указанный как пара, разделенная запятыми, состоящая из 'OnlyComputeCost' и либо true или false. Чтобы снизить вычислительную нагрузку, не вычисляя оптимальные данные последовательности, установите OnlyComputeCost кому true.
'IsAdaptive' - Индикатор адаптивного MPCfalse (по умолчанию) | trueИндикатор адаптивного MPC при использовании mpcmoveCodeGeneration, указанный как пара, разделенная запятыми, состоящая из 'IsAdaptive' и либо true или false. Набор IsAdaptive кому true если контроллер работает в адаптивном режиме.
Дополнительные сведения о адаптивном MPC см. в разделе Адаптивный MPC.
Примечание
IsAdaptive и IsLTV не может быть true одновременно.
'IsLTV' - Индикатор изменения ПДК во времениfalse (по умолчанию) | trueИзменяющийся во времени индикатор MPC при использовании mpcmoveCodeGeneration, указанная как пара, разделенная запятыми, состоящая из 'IsLTV' и либо true или false. Набор IsLTV кому true если контроллер работает в изменяющемся во времени режиме.
Дополнительные сведения о изменяющемся во времени MPC см. в разделе Изменяющийся во времени MPC.
Примечание
IsAdaptive и IsLTV не может быть true одновременно.
'UseVariableHorizon' - Индикатор переменного горизонтаfalse (по умолчанию) | trueИндикатор переменного горизонта при использовании mpcmoveCodeGeneration, указанная как пара, разделенная запятыми, состоящая из 'UseVariableHorizon' и либо true или false. Чтобы изменить горизонты прогнозирования и управления во время выполнения, установите UseVariableHorizons кому true.
При использовании переменных горизонтов mpcmoveCodeGeneration игнорирует горизонты, указанные в configData и вместо этого использует горизонт прогнозирования и управления, указанный в onlineData.horizons.
Дополнительные сведения см. в разделе Корректировка горизонтов во время выполнения.
configData - Параметры конфигурации ПДКПараметры конфигурации MPC, которые являются постоянными во время выполнения, возвращаются в виде структуры. Эти параметры получены из настроек контроллера в mpcobj. При моделировании геймпада передайте configData кому mpcmoveCodeGeneration без изменения каких-либо параметров.
Для получения дополнительной информации о том, как сгенерированный код MPC использует матрицы констант в configData для решения проблемы QP см. раздел Строительство проблемы QP для сгенерированного кода C.
stateData - Начальные состояния контроллераНачальные состояния контроллера, возвращенные в виде структуры. Инициализация моделирования с начальными состояниями, определенными в mpcobj, пройти stateData кому mpcmoveCodeGeneration. Чтобы использовать другие начальные условия, измените stateData. Можно указать состояния контроллера, не используемые по умолчанию, с помощью InitialState.
Для получения дополнительной информации о stateData поля, см. mpcmoveCodeGeneration.
stateData имеет следующие поля.
| Область | Описание |
|---|---|
Plant | Оценки состояния модели установки |
Disturbance | Оценки состояния модели неизмеренного возмущения |
Noise | Оценки состояния модели шума выходного измерения |
LastMove | Управление управляемыми переменными перемещается из предыдущего интервала управления |
Covariance | Ковариационная матрица для оценок состояния контроллера |
iA | Активные ограничения неравенства |
onlineData - Интерактивные данные контроллера MPCИнтерактивные данные контроллера MPC, которые необходимо обновлять на каждом интервале управления, возвращаются в виде структуры со следующими полями.
| Область | Описание | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
signals | Входные и выходные сигналы, возвращаемые в виде структуры со следующими полями.
| ||||||||||||
limits | Ограничения ввода и вывода, возвращаемые в виде структуры со следующими полями:
Когда | ||||||||||||
weights | Обновленные веса оптимизации QP, возвращенные в виде структуры со следующими полями:
Когда | ||||||||||||
customconstraints | Обновлены настраиваемые смешанные ограничения ввода/вывода, возвращенные в виде структуры со следующими полями:
Когда | ||||||||||||
horizons | Обновленные значения горизонта контроллера, возвращенные в виде структуры со следующими полями:
Когда | ||||||||||||
model | Обновленные заводские и номинальные значения для адаптивного ПДК и изменяющегося во времени ПДК, возвращаемые в виде структуры со следующими полями:
|
getCodeGenerationData прибыль onlineData с пустыми матрицами для всех полей структуры, за исключением signals.ref, signals.ym, и signals.md. Эти поля содержат соответствующие номинальные значения сигналов из mpcobj. Если контроллер не имеет измеренных возмущений, signals.md возвращается как пустая матрица.
Дополнительные сведения о настройке onlineData поля, см. mpcmoveCodeGeneration.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.