setindist

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

plant = rss(3,4,4);
plant.D = 0;

Установите первый входной сигнал как управляемую переменную, а оставшиеся входы как входные нарушения порядка.

plant = setmpcsignals(plant,'MV',1,'UD',[2 3 4]);

Создайте контроллер MPC для определенного объекта.

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.
   for output(s) y1 and zero weight for output(s) y2 y3 y4 

Задайте модели возмущения, такие что:

  • Входное нарушение порядка 1 является случайным белым шумом с величиной 2.

  • Входное нарушение порядка 2 является случайным ступенчатым шумом с величиной 0.5.

  • Входное нарушение порядка 3 является случайным наклонным шумом с величиной 1.

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

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

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

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

setindist(MPCobj,'model',indist)

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

getindist(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
   UD1   0   0   0
   UD2   1   0   0
   UD3   0   0   1
 
  D = 
        Noise#1  Noise#2  Noise#3
   UD1        2        0        0
   UD2        0        0        0
   UD3        0        0        0
 
Sample time: 0.1 seconds
Discrete-time state-space model.

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

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

plant = rss(3,4,4);
plant.D = 0;

Установите первый входной сигнал как управляемую переменную, а оставшиеся входы как входные нарушения порядка.

plant = setmpcsignals(plant,'MV',1,'UD',[2 3 4]);

Создайте контроллер MPC для определенного объекта.

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.
   for output(s) y1 and zero weight for output(s) y2 y3 y4 

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

distMod = getindist(MPCobj);
-->Converting model to discrete time.
-->The "Model.Disturbance" property of "mpc" object is empty:
   Assuming unmeasured input disturbance #2 is integrated white noise.
   Assuming unmeasured input disturbance #3 is integrated white noise.
   Assuming unmeasured input disturbance #4 is integrated white noise.
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
   Assuming no disturbance added to measured output channel #2.
   Assuming no disturbance added to measured output channel #3.
   Assuming no disturbance added to measured output channel #4.
-->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)]);
setindist(MPCobj,'model',distMod)

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

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

tf(getindist(MPCobj))
ans =
 
  From input "UD1-wn" to output...
          0.1
   UD1:  -----
         z - 1
 
   UD2:  0
 
   UD3:  0
 
  From input "UD3-wn" to output...
   UD1:  0
 
   UD2:  0
 
          0.1
   UD3:  -----
         z - 1
 
Sample time: 0.1 seconds
Discrete-time transfer function.

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

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

plant = rss(2,2,3);
plant.D = 0;

Установите второй и третий входные сигналы в качестве входных нарушений порядка.

plant = setmpcsignals(plant,'MV',1,'UD',[2 3]);

Создайте контроллер MPC для определенного объекта.

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.
   for output(s) y1 and zero weight for output(s) y2 

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

setindist(MPCobj,'model',tf(eye(2)))

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

setindist(MPCobj,'integrators')

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

свернуть все

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

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

Вход возмущения имеет:

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

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

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

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

Этот синтаксис эквивалентен MPCobj.Model.Disturbance = model.

Совет

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

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