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.

Чтобы сгенерировать явный контроллер, необходимо задать области значений параметров, таких как значения состояний и манипулируемые переменные. Для этого сгенерируйте структуру области значений. Затем измените значения в структуре на желаемые области значений параметров.

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