Integrator
Интегрирование входного сигнала.
Описание
Блок Integrator вычисляет значение интеграла своего входного сигнала по времени.
Блок Integrator может быть рассмотрен как динамическая система с одним состоянием. Поведение блока описывается следующими уравнениями:
где:
-
— входной сигнал.
-
— выходной сигнал.
-
— состояние.
-
— начальное состояние .
Эти уравнения описывают точную зависимость выхода от входа в непрерывном времени; для их оценки с конечной точностью используются методы численной аппроксимации. В Engee существуют несколько типов решателей, которые реализуют разные методы численного интегрирования для вычисления выходных данных блока. Каждый решатель имеет свои преимущества в зависимости от конкретной задачи.
Выбранный решатель рассчитывает выход блока 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
указывает на то, что применяется нижний предел.
При установке этого флажка блок имеет три пересечения нуля:
-
Для определения, когда он входит в верхний предел насыщенности.
-
Для определения, когда он входит в нижний предел насыщенности.
-
Для определения, когда он выходит из насыщенности.
Сброс циклических состояний
Некоторые физические явления носят циклический, периодический или вращательный характер. Моделирование этих явлений включает в себя интегрирование скорости изменения периодических или циклических сигналов для получения переменной состояния.
Недостаток этого подхода заключается в том, что в течение длительных периодов времени моделирования состояния, представляющие периодические или циклические сигналы, интегрируются до очень больших значений. Кроме того, вычисление синуса или косинуса этих сигналов занимает все больше времени. Большие значения сигналов также негативно влияют на производительность и точность решателя.
Одним из подходов к преодолению этого недостатка является сброс углового состояния до 0
, когда оно достигает 2π (или до –π, когда оно достигает π, для числовой симметрии) с помощью дополнительных алгоритмов в модели. Такой подход повышает точность вычислений синуса и косинуса. Но следует иметь в виду, что это приводит к сбросу решателя, что замедляет моделирование для решателя с переменным шагом, особенно в больших моделях.
Чтобы исключить сброс решателя в момент сброса значения выходного сигнала, блок Integrator содержит встроенный механизм сброса состояния, которые вы можете включить, установив флажок Wrap state в диалоговом окне параметров блока.
Когда вы включаете параметр Wrap state, значок блока меняется, указывая на то, что для блока включен сброс циклических состояний.
Если включен сброс циклических состояний, то значение состояния определяется следующими выражениями:
где:
-
— нижний предел значения состояния.
-
— верхний предел значения состояния.
-
— результат (состояние).
Сброс циклических состояний имеет следующие преимущества:
-
Устраняет нестабильность моделирования, когда модель приближается к большим углам и большим значениям состояния.
-
Сокращает количество сбросов решателя во время моделирования, что сокращает время моделирования.
-
Устраняет большие значения угла, ускоряя вычисление тригонометрических функций по угловым состояниям.
-
Повышает точность и производительность решателя и обеспечивает неограниченное время моделирования.
Сброс состояния
Блок сбрасывает свое состояние до начального состояния по внешнему сигналу. Тип триггера сброса определяется параметром External reset. При выборе значения, отличного от none
, у блока появляется порт сброса, рядом с которым обозначен тип триггера сброса.
Типы триггеров сброса
Параметр External reset позволяет определить атрибут сигнала сброса, который является триггером сброса. Возможны следующие триггеры:
-
rising
— сбрасывает состояние, когда сигнал сброса проходит фронт, т.е. повышается с отрицательного или нулевого значения до положительного. -
falling
— сбрасывает состояние, когда сигнал сброса проходит срез, т.е. падает с положительного значения до нуля или отрицательного значения. -
either
— сбрасывает состояние, когда сигнал сброса повышается или понижается, т.е. изменяется с нуля на ненулевое значение, с ненулевого значения на нуль либо меняет знак. -
level
— сбрасывает и удерживает выход в исходном состоянии, пока сигнал сброса не равен нулю, т.е. отличен от нуля на текущем временном шаге или изменяется от ненулевого значения на предыдущем временном шаге до нуля на текущем временном шаге. -
level hold
— сбрасывает выходной сигнал в исходное состояние, когда сигнал сброса отличен от нуля.
Порт сброса имеет прямой ввод. Если выходной сигнал блока поступает обратно в этот порт, либо напрямую, либо через серию блоков с прямой передачей, получается алгебраический цикл. Используйте порт состояния блока Integrator для обратной связи с выводом блока без создания алгебраического цикла.
Порты
Вход
Port_1 — входной сигнал
скаляр
| вектор
| матрица
Сигнал, который необходимо интегрировать.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, UInt8
, UInt16
, UInt32
, UInt64
, Bool
External Reset — сброс состояния к начальному
скаляр
| вектор
| матрица
Сброс состояния блока до заданного начального по внешнему сигналу. См. раздел Сброс состояния.
Зависимости
Чтобы использовать этот порт, установите флажок External Reset.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, UInt8
, UInt16
, UInt32
, UInt64
, Bool
x0 — начальное состояние
скаляр
| вектор
| матрица
Начальное состояние блока, заданное внешним сигналом. См. раздел Определение начальных состояний.
Зависимости
Чтобы использовать этот порт, установите для параметра Initial Conditions значение external
.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, UInt8
, UInt16
, UInt32
, UInt64
, Bool
Выход
Port_1 — выходной сигнал
скаляр
| вектор
| матрица
Результат интегрирования.
Типы данных: Float64
Port_2 — признак ограничения выходного сигнала
−1
| 0
| 1
Указывает, когда выходной сигнал ограничен. Выход равен 1
, когда интеграл ограничен на уровне Upper saturation limit. Когда выходной сигнал ограничен на уровне Lower saturation limit, выход равен −1
. Когда интеграл находится между этими пределами, выход равен 0
. См. раздел Ограничение интеграла.
Типы данных: Float64
Параметры
External reset — сброс состояния к начальному
none (по умолчанию)
| rising
| falling
| either
| level
| level hold
Укажите тип триггера, который будет использоваться для внешнего сигнала сброса.
-
rising
— сбрасывает состояние, когда сигнал сброса проходит фронт. -
falling
— сбрасывает состояние, когда сигнал сброса проходит срез. -
either
— сбрасывает состояние, когда сигнал сброса повышается или понижается (проходит фронт или срез). -
level
— сбрасывает и удерживает выход в исходном состоянии, когда сигнал сброса отличен от нуля на текущем временном шаге или изменяется от ненулевого значения на предыдущем временном шаге до нуля на текущем временном шаге. -
level hold
— сбрасывает выходной сигнал в исходное состояние, когда сигнал сброса отличен от нуля на текущем временном шаге.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Initial condition source — выбор источника начального состояния
Internal (по умолчанию)
| external
Выберите источник начального состояния:
-
internal
— получение начальных состояний из параметра Initial condition. -
external
— получение начальных состояний из внешнего источника через входной порт x0.
Зависимости
Значение internal
включает использование параметра Initial condition в симуляции.
Значение external
отключает использование параметра Initial condition и включает входной порт x0.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Initial condition — начальное состояние
0.0 (по умолчанию)
| скаляр
| вектор
| матрица
Начальное состояние блока Integrator.
Зависимости
Чтобы использовать этот параметр, установите для параметра Initial condition source значение internal
.
Параметр блока |
|
По умолчанию |
|
Limit output — ограничение выходных значений блока указанным диапазоном
выключено (по умолчанию)
| включено
Ограничьте выходные данные блока значением между параметрами Lower saturation limit и Upper saturation limit.
-
Установка этого флажка ограничивает вывод блока значением между параметрами Lower saturation limit и Upper saturation limit.
-
Снятие этого флажка не ограничивает выходные значения блока.
Зависимости
Выбор этого параметра включает параметры Lower saturation limit и Upper saturation limit.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Upper saturation limit — верхний предел для интеграла
inf (по умолчанию)
| скаляр
| вектор
| матрица
Укажите верхний предел для интеграла в виде скаляра, вектора или матрицы. Вы должны указать значение между параметрами Output minimum и Output maximum.
Зависимости
Чтобы использовать этот параметр, установите флажок Limit output.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Lower saturation limit — нижний предел для интеграла
−inf (по умолчанию)
| скаляр
| вектор
| матрица
Укажите нижний предел для интеграла в виде скаляра, вектора или матрицы. Вы должны указать значение между параметрами Output minimum и Output maximum.
Зависимости
Чтобы использовать этот параметр, установите флажок Limit output.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Wrap state — сброс циклических состояний
выключено (по умолчанию)
| включено
Сброс циклических состояний между параметрами 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.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Wrapped state upper value — верхний предел для сброса циклических состояний
pi (по умолчанию)
| скаляр
| вектор
Верхний предел выходного сигнала блока (для сброса циклических состояний).
Зависимости
Этот параметр используется при включении Wrap state.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Wrapped state lower value — нижний предел для сброса циклических состояний
−pi (по умолчанию)
| скаляр
| вектор
Нижний предел выходного сигнала блока (для сброса циклических состояний).
Зависимости
Этот параметр используется при включении Wrap state.
Параметр блока |
|
Значения |
|
По умолчанию |
|