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