Измените неизмеренный вход возмущения
setindist(
устанавливает входную модель возмущения на ее значение по умолчанию. Используйте этот синтаксис, если вы ранее установили пользовательскую модель входа возмущения и хотите вернуться к модели по умолчанию. Для получения дополнительной информации о модели входного возмущения по умолчанию, см. «Моделирование MPC».MPCobj
,'integrators')
Задайте модель объекта управления без прямого сквозного соединения.
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')
MPCobj
- Моделируйте прогнозирующий контроллерМоделируйте прогнозирующий контроллер, заданный как объект контроллера MPC. Чтобы создать контроллер MPC, используйте mpc
.
model
- Пользовательская модель входного возмущения[]
(по умолчанию) | ss
| объекта tf
| объекта zpk
объектПользовательский вход возмущения, заданная как пространство состояний (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
команда.
getEstimator
| getindist
| getoutdist
| mpc
| setEstimator
| setoutdist
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.