generateExplicitRange

Границы на явных параметрах закона о MPC управлении

Синтаксис

Range = generateExplicitRange(MPCobj)

Описание

пример

Range = generateExplicitRange(MPCobj) создает структуру границ параметра, основанных на традиционном (неявном) контроллере MPC объект. Структура области значений предназначается для использования в качестве входного параметра к 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.

Входные параметры

свернуть все

Традиционный контроллер MPC, заданный как контроллер MPC объект. Используйте команду mpc, чтобы создать традиционный контроллер MPC.

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

свернуть все

Параметр ограничивает для генерации явного контроллера MPC от MPCobj, возвращенного как структура.

Первоначально, минимальные и максимальные границы каждого параметра идентичны. Все такие параметры рассматриваются фиксированными. Когда вы генерируете явный контроллер, любые фиксированные параметры должны быть постоянными, когда контроллер действует. Это вряд ли произойдет в целом. Таким образом необходимо задать допустимые границы для всех параметров. Используйте запись через точку, чтобы установить значения структуры области значений как подходящие для вашей системы.

Поля структуры области значений следующие.

Границы на контроллере утверждают значения, заданные как структура, содержащая поля 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 состояния включает состояния от модели объекта управления, возмущения и шумовой модели, в том порядке. Установка области значений переменной состояния является иногда трудной, когда состояние не соответствует физическому параметру. В этом случае несколько выполнений симуляции объекта разомкнутого цикла с типичной ссылкой и сигналами воздействия рекомендуются в порядке собрать данные, которые отражают области значений состояний.

Границы на значениях сигналов ссылки контроллера, заданных как структура, содержащая поля 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, должны быть, по крайней мере, столь же большими как практическая область значений.

Границы на измеренных значениях воздействия, заданных как структура, содержащая поля 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, должны быть, по крайней мере, столь же большими как практическая область значений.

Границы на значениях переменных, которыми управляют, заданных как структура, содержащая поля 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, должны быть, по крайней мере, столь же большими как эти пределы.

Смотрите также

| |

Введенный в R2014b