sim

Симулируйте контроллер MPC в замкнутом цикле с линейным объектом

Описание

Используйте Model Predictive Control Toolbox™ sim функция, чтобы симулировать ответ или разомкнутого контура с обратной связью контроллера MPC с ограничениями и весами, которые не изменяются во время выполнения. Контроллер MPC может быть неявным или явным, управляемый объект должен быть линеен и независим от времени, и необходимо задать ссылку и сигналы воздействия заранее. По умолчанию объект, используемый в симуляции, является тем в MPCobj.Model.Plant, но можно использовать различную модель объекта управления, чтобы оценить робастность контроллера к несоответствию модели.

Чтобы запустить simulink модели программно вместо этого, смотрите sim (Simulink).

sim(mpcobj,Ns,r) симулирует систему с обратной связью, сформированную моделью объекта управления, заданной в mpcobj.Model.Plant и контроллером MPC mpcobj, в ответ на заданный опорный сигнал, r. Диспетчер MPC может быть любой традиционным диспетчером MPC (mpc) или явный контроллер MPC (explicitMPC). Симуляция запускается для конкретного количества шагов симуляции, Ns. sim строит результаты симуляции.

пример

sim(mpcobj,Ns,r,v) также указывает, что измеренное воздействие сигнализирует о v.

sim(___,SimOptions) задает опции дополнительной симуляции. Этот синтаксис позволяет вам изменять опции симуляции по умолчанию, такие как начальные состояния, шум ввода/вывода, и неизмеренные воздействия, несоответствие объекта, и т.д. Это также позволяет вам симулировать объект в разомкнутом контуре. Можно использовать SimOptions с любой из предыдущих входных комбинаций.

[y,t,u,xp,xc,SimOptions] = sim(___) подавляет графический вывод и вместо этого возвращается:

  • последовательность объекта выходные параметры y,

  • последовательность времени t (равномерно распределенный mpcobj.Ts),

  • переменные u, которыми управляют, сгенерированный контроллером MPC,

  • последовательность xp из состояний модели объекта, используемого для симуляции,

  • последовательность xmpc из состояний контроллера MPC (обеспеченный наблюдателем состояния),

  • и объект опций симуляции, SimOptions.

Примеры

свернуть все

Симулируйте MPC управление системой MISO. Система имеет переменную того, которой управляют, одно измеренное воздействие, одно неизмеренное воздействие и один выход.

Создайте модель объекта управления непрерывного времени. Этот объект будет использоваться в качестве модели предсказания для контроллера MPC.

sys = ss(tf({1,1,1},{[1 .5 1],[1 1],[.7 .5 1]}));

Дискретизируйте модель объекта управления с помощью времени выборки 0,2 модулей.

Ts = 0.2;
sysd = c2d(sys,Ts);

Задайте тип сигнала MPC для входных сигналов объекта.

sysd = setmpcsignals(sysd,'MV',1,'MD',2,'UD',3);

Создайте контроллер MPC для sysd модель объекта управления. Используйте значения по умолчанию для весов и горизонтов.

MPCobj = mpc(sysd);
-->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.

Ограничьте переменную, которой управляют, к [0 1] область значений.

MPCobj.MV = struct('Min',0,'Max',1);

Задайте время остановки симуляции.

Tstop = 30;

Задайте опорный сигнал и измеренный сигнал воздействия.

num_sim_steps = round(Tstop/Ts);
r = ones(num_sim_steps,1);
v = [zeros(num_sim_steps/3,1); ones(2*num_sim_steps/3,1)];

Опорный сигнал, r, модульный шаг. Измеренный сигнал воздействия, v, модульный шаг, с 10 единичными задержками.

Симулируйте контроллер.

sim(MPCobj,num_sim_steps,r,v)
-->The "Model.Disturbance" property of "mpc" object is empty:
   Assuming unmeasured input disturbance #3 is integrated white noise.
   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.

Figure contains 3 axes. Axes 1 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 2 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 3 contains an object of type line. These objects represent Driving inputs, MPC response1.

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Driving inputs, MPC response1.

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

свернуть все

Прогнозирующий контроллер модели в виде одного из следующего:

  • mpc объект — Неявный контроллер MPC

  • explicitMPC объект — Явный контроллер MPC создал использование generateExplicitMPC.

Количество шагов симуляции в виде положительного целого числа.

Если вы не используете Ns, значением по умолчанию является количество строк того, какой бы ни из следующих массивов имеет наибольшее число строк:

  • Входной параметр r

  • Входной параметр v

  • UnmeasuredDisturbance свойство SimOptions, если задано

  • OutputNoise свойство SimOptions, если задано

Пример: 100

Опорный сигнал в виде массива. Этот массив имеет ny столбцы, где ny количество объекта выходные параметры. r может иметь где угодно от 1 к Ns 'Строки' . Если количество строк меньше Ns, недостающие строки установлены равные последней строке.

Пример: ones(100,1)

Измеренный сигнал воздействия в виде массива. Этот массив имеет nv столбцы, где nv количество измеренных входных воздействий. v может иметь где угодно от 1 к Ns 'Строки' . Если количество строк меньше Ns, недостающие строки установлены равные последней строке.

Пример: [zeros(50,1);ones(50,1)]

Опции симуляции, используемые, чтобы задать опции дополнительной симуляции, а также шум и воздействие, сигнализируют, что канал в объект, но неизвестен контроллеру. Можно также использовать этот объект симулировать объект в разомкнутом контуре или задать модель объекта управления, которая будет использоваться в симуляции, которая отличается от того в MPCobj.Model.Plant, который позволяет вам оценивать робастность ответа цикла управления на несоответствие модели.

Для получения дополнительной информации смотрите mpcsimopt.

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

свернуть все

Последовательность объекта выходные значения, возвращенные как Ns- Ny массив, где Ns количество шагов симуляции и Ny количество объекта выходные параметры. Значения в y не включайте ни аддитивные выходные воздействия, ни аддитивный шум измерения (если таковые имеются).

Последовательность времени, возвращенная как Ns- 1 массив, где Ns количество шагов симуляции. Значения в t равномерно распределены MPCobj.Ts.

Последовательность значений переменных, которыми управляют, сгенерирована контроллером MPC, возвращенным как Ns- Nu массив, где Ns количество шагов симуляции и Nu количество переменных, которыми управляют.

Последовательность модели объекта управления утверждает значения, возвращенные как Ns- Nxp массив, где Ns количество шагов симуляции и Nxp количество состояний в модели объекта управления. Моделью объекта управления является любой MPCobj.Model или SimOptions.Model, если последний задан.

Последовательность контроллера MPC состояния, возвращенные как Ns- 1 массив структур. Каждая запись в массиве структур имеет те же поля как mpcstate объект. На каждом временном шаге диспетчер MPC получает переменную, которой управляют, путем умножения оценки состояния объекта матрицей усиления (вычисленный путем решения ограниченной квадратичной задачи оптимизации). По умолчанию диспетчер использует линейный Фильтр Калмана, чтобы оценить состояние объекта дискретного времени, увеличенного воздействием и шумовыми моделями. Поэтому состояния контроллера являются состояниями этого Фильтра Калмана, которые являются в свою очередь оценками объекта, воздействия и шумовых состояний модели на каждом временном шаге.

Объекты опций симуляции используются для симуляции. Этот объект может задать шум, и воздействие сигнализирует, что канал в объект, но неизвестен контроллеру. Это может также задать, является ли симулированная система разомкнутым контуром или если модель объекта управления, используемая в симуляции, отличается от той в MPCobj.Model.Plant.

Для получения дополнительной информации смотрите mpcsimopt.

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

| |

Представлено до R2006a