Опции симуляции MPC
При симуляции неявного или явного контроллера MPC, использующего sim
функция, можно задать опции дополнительной симуляции с помощью mpcsimopt
объект.
mpcobj
— Контроллер MPC объектmpc
возразите | explicitMPC
объектДиспетчер MPC возражает в виде любого mpc
или explicitMPC
объект.
PlantInitialState
— Начальное состояние модели объекта управления симуляции[]
(значение по умолчанию) | векторНачальное состояние модели объекта управления симуляции в виде вектора с длиной равняется состояниям номера в модели объекта управления, используемой для симуляции. Чтобы использовать номинальное состояние по умолчанию модели объекта управления симуляции, установите PlantInitialState
к []
.
Если вы не задаете Model
опция, затем модель объекта управления, используемая для симуляции, является внутренней моделью объекта управления от диспетчера. В этом случае начальное состояние контроллера по умолчанию равно mpcobj.Model.Nominal.X
.
Если вы задаете Model
опцией, затем модель объекта управления, используемая для симуляции, является Model.Plant
. В этом случае начальное состояние контроллера по умолчанию равно Model.Nominal.X
.
ControllerInitialState
— Контроллер MPC условие начальной буквы[]
(значение по умолчанию) | mpcstate
объектКонтроллер MPC условие начальной буквы в виде mpcstate
объект. Установка ControllerInitialState = []
эквивалентно установке ControllerInitialState = mpcstate(mpcobj)
.
UnmeasuredDisturbance
— Неизмеренный сигнал воздействия[]
(значение по умолчанию) | массивНеизмеренный сигнал воздействия для симуляции воздействий, происходящих в неизмеренных входных параметрах воздействия модели объекта управления симуляции в виде массива со столбцами Nud и до строк Nt, где Nud является количеством неизмеренных воздействий и Nt, является количеством шагов симуляции. Если вы задаете меньше, чем строки Nt, то значения в итоговой строке массива расширены в конец симуляции.
InputNoise
— Переменный шумовой сигнал, которым управляют,[]
(значение по умолчанию) | массивПеременный шумовой сигнал, которым управляют, для симуляции воздействий загрузки, происходящих во вводах переменной, которыми управляют, с моделью объекта управления симуляции в виде массива со столбцами Nmv и до строк Nt, где Nmv является количеством переменных, которыми управляют и Nt, является количеством шагов симуляции. Если вы задаете меньше, чем строки Nt, то значения в итоговой строке массива расширены в конец симуляции.
OutputNoise
— Измеренный выходной сигнал шума[]
(значение по умолчанию) | массивИзмеренный выходной сигнал шума для симуляции воздействий, происходящих при измеренном выходе модели объекта управления симуляции в виде массива со столбцами Ny и до строк Nt, где Ny является количеством измеренных выходных параметров и Nt, является количеством шагов симуляции. Если вы задаете меньше, чем строки Nt, то значения в итоговой строке массива расширены в конец симуляции.
RefLookAhead
— Отметьте указание, использовать ли ссылочный предварительный просмотр'off'
(значение по умолчанию) | 'on'
Отметьте указание, использовать ли ссылку, предварительно просматривающую в процессе моделирования в виде одного из следующего:
'off'
— Не используйте ссылочный предварительный просмотр.
'on'
— Используйте ссылочный предварительный просмотр.
При симуляции явного контроллера MPC необходимо установить RefLookAhead
к 'off'
.
MDLookAhead
— Отметьте указание, использовать ли измеренный предварительный просмотр воздействия'off'
(значение по умолчанию) | 'on'
Отметьте указание, использовать ли измеренное воздействие, предварительно просматривающее в процессе моделирования в виде одного из следующего:
'off'
— Не используйте измеренный предварительный просмотр воздействия.
'on'
— Используйте измеренный предварительный просмотр воздействия.
При симуляции явного контроллера MPC необходимо установить MDLookAhead
к 'off'
.
Constraints
— Отметьте указание, разрешить ли ограничения'on'
(значение по умолчанию) | 'off'
Отметьте указание, разрешить ли ограничения в процессе моделирования в виде одного из следующего:
'on'
— Используйте ограничения, заданные в контроллере в процессе моделирования.
'off'
— Симулируйте контроллер без любых ограничений.
Model
— Модель объекта управления, чтобы использовать для симуляции[]
(значение по умолчанию) | системный объект LTI | структураМодель объекта управления, чтобы использовать для симуляции в виде одного из следующего:
[]
— Симулируйте контроллер против его внутренней модели объекта управления (mpcobj.Model
). В этом случае нет никакого несоответствия модели объекта управления.
Системный объект LTI — Симулирует контроллер против заданного объекта LTI. Заданный объект должен иметь ту же настройку группы ввода и вывода как mpcobj.Model.Plant
. Чтобы установить эту настройку, использовать setmpcsignals
.
Структура с полями Plant
и Nominal
— Симулируйте контроллер, использующий заданный объект (Plant
) и номинальные условия (Nominal
).
Model
устанавливает фактический объект, что контроллер симулирован против (не внутренняя модель предсказания контроллера). Используйте эту опцию, чтобы задать объект, который отличается от диспетчера внутренняя модель объекта управления (несоответствие модели).
Если вы не задаете номинальные условия, Model.Nominal.U
и Model.Nominal.Y
наследованы от mpcobj.Model.Nominal
. Model.Nominal.X
и Model.Nominal.DX
только наследованы, если оба объекта являются объектами пространства состояний с той же размерностью состояния.
Чтобы задать начальное состояние этой модели объекта управления симуляции, используйте PlantInitialState
опция.
StatusBar
— Отметьте указание, отобразить ли строку состояния симуляции'off'
(значение по умолчанию) | 'on'
Отметьте указание, отобразить ли строку состояния симуляции в виде одного из следующего:
'off'
— Не отображайте строку состояния.
'on'
— Отобразите строку состояния.
MVSignal
— Последовательность переменных, которыми управляют,[]
(значение по умолчанию) | массивПоследовательность переменных, которыми управляют, чтобы использовать во время симуляции разомкнутого контура в виде массива со столбцами Nmv и до строк Nt, где Nmv является количеством переменных, которыми управляют и Nt, является количеством шагов симуляции. Если вы задаете меньше, чем строки Nt, то значения в итоговой строке массива расширены в конец симуляции. Заданные переменные сигналы, которыми управляют, должны включать любые переменные смещения, которыми управляют.
Если вы задаете MVSignal
, затем контроллер не вычисляет действия управления, и опорный сигнал симуляции проигнорирован.
OpenLoop
— Отметьте указание, запустить ли симуляцию разомкнутого контура'off'
(значение по умолчанию) | 'on'
Отметьте указание, запустить ли симуляцию разомкнутого контура в виде одного из следующего:
'off'
— Не отображайте строку состояния.
'on'
— Отобразите строку состояния.
sim | Симулируйте ответ замкнутого цикла/разомкнутого контура на произвольную ссылку и сигналы воздействия для неявного или явного MPC |
Симулируйте MPC управление мультивходом, мультивыведите (MIMO) систему с несоответствием между предсказанными и фактическими моделями объекта управления. Система имеет две переменные, которыми управляют, два неизмеренных воздействия и два измеренных выходных параметров.
Задайте предсказанную модель объекта управления.
p1 = tf(1,[1 2 1])*[1 1;0 1]; plantPredict = ss([p1 p1]); plantPredict.InputName = {'mv1','mv2','umd3','umd4'};
Задайте типы сигнала MPC.
plantPredict = setmpcsignals(plantPredict,'MV',[1 2],'UD',[3 4]);
Создайте контроллер MPC.
mpcobj = mpc(plantPredict,1,40,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.
Задайте неизмеренное входное возмущение, используемое контроллером.
distModel = eye(2,2)*ss(-0.5,1,1,0); mpcobj.Model.Disturbance = distModel;
Задайте фактическую модель объекта управления, которая отличается от предсказанной модели и имеет непредвиденные неизмеренные входные параметры воздействия.
p2 = tf(1.5,[0.1 1 2 1])*[1 1;0 1]; plantActual = ss([p2 p2 tf(1,[1 1])*[0;1]]); plantActual = setmpcsignals(plantActual,'MV',[1 2],'UD',[3 4 5]);
Сконфигурируйте неизмеренное воздействие и выведите ссылочные траектории.
dist = ones(1,3); refs = [1 2];
Создайте и сконфигурируйте набор опции симуляции.
options = mpcsimopt(mpcobj); options.UnmeasuredDisturbance = dist; options.Model = plantActual;
Симулируйте систему.
sim(mpcobj,20,refs,options)
-->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. -->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.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.