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 может использовать несколько различных методов численного интегрирования, чтобы вычислить выход блока, каждый с преимуществами в конкретных приложениях. Используйте панель Решатель (Solver) диалогового окна Параметры конфигурации (Configuration Parameters) (см. Панель решателя (Solver Pane)), чтобы выбрать метод, наиболее подходящий для вашего приложения.

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

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

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

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

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

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

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

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

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

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

    Примечание

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

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

Чтобы предотвратить превышение выходов заданных уровней, установите флажок 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 чтобы сбросить состояние, когда сигнал сброса ненулевой на текущем временном шаге.

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

Примечание

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

Сведения о порте состояния

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

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

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

  • Передача состояния от одной включенной подсистемы к другой (см. «Передача состояний между включенными подсистемами»)

    Примечание

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

Создание самоудаляющихся интеграторов

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

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

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

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

Передача состояний между включенными подсистемами

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

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

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

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

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

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

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

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

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

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

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

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

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

Порты

Блок Интегратор принимает и выводит сигналы типа 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'

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

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

Зависимости

Выбор этого параметра включает Wrapped state upper value и Wrapped state lower 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).

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

Параметры блоков: 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