Границы на явных параметрах закона о MPC управлении
создает структуру границ параметра, основанных на традиционном (неявном) контроллере MPC объект. Структура области значений предназначается для использования в качестве входного параметра к Range
= generateExplicitRange(MPCobj
)generateExplicitMPC
. Обычно, начальные значения области значений, возвращенные generateExplicitRange
не подходят для генерации явного контроллера MPC. Поэтому используйте запись через точку, чтобы установить значения структуры области значений прежде, чем вызвать generateExplicitMPC
.
Сгенерируйте явный контроллер MPC, основанный на традиционном контроллере MPC для объекта с двойным интегратором.
Задайте объект с двойным интегратором.
plant = tf(1,[1 0 0]);
Создайте традиционный (неявный) контроллер MPC для этого объекта, с шагом расчета 0.1, горизонт прогноза 10 и горизонт управления 3.
Ts = 0.1; p = 10; m = 3; MPCobj = mpc(plant,Ts,p,m);
-->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, необходимо указать диапазоны параметров, такие как значения состояния и переменные, которыми управляют. Для этого сгенерируйте структуру области значений. Затем измените значения в структуре к желаемым областям значений параметра.
range = generateExplicitRange(MPCobj);
-->Converting the "Model.Plant" property of "mpc" object to state-space. -->Converting model to discrete time. 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.
range.State.Min(:) = [-10;-10]; range.State.Max(:) = [10;10]; range.Reference.Min = -2; range.Reference.Max = 2; range.ManipulatedVariable.Min = -1.1; range.ManipulatedVariable.Max = 1.1;
Используйте более устойчивый метод сокращения в расчете. Используйте generateExplicitOptions
создать набор опций по умолчанию, и затем изменить polyreduction
опция.
opt = generateExplicitOptions(MPCobj); opt.polyreduction = 1;
Сгенерируйте явный контроллер MPC.
EMPCobj = generateExplicitMPC(MPCobj,range,opt)
Explicit MPC Controller --------------------------------------------- Controller sample time: 0.1 (seconds) Polyhedral regions: 1 Number of parameters: 4 Is solution simplified: No State Estimation: Default Kalman gain --------------------------------------------- Type 'EMPCobj.MPC' for the original implicit MPC design. Type 'EMPCobj.Range' for the valid range of parameters. Type 'EMPCobj.OptimizationOptions' for the options used in multi-parametric QP computation. Type 'EMPCobj.PiecewiseAffineSolution' for regions and gain in each solution.
MPCobj
— Традиционный контроллер MPCТрадиционный контроллер MPC, заданный как контроллер MPC объект. Используйте mpc
команда, чтобы создать традиционный контроллер MPC.
Range
— Границы параметраПараметр ограничивает для генерации явного контроллера MPC от MPCobj
, возвращенный как структура.
Первоначально, минимальные и максимальные границы каждого параметра идентичны. Все такие параметры рассматриваются фиксированными. Когда вы генерируете явный контроллер, любые фиксированные параметры должны быть постоянными, когда контроллер действует. Это вряд ли произойдет в целом. Таким образом необходимо задать допустимые границы для всех параметров. Используйте запись через точку, чтобы установить значения структуры области значений как подходящие для вашей системы.
Поля структуры области значений следующие.
State
— Границы на контроллере утверждают значенияГраницы на контроллере утверждают значения, заданные как структура, содержащая поля Min
и Max
. Каждый Min
и Max
вектор длины nx, где nx является количеством состояний контроллера. Range.State.Min
и Range.State.Max
содержите минимальные и максимальные значения, соответственно, всех состояний контроллера. Например, предположите, что вы проектируете контроллер с двумя состояниями. Вы решили, что областью значений первого состояния контроллера является [-1000,1000]
, и тем из второго состояния контроллера является [0,2*pi]
. Установите эти границы можно следующим образом:
Range.State.Min(:) = [-1000,0]; Range.State.Max(:) = [1000,2*pi];
Контроллер MPC состояния включает состояния от модели объекта управления, возмущения и шумовой модели, в том порядке. Установка области значений переменной состояния иногда затрудняет, когда состояние не соответствует физическому параметру. В этом случае несколько запусков симуляции объекта разомкнутого цикла с типичной ссылкой и сигналами воздействия рекомендуются для того, чтобы собрать данные, которые отражают области значений состояний.
Reference
— Границы на значениях сигналов ссылки контроллераГраницы на значениях сигналов ссылки контроллера, заданных как структура, содержащая поля Min
и Max
. Каждый Min
и Max
вектор длины ny, где ny является количеством объекта выходные параметры. Range.Reference.Min
и Range.Reference.Max
содержите минимальные и максимальные значения, соответственно, всех ссылочных значений сигналов. Например, предположите, что вы проектируете контроллер для 2D выходного объекта. Вы решили, что областью значений первого объекта выход является [-1000,1000]
, и тем из второго объекта выход является [0,2*pi]
. Установите эти границы можно следующим образом:
Range.Reference.Min(:) = [-1000,0]; Range.Reference.Max(:) = [1000,2*pi];
Обычно вы знаете практическую область значений ссылочных сигналов, используемых в номинальной рабочей точке на объекте. Области значений, используемые, чтобы сгенерировать явный контроллер MPC, должны быть, по крайней мере, столь же большими как практическая область значений.
MeasuredDisturbance
— Границы на измеренных значениях воздействияГраницы на измеренных значениях воздействия, заданных как структура, содержащая поля Min
и Max
. Каждый Min
и Max
вектор длины nmd, где nmd является количеством измеренных воздействий. Если ваша система не имеет никаких измеренных воздействий, оставьте сгенерированные значения без изменений этого поля.
Range.MeasuredDisturbance.Min
и Range.MeasuredDisturbance.Max
содержите минимальные и максимальные значения, соответственно, всех измеренных сигналов воздействия. Например, предположите, что вы проектируете контроллер для системы с двумя измеренными воздействиями. Вы решили, что областью значений первого воздействия является [-1,1]
, и тем из второго воздействия является [0,0.1]
. Установите эти границы можно следующим образом:
Range.Reference.Min(:) = [-1,0]; Range.Reference.Max(:) = [1,0.1];
Обычно вы знаете практическую область значений измеренных сигналов воздействия, используемых в номинальной рабочей точке на объекте. Области значений, используемые, чтобы сгенерировать явный контроллер MPC, должны быть, по крайней мере, столь же большими как практическая область значений.
ManipulatedVariable
— Границы на значениях переменных, которыми управляют,Границы на значениях переменных, которыми управляют, заданных как структура, содержащая поля Min
и Max
. Каждый Min
и Max
вектор длины nu, где nu является количеством переменных, которыми управляют. Range.ManipulatedVariable.Min
и Range.ManipulatedVariable.Max
содержите минимальные и максимальные значения, соответственно, всех переменных, которыми управляют. Например, предположите, что ваша система имеет две переменные, которыми управляют. Областью значений первой переменной, которой управляют, является [-1,1]
, и той из второй переменной является [0,0.1]
. Установите эти границы можно следующим образом:
Range.ManipulatedVariable.Min(:) = [-1,0]; Range.ManipulatedVariable.Max(:) = [1,0.1];
Если переменные, которыми управляют, ограничиваются, области значений, используемые, чтобы сгенерировать явный контроллер MPC, должны быть, по крайней мере, столь же большими как эти пределы.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.