setindist

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

Синтаксис

setindist(MPCobj,'model',model)
setindist(MPCobj,'integrators')

Описание

пример

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