Integrator

Интегрируйте сигнал

  • Библиотека:
  • Simulink / Обычно Используемые Блоки

    Simulink / Непрерывный

  • Integrator block

Описание

Блок Integrator выводит значение интеграла его входного сигнала относительно времени.

Simulink® обрабатывает блок Integrator как динамическую систему с одним состоянием. Движущими силами блока дают:

{x˙(t)=u(t)y(t)=x(t)   x(t0)=x0

где:

  • u является входом блока.

  • y является блоком выход.

  • x является состоянием блока.

  • x0 является начальным условием x.

В то время как эти уравнения задают точное отношение в непрерывное время, Simulink использует числовые методы приближения, чтобы оценить их с конечной точностью. Simulink может использовать несколько различных методов численного интегрирования, чтобы вычислить выход блока, каждого с преимуществами в конкретных приложениях. Используйте панель Решателя диалогового окна Configuration Parameters (см. Панель Решателя) выбрать метод, подходящий лучше всего для вашего приложения.

Выбранный решатель вычисляет выход блока Integrator на шаге текущего времени, с помощью текущего входного значения и значения состояния на предыдущем временном шаге. Чтобы поддержать эту вычислительную модель, блок Integrator сохраняет свой выход на шаге текущего времени для использования решателем, чтобы вычислить его выход на следующем временном шаге. Блок также предоставляет решателю начальное условие для использования в вычислении начального состояния блока в начале симуляции. Значение по умолчанию начального условия 0. Используйте диалоговое окно параметров блоков, чтобы задать другое значение для начального условия или создать входной порт начального значения на блоке.

Используйте диалоговое окно параметра для:

  • Задайте верхний и нижние пределы на интеграле

  • Создайте вход, который сбрасывает выход блока (состояние) к его начальному значению, в зависимости от того, как вход изменяется

  • Создайте дополнительный выход состояния так, чтобы значение выхода блока могло инициировать сброс блока

Используйте блок Discrete-Time Integrator, чтобы создать чисто дискретную систему.

Определение начальных условий

Можно задать начальные условия в качестве параметра на диалоговом окне блока или ввести их от внешнего сигнала:

  • Чтобы задать начальные условия как параметры блоков, задайте параметр Initial condition source как internal и введите значение в поле Initial condition.

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

    Примечание

    Если интегратор ограничивает свой выход (см. Ограничение Интеграла), начальное условие должно упасть в пределах насыщения интегратора. Если начальное условие находится вне пределов насыщения блока, блок отображает сообщение об ошибке.

Ограничение интеграла

Чтобы препятствовать тому, чтобы выход превысил specifiable уровни, установите флажок Limit output и введите пределы в соответствующие поля параметра. Это действие заставляет блок функционировать как ограниченный интегратор. Когда выход достигает пределов, интегральное действие выключено, чтобы предотвратить интеграл, заканчиваются. Во время симуляции можно изменить пределы, но вы не можете измениться, ограничивается ли выход. Блок определяет выход можно следующим образом:

  • Когда интеграл меньше чем или равен Lower saturation limit, выход сохранен в Lower saturation limit.

  • Когда интеграл между Lower saturation limit и Upper saturation limit, выход является интегралом.

  • Когда интеграл больше или равен Upper saturation limit, выход сохранен в Upper saturation limit.

Чтобы сгенерировать сигнал, который указывает, когда состояние ограничивается, установите флажок Show saturation port. Порт насыщения появляется ниже выходного порта блока.

Сигнал имеет одно из трех значений:

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

  • 0 указывает, что интеграл не ограничивается.

  • – 1 указывает, что нижний предел применяется.

Когда вы устанавливаете этот флажок, блок имеет три нулевых пересечения: один, чтобы обнаружить, когда это вводит верхний предел насыщения, один, чтобы обнаружить, когда это вводит более низкий предел насыщения, и один, чтобы обнаружить, когда это оставляет насыщение.

Примечание

Для блока Integrator Limited, по умолчанию, выбран Limit output, Upper saturation limit установлен в 1, и Lower saturation limit установлен в 0.

Перенос циклических состояний

Несколько физических явлений являются циклическими, периодическими, или ротационными по своей природе. Объекты или машинное оборудование, которые показывают вращательное перемещение и генераторы, являются примерами таких явлений.

Моделирование этих явлений в Simulink включает интеграцию скорости изменения периодических или циклических сигналов получить состояние перемещения.

Недостаток с этим подходом, однако, то, что по длинным промежуткам времени симуляции, состояния, представляющие периодические или циклические сигналы, объединяются к большим значениям. Далее, вычисление синуса или косинуса этих сигналов занимает все больше большое количество времени из-за углового сокращения. Большие значения сигналов также негативно влияют на эффективность решателя и точность.

Один подход для преодоления этого недостатка должен сбросить угловое состояние к 0 когда это достигает 2π (или к –π, когда это достигает π для числовой симметрии). Этот подход улучшает точность синуса и расчетов косинуса и уменьшает угловое время сокращения. Но это также требует обнаружения пересечения нулем и вводит сброс решателя, который замедляет симуляцию для переменных решателей шага, особенно в больших моделях.

Чтобы устранить сброс решателя в точках переноса, поддержки блока Integrator перенесли состояния, которые можно включить путем проверки Wrap state на диалоговом окне параметров блоков. Когда вы включаете Wrap state, значок блока изменяется, чтобы указать, что блок имеет переносящиеся состояния.

Simulink позволяет переносить состояния, которые ограничены верхними значениями и параметрами нижних значений перенесенного состояния. Алгоритмом для определения переносящихся состояний дают:

y={xx[xl,xu)x(xuxl)xxlxuxlв противном случае

где:

  • xl является нижним значением перенесенного состояния.

  • xu является верхним значением перенесенного состояния.

  • y является выход.

Поддержка переноса состояний обеспечивает эти преимущества.

  • Это устраняет нестабильность симуляции, когда ваша модель обращается к большим углам и большим значениям состояния.

  • Это сокращает количество сброса решателя в процессе моделирования и избавляет от необходимости обнаружение пересечения нулем, улучшая время симуляции.

  • Это устраняет большие угловые значения, ускоряя расчет тригонометрических функций на угловых состояниях.

  • Это улучшает точность решателя и эффективность и включает неограниченное время симуляции.

Сброс состояния

Блок может сбросить свое состояние к заданному начальному условию на основе внешнего сигнала. Чтобы заставить блок сбрасывать свое состояние, выберите один из выбора External reset. Триггерный порт появляется ниже входного порта блока и указывает на триггерный тип.

  • Выберите rising сбрасывать состояние, когда сигнал сброса повышается с отрицательной величины или нулевого значения к положительному значению.

  • Выберите falling сбрасывать состояние, когда сигнал сброса падает от положительного значения до нулевого значения или отрицательной величины.

  • Выберите either сбрасывать состояние, когда сигнал сброса изменяется от нуля до ненулевого значения, от ненулевого значения, чтобы обнулить, или изменяет знак.

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

  • Выберите level hold сбрасывать состояние, когда сигнал сброса является ненулевым на шаге текущего времени.

Порт сброса имеет прямое сквозное соединение. Если блок выход возвращается в этот порт, или непосредственно или через серию блоков с прямым сквозным соединением, алгебраический цикл заканчивается (см. Алгебраические Концепции Цикла). Используйте порт блока Integrator состояния, чтобы возвратить выход блока, не создавая алгебраический цикл.

Примечание

Быть совместимым с Ассоциацией Надежности Motor Industry Software (MISRA®) стандарт программного обеспечения, ваша модель должна использовать булевы сигналы управлять внешними портами сброса блоков Интегратора.

О порте состояния

Установка флажка порта Состояния показа на диалоговом окне параметра блока Integrator заставляет дополнительный выходной порт, порт состояния, появляться наверху блока Integrator.

Выход порта состояния совпадает с выходом порта стандартного вывода блока за исключением следующего случая. Если бы блок сбрасывается на шаге текущего времени, выход порта состояния является значением, которое появилось бы при стандартном выводе блока, если бы блок не был сброшен. Выход порта состояния появляется ранее во временном шаге, чем выход выходного порта блока Integrator. Используйте порт состояния, чтобы не создавать алгебраические циклы в этих сценариях моделирования:

  • Самосброс интеграторов (см., что Создание Самосбрасывает Интеграторы),

  • Передача состояния от одной активированной подсистемы до другого (см. состояния Off Вручения Между Enabled Подсистемами),

    Примечание

    При обновлении модели, Simulink Check, что порт состояния применяется к одному из этих двух сценариев. В противном случае сообщение об ошибке появляется. Кроме того, вы не можете регистрировать выход этого порта в модели, на которую ссылаются, которая выполняется в Режиме Accelerator. Если логгирование включено для порта, Simulink генерирует "сигнал, не найденный" предупреждение во время выполнения модели, на которую ссылаются.

Создание интеграторов самосброса

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

Эта модель пытается создать интегратор самосброса путем питания выхода интегратора, вычтенного от 1, назад в порт сброса интегратора. Однако модель создает алгебраический цикл. Чтобы вычислить блок интегратора выход, программное обеспечение Simulink должно знать значение сигнала сброса блока, и наоборот. Поскольку эти два значения взаимно зависят, программное обеспечение Simulink не может определить также. Поэтому сообщение об ошибке появляется, при попытке симулировать или обновить эту модель.

Следующая модель использует порт интегратора состояния, чтобы избежать алгебраического цикла.

В этой версии значение сигнала сброса зависит от значения порта состояния. Значение порта состояния доступно ранее на шаге текущего времени, чем значение выходного порта блока интегратора. Поэтому Simulink может определить, должен ли блок быть сброшен прежде, чем вычислить выход блока, таким образом, избежав алгебраического цикла.

Вручение состояний Off между Enabled подсистемами

Порт состояния помогает вам избежать алгебраического цикла при передаче состояния между двумя активированными подсистемами. Рассмотрите, например, следующую модель.

Активированные подсистемы, A и B, содержат следующие блоки:

Подсистема AПодсистема B

В этой модели постоянный входной сигнал управляет двумя активированными подсистемами, которые интегрируют сигнал. Импульсный генератор генерирует сигнал включения что выполнение причин, чтобы чередоваться между этими двумя подсистемами. Разрешать порт каждой подсистемы собирается сбросить, который заставляет подсистему сбрасывать свой интегратор, когда это становится активным. Сброс интегратора заставляет интегратор читать значение своего начального порта условия. Начальный порт условия интегратора в каждой подсистеме соединяется с выходным портом интегратора в другой подсистеме.

Эта связь предназначается, чтобы включить непрерывное интегрирование входного сигнала, когда выполнение чередуется между двумя подсистемами. Однако связь создает алгебраический цикл. Чтобы вычислить выход A, Simulink должен знать выход B, и наоборот. Поскольку выходные параметры взаимно зависят, Simulink не может вычислить выходные значения. Поэтому сообщение об ошибке появляется, при попытке симулировать или обновить эту модель.

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

Активированные подсистемы, A и B, содержат следующие блоки:

Подсистема AПодсистема B

В этой модели начальное условие интегратора в A зависит от значения порта состояния интегратора в B, и наоборот. Значения портов состояния обновляются ранее на шаге времени симуляции, чем значения выходных портов интегратора. Поэтому Simulink может вычислить начальное условие любого интегратора, не зная значения окончательного результата другого интегратора. Для другого примера использования порта состояния, чтобы вручить от состояний между условно выполняемыми подсистемами, смотрите Создавание Модели Тупика Муфты.

Определение абсолютной погрешности для блока Выходные параметры

Simulink по умолчанию программное обеспечение использует значение абсолютной погрешности, заданное в диалоговом окне Configuration Parameters (см. Ошибочные Допуски к Решателям Переменного Шага) вычислить выход блока Integrator. Если это значение не обеспечивает достаточный контроль ошибок, задайте больше соответствующего значения в поле Absolute tolerance диалогового окна блока Интегратора. Значение, которое вы задаете, используется для расчета весь блок выходные параметры.

Выбор всех опций

Когда вы выбираете все опции, значок блока выглядит так.

Порты

Блок Integrator принимает и выходные сигналы типа double на его портах данных. Внешний порт сброса принимает сигналы типа double или Boolean.

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

развернуть все

Предупредите что потребности быть интегрированными.

Типы данных: double

Сбросьте состояние к заданным начальным условиям на основе внешнего сигнала. Смотрите Сброс состояния.

Зависимости

Чтобы включить этот порт, включите параметр External Reset.

Типы данных: Boolean

Установите начальное условие состояния блока от внешнего сигнала.

Зависимости

Чтобы включить этот порт, установите параметр Initial Conditions на external.

Типы данных: double

Вывод

развернуть все

Выведите интегрированное состояние.

Типы данных: double

Укажите, когда состояние будет ограничено. Сигнал имеет значение 1 когда интеграл ограничивается заданным Upper saturation limit. Когда сигнал ограничивается Lower saturation limit, значением сигналов является -1. Когда интеграл между пределами насыщения, значением сигналов является 0. Смотрите ограничение интеграла.

Типы данных: double

Выведите состояние блока. Займитесь Портом состояния.

Зависимости

Включите этот порт путем включения параметра Show state port.

Типы данных: double

Параметры

развернуть все

Задайте тип триггера, чтобы использовать для внешнего сигнала сброса.

  • Выберите rising сбрасывать состояние, когда сигнал сброса повышается с отрицательной величины или нулевого значения к положительному значению или отрицательной величины к нулевому значению.

  • Выберите falling сбрасывать состояние, когда сигнал сброса падает от положительного значения до нулевого значения или отрицательной величины, или от нулевого значения до отрицательной величины.

  • Выберите either сбрасывать состояние, когда сигнал сброса изменяется от нуля до ненулевого значения, от ненулевого значения, чтобы обнулить, или изменяет знак.

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

  • Выберите level hold сбрасывать состояние, когда сигнал сброса является ненулевым на шаге текущего времени.

Программируемое использование

Параметры блоков: ExternalReset
Ввод: вектор символов, строка
Значения: 'none' | 'rising' | 'falling' | 'either' | 'level' | 'level hold'
Значение по умолчанию: 'none'

Выберите источник начального условия:

  • internal — Получите начальные условия состояний от параметров блоков Initial condition.

  • external — Получите начальные условия состояний от внешнего блока через входной порт IC.

Зависимости

Выбор internal включает параметр Initial condition.

Выбор external отключает параметр Initial condition и включает входной порт IC.

Программируемое использование

Параметры блоков: InitialConditionSource
Ввод: вектор символов, строка
Значения: 'internal' | 'external'
Значение по умолчанию: 'internal'

Установите начальное состояние блока Integrator.

Советы

Программное обеспечение Simulink не позволяет начальному условию этого блока быть inf или NaN.

Зависимости

Установка Initial condition source к internal включает этот параметр.

Установка Initial condition source к external отключает этот параметр.

Программируемое использование

Параметры блоков: InitialCondition
Ввод: скаляр или вектор
Значение по умолчанию: '0'

Ограничьте выход блока значением между Более низким пределом насыщения и Верхними предельными параметрами насыщения.

  • Выбор этого флажка ограничивает блок выход значением между Более низким пределом насыщения и Верхними предельными параметрами насыщения.

  • Снятие этого флажка не ограничивает выходные значения блока.

Зависимости

Выбор этого параметра включает параметры Upper saturation limit и Lower saturation limit.

Программируемое использование

Параметры блоков: LimitOutput
Ввод: вектор символов, строка
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Задайте верхний предел для интеграла как скаляр, вектор или матрица. Необходимо задать значение между значениями параметров Output maximum и Output minimum.

Зависимости

Чтобы включить этот параметр, установите флажок Limit output.

Программируемое использование

Параметры блоков: UpperSaturationLimit
Ввод: вектор символов, строка
Значения: скаляр | вектор | матрица
Значение по умолчанию: 'inf'

Задайте нижний предел для интеграла как скаляр, вектор или матрица. Необходимо задать значение между значениями параметров Output maximum и Output minimum.

Зависимости

Чтобы включить этот параметр, установите флажок Limit output.

Программируемое использование

Параметры блоков: LowerSaturationLimit
Ввод: вектор символов, строка
Значения: скаляр | вектор | матрица
Значение по умолчанию: '-inf'

Позвольте перенестись состояний между параметрами Wrapped state lower value и Wrapped state upper value. Включение переносится, состояния избавляет от необходимости обнаружение пересечения нулем, уменьшает сброс решателя, улучшает производительность решателя и точность, и увеличивает промежуток времени симуляции при моделировании ротационных и циклических траекторий состояния.

Если вы задаете Wrapped state upper value как inf и Wrapped state lower value как -inf, перенос не происходит.

Зависимости

Выбор этого параметра включает параметры Wrapped state lower value и Wrapped state upper value.

Программируемое использование

Параметры блоков: WrapState
Ввод: вектор символов, строка
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Верхний предел блока выводится.

Зависимости

Выбор Wrap state включает этот параметр.

Программируемое использование

Параметры блоков: WrappedStateUpperValue
Ввод: скаляр или вектор
Значения: '2*pi'
Значение по умолчанию: 'pi'

Нижний предел блока выводится.

Зависимости

Выбор Wrap state включает этот параметр.

Программируемое использование

Параметры блоков: WrappedStateLowerValue
Ввод: скаляр или вектор
Значения: '0'
Значение по умолчанию: '-pi'

Установите этот флажок, чтобы добавить выходной порт насыщения в блок. Когда вы снимаете этот флажок, блок не имеет выходного порта насыщения.

Зависимости

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

Программируемое использование

Параметры блоков: ShowSaturationPort
Ввод: вектор символов, строка
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Установите этот флажок, чтобы добавить выходной порт состояния в блок. Когда вы снимаете этот флажок, блок не имеет выходного порта состояния.

Зависимости

Выбор этого параметра включает выходной порт состояния.

Программируемое использование

Параметры блоков: ShowStatePort
Ввод: вектор символов, строка
Значения: 'off' | 'on'
Значение по умолчанию: 'off'
  • Если вы вводите auto или –1, затем Simulink использует значение абсолютной погрешности в диалоговом окне Configuration Parameters (см. Панель Решателя) вычислить состояния блока.

  • Если вы вводите действительный скаляр, то то значение заменяет абсолютную погрешность в диалоговом окне Configuration Parameters для вычисления всех состояний блока.

  • Если вы вводите вектор действительных чисел, то размерность того вектора должна совпадать с размерностью непрерывных состояний в блоке. Эти значения заменяют абсолютную погрешность в диалоговом окне Configuration Parameters.

Программируемое использование

Параметры блоков: AbsoluteTolerance
Ввод: вектор символов, строка, скаляр или вектор
Значения: 'auto'| '-1' | любой положительный действительный скаляр или вектор
Значение по умолчанию: 'auto'

Заставьте команды линеаризации Simulink обрабатывать этот блок как невосстановленный и как имеющий пределы на его выходе, независимо от настроек сброса и выводить опции ограничения блока.

Совет

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

Программируемое использование

Параметры блоков: IgnoreLimit
Ввод: вектор символов, строка
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Выберите, чтобы включить обнаружение пересечения нулем. Для получения дополнительной информации смотрите Обнаружение Пересечения нулем.

Программируемое использование

Параметры блоков: ZeroCross
Ввод: вектор символов, строка
Значения: 'off' | 'on'
Значение по умолчанию: 'on'
  • Чтобы присвоить имя к одному состоянию, введите имя между кавычками, например, 'velocity'.

  • Чтобы присвоить имена к нескольким состояниям, введите разграниченный запятой список, окруженный фигурными скобками, например, {'a', 'b', 'c'}. Каждое имя должно быть уникальным.

  • Имена состояния применяются только к выбранному блоку.

  • Количество состояний должно разделиться равномерно среди количества имен состояния.

  • Можно задать меньше имен, чем состояния, но вы не можете задать больше имен, чем состояния.

    Например, можно задать два имени в системе с четырьмя состояниями. Имя применяется к первым двум состояниям и второму имени к последним двум состояниям.

  • Присваивать имена состояния с переменной в MATLAB® рабочая область, введите переменную без кавычек. Переменная может быть вектором символов, строкой, массивом ячеек или структурой.

Программируемое использование

Параметры блоков: ContinuousStateAttributes
Ввод: вектор символов, строка
Значения: ' ' | пользовательский
Значение по умолчанию: ' '

Примеры модели

Характеристики блока

Типы данных

double

Прямое сквозное соединение

yes

Многомерные сигналы

no

Сигналы переменного размера

no

Обнаружение пересечения нулем

yes

Расширенные возможности

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