generateExplicitRange

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

Описание

пример

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