exponenta event banner

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.

Пользовательская модель нарушения ввода, заданная как state-space (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