setoutdist

Измените неизмеренный выход возмущения

Описание

пример

setoutdist(MPCobj,'model',model) устанавливает выходную модель возмущения, используемую прогнозирующим контроллером модели, MPCobj, в пользовательскую модель.

пример

setoutdist(MPCobj,'integrators') устанавливает выходную модель возмущения на ее значение по умолчанию. Используйте этот синтаксис, если вы ранее установили пользовательскую модель выхода возмущения и хотите вернуться к модели по умолчанию. Для получения дополнительной информации о модели выходного возмущения по умолчанию, см. «Моделирование MPC».

Примеры

свернуть все

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

plant = rss(3,3,3);
plant.D = 0;
MPCobj = mpc(plant,0.1);
-->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.

Задайте модели возмущения для каждого выхода таким образом, чтобы выходное нарушение порядка для:

  • Канал 1 является случайным белым шумом с величиной 2.

  • Канал 2 является случайным ступенчатым шумом с величиной 0.5.

  • Канал 3 является случайным наклонным шумом с величиной 1.

mod1 = tf(2,1);
mod2 = tf(0.5,[1 0]);
mod3 = tf(1,[1 0 0]);

Создайте модель возмущения выхода, используя эти передаточные функции. Используйте отдельный вход шума для каждого выходного нарушения порядка.

outdist = [mod1 0 0; 0 mod2 0; 0 0 mod3];

Установите выходную модель возмущения в контроллере MPC.

setoutdist(MPCobj,'model',outdist)

Просмотрите модель выходного возмущения контроллера.

getoutdist(MPCobj)
ans =
 
  A = 
        x1   x2   x3
   x1    1    0    0
   x2    0    1    0
   x3    0  0.1    1
 
  B = 
       Noise#1  Noise#2  Noise#3
   x1        0     0.05        0
   x2        0        0      0.1
   x3        0        0    0.005
 
  C = 
        x1  x2  x3
   MO1   0   0   0
   MO2   1   0   0
   MO3   0   0   1
 
  D = 
        Noise#1  Noise#2  Noise#3
   MO1        2        0        0
   MO2        0        0        0
   MO3        0        0        0
 
Sample time: 0.1 seconds
Discrete-time state-space model.

Контроллер преобразует модель передаточной функции в непрерывном времени, outdist, в модель пространства состояний в дискретном времени.

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

plant = rss(3,3,3);
plant.D = 0;
MPCobj = mpc(plant,0.1);
-->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.

Извлеките выход возмущения по умолчанию из контроллера.

distMod = getoutdist(MPCobj);
-->Converting model to discrete time.
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
-->Assuming output disturbance added to measured output channel #2 is integrated white noise.
-->Assuming output disturbance added to measured output channel #3 is integrated white noise.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Извлеките интегратор из второго выходного канала. Создайте новую модель возмущения выхода, удалив второй входной канал и установив эффект на втором выходе двух других входов равным нулю.

distMod = sminreal([distMod(1,1) distMod(1,3); 0 0; distMod(3,1) distMod(3,3)]);
setoutdist(MPCobj,'model',distMod)

При удалении интегратора из модели возмущения выхода таким образом используйте sminreal чтобы сделать пользовательскую модель структурно минимальной.

Посмотрите модель выхода возмущения.

tf(getoutdist(MPCobj))
ans =
 
  From input "Noise#1" to output...
          0.1
   MO1:  -----
         z - 1
 
   MO2:  0
 
   MO3:  0
 
  From input "Noise#2" to output...
   MO1:  0
 
   MO2:  0
 
          0.1
   MO3:  -----
         z - 1
 
Sample time: 0.1 seconds
Discrete-time transfer function.

Интегратор был удален из второго канала. Модели возмущения для каналов 1 и 3 остаются на своих значениях по умолчанию в качестве интеграторов в дискретном времени.

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

plant = rss(3,3,3);
plant.D = 0;
MPCobj = mpc(plant,1);
-->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.

Установите модель возмущения выхода, чтобы нуль для всех трех каналов выхода.

setoutdist(MPCobj,'model',tf(zeros(3,1)))

Посмотрите модель выхода возмущения.

getoutdist(MPCobj)
ans =
 
  D = 
        Noise#1
   MO1        0
   MO2        0
   MO3        0
 
Static gain.

Статический коэффициент усиления 0 для всех выходных каналов указывает, что выходные нарушения порядка были удалены.

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

plant = rss(2,2,2);
plant.D = 0;
MPCobj = mpc(plant,0.1);
-->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.

Снимите выходные нарушения порядка для всех каналов.

setoutdist(MPCobj,'model',tf(zeros(2,1)))

Восстановите выход возмущения по умолчанию.

setoutdist(MPCobj,'integrators')

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

свернуть все

Моделируйте прогнозирующий контроллер, заданный как объект контроллера MPC. Чтобы создать контроллер MPC, используйте mpc.

Пользовательская выходная модель возмущения, заданная как пространство состояний (ss), передаточная функция (tf), или нули , полюса и усиления (zpk) модель. Контроллер MPC преобразует модель в модель пространства состояний с дискретным временем, без задержки. Опускание model или указание model как [] эквивалентно использованию setoutdist(MPCobj,'integrators').

Выходная модель возмущения имеет:

  • Дисперсионные входные сигналы белого шума. Для пользовательских моделей выхода возмущения количество входов является вашим выбором.

  • ny выходы, где ny количество выходов объекта, заданное в MPCobj.Model.Plant. Каждый выход модели возмущения добавляется к соответствующему выходу объекта управления.

Эта модель, наряду с моделью входного возмущения (если она есть), управляет тем, насколько хорошо контроллер компенсирует неизмеренные нарушения порядка и ошибки моделирования. Для получения дополнительной информации о моделировании нарушений порядка в MPC и о модели, используемой во время оценки состояния, см. Моделирование MPC и оценка состояния контроллера.

setoutdist не проверяет пользовательские выходные модели возмущения на нарушения наблюдаемости состояния. Эта проверка выполняется позже в процессе проекта MPC, когда внутренний оценщик состояния построен с помощью таких команд, как sim или mpcmove. Если состояния контроллера не являются полностью наблюдаемыми, эти команды генерируют ошибку.

Совет

  • Чтобы просмотреть модель выходного возмущения тока, используйте getoutdist команда.

Введенный в R2006a