Документация Engee

Интегратор

Интегрирование входного сигнала.

Тип: Integrator

Путь в библиотеке:

/Basic/Continuous/Integrator

Описание

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

Блок Интегратор может быть рассмотрен как динамическая система с одним состоянием. Поведение блока описывается следующими уравнениями:

,

где

  • — входной сигнал;

  • — выходной сигнал;

  • — состояние;

  • — начальное состояние .

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

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

Для создания полностью дискретной системы рекомендуется использовать блок Дискретный интегратор.

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

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

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

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

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

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

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

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

  • Когда интеграл меньше или равен Нижний предел, выходной сигнал удерживается на Нижний предел.

  • Когда интеграл находится между Нижний предел и Верхний предел, на выходе получается интеграл.

  • Когда интеграл больше или равен Верхний предел, выходной сигнал удерживается на Верхний предел.

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

integrator 2

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

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

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

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

При установке этого флажка блок имеет три пересечения нуля:

  • Для определения, когда он входит в верхний предел насыщенности.

  • Для определения, когда он входит в нижний предел насыщенности.

  • Для определения, когда он выходит из зоны насыщения.

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

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

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

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

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

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

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

,

где:

  • — нижний предел значения состояния;

  • — верхний предел значения состояния;

  • — результат (состояние).

Сброс циклических состояний имеет следующие преимущества:

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

  • Сокращает количество сбросов решателя во время моделирования, что сокращает время моделирования.

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

  • Повышает точность и производительность решателя и обеспечивает неограниченное время моделирования.

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

Блок сбрасывает свое состояние до начального состояния по внешнему сигналу. Тип триггера сброса определяется параметром Триггер сброса состояния. При выборе значения, отличного от отсутствует, у блока появляется порт сброса, рядом с которым обозначен тип триггера сброса.

Типы триггеров сброса

Параметр External reset позволяет определить атрибут сигнала сброса, который является триггером сброса. Возможны следующие триггеры:

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

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

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

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

  • удержание уровня — сбрасывает выходной сигнал в исходное состояние, когда сигнал сброса отличен от нуля.

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

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

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

integrator 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Порты

Выход

# OUT_1 — выходной сигнал
скаляр | вектор | матрица

Details

Результат интегрирования.

Типы данных

Float64

Поддержка комплексных чисел

Нет

# OUT_2 — признак ограничения выходного сигнала
скаляр | вектор | матрица

Details

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

  • Если интеграл ограничен на уровне Верхний предел, выходной сигнал равен 1.

  • Если интеграл ограничен на уровне Нижний предел, выходной сигнал равен −1.

  • Если интеграл находится между этими пределами, выходной сигнал равен 0. Дополнительную информацию см. в разделе Ограничение интегратора.

Типы данных

Float64

Поддержка комплексных чисел

Нет

# OUT_3 — состояние
скаляр | вектор | матрица

Details

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

Зависимости

Чтобы использовать этот порт, установите флажок параметра Показать порт состояния.

Типы данных

Float64

Поддержка комплексных чисел

Нет

Вход

# IN_1 — входной сигнал
скаляр | вектор | матрица

Details

Сигнал, который необходимо интегрировать.

Типы данных

Float64

Поддержка комплексных чисел

Нет

# x0 — начальное состояние
скаляр | вектор | матрица

Details

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

Зависимости

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

Типы данных

Float64

Поддержка комплексных чисел

Нет

# External Reset — сброс состояния к начальному
скаляр | вектор | матрица

Details

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

Зависимости

Чтобы использовать этот порт, установите для параметра Триггер сброса состояния любое значение кроме отсутствует.

Типы данных

Float64, Bool

Поддержка комплексных чисел

Нет

Параметры

Основные

# Триггер сброса состояния — сброс состояния к начальному
отсутствует | Передний фронт | Задний фронт | передний или задний фронт | уровень | удержание уровня

Details

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

  • Передний фронт — сбрасывает состояние, когда сигнал сброса проходит фронт.

  • Задний фронт — сбрасывает состояние, когда сигнал сброса проходит срез.

  • передний или задний фронт — сбрасывает состояние, когда сигнал сброса повышается или понижается (проходит фронт или срез).

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

  • удержание уровня — сбрасывает выходной сигнал в исходное состояние, когда сигнал сброса отличен от нуля на текущем временном шаге.

Значения

none | rising | falling | either | level | level hold

Значение по умолчанию

none

Имя для программного использования

ExternalReset

Настраиваемый

Нет

Вычисляемый

Нет

# Источник начального значения — выбор источника начального состояния
внутренний | внешний

Details

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

  • внутренний — получение начальных состояний из параметра Начальное значение.

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

Значения

internal | external

Значение по умолчанию

internal

Имя для программного использования

InitialConditionSource

Настраиваемый

Нет

Вычисляемый

Нет

# Начальное значение — начальное состояние
Скаляр / массив вещественных чисел

Details

Начальное состояние блока Интегратор.

Зависимости

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

Значение по умолчанию

0.0

Имя для программного использования

InitialCondition

Настраиваемый

Да

Вычисляемый

Да

# Ограничение выходного сигнала — ограничение выходных значений блока указанным диапазоном
Логический тип

Details

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

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

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

Зависимости

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

Значение по умолчанию

false (выключено)

Имя для программного использования

LimitOutput

Настраиваемый

Нет

Вычисляемый

Нет

# Верхний предел — верхний предел для интеграла
Скаляр / массив вещественных чисел

Details

Укажите верхний предел для интеграла в виде скаляра, вектора или матрицы.

Зависимости

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

Значение по умолчанию

Inf

Имя для программного использования

UpperSaturationLimit

Настраиваемый

Да

Вычисляемый

Да

# Нижний предел — нижний предел для интеграла
Скаляр / массив вещественных чисел

Details

Укажите нижний предел для интеграла в виде скаляра, вектора или матрицы.

Зависимости

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

Значение по умолчанию

-Inf

Имя для программного использования

LowerSaturationLimit

Настраиваемый

Да

Вычисляемый

Да

# Сброс циклических состояний — сброс циклических состояний
Логический тип

Details

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

Если вы укажете Верхний предел значения состояния как inf и Нижний предел значения состояния как −inf, сброса не произойдет.

Зависимости

Выбор этого параметра позволяет задать параметры Верхний предел значения состояния и Нижний предел значения состояния.

Значение по умолчанию

false (выключено)

Имя для программного использования

WrapState

Настраиваемый

Нет

Вычисляемый

Нет

# Верхний предел значения состояния — верхний предел для сброса циклических состояний
Скаляр / массив вещественных чисел

Details

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

Зависимости

Чтобы использовать этот параметр, установите флажок Сброс циклических состояний.

Значение по умолчанию

pi

Имя для программного использования

WrappedStateUpperValue

Настраиваемый

Нет

Вычисляемый

Да

# Нижний предел значения состояния — нижний предел для сброса циклических состояний
Скаляр / массив вещественных чисел

Details

Нижний предел выходного сигнала блока (для сброса циклических состояний).

Зависимости

Чтобы использовать этот параметр, установите флажок Сброс циклических состояний.

Значение по умолчанию

-pi

Имя для программного использования

WrappedStateLowerValue

Настраиваемый

Нет

Вычисляемый

Да

# Показать порт насыщения — включение выходного порта насыщения
Логический тип

Details

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

Зависимости

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

Значение по умолчанию

false (выключено)

Имя для программного использования

ShowSaturationPort

Настраиваемый

Нет

Вычисляемый

Нет

# Показать порт состояния — включение выходного порта состояния
Логический тип

Details

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

Зависимости

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

Значение по умолчанию

false (выключено)

Имя для программного использования

ShowStatePort

Настраиваемый

Нет

Вычисляемый

Нет