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 для обратной связи с выводом блока без создания алгебраического цикла.
О порте состояния
Установка флажка Show state port в диалоговом окне параметров блока Integrator приводит к появлению дополнительного выходного порта, порта состояния, в верхней части блока интегратора.
Выходные данные порта состояния совпадают с выходными данными стандартного выходного порта блока, за исключением следующего случая. Если блок сбрасывается на текущем временном шаге, вывод порта состояния представляет значение, которое появилось бы на стандартном выходе блока, если бы блок не был сброшен.
Выходные данные порта состояния появляются раньше на временном шаге, чем выходные данные выходного порта блока интегратора. Используйте порт состояния, чтобы избежать создания алгебраических циклов в этих сценариях моделирования:
-
Самоустанавливающиеся интеграторы (см. раздел Создание самоустанавливающихся интеграторов).
-
Передача состояния от одной включенной подсистемы к другой (см. раздел Передача состояний между включенными подсистемами).
При обновлении модели проверяется, что порт состояния применяется к одному из этих двух сценариев. Если нет, появится сообщение об ошибке. Кроме того, вы не можете регистрировать выходные данные этого порта в референсной модели, которая выполняется в Accelerator mode. Если для порта включено ведение журнала, генерируется предупреждение "signal not found" во время выполнения модели, на которую он ссылается. |
Создание самоустанавливающихся интеграторов
Порт состояния блока Integrator помогает вам избежать алгебраического цикла при создании интегратора, который сбрасывает себя на основе значения его выходных данных. Рассмотрим, например, следующую модель.
Эта модель пытается создать самоустанавливающийся интегратор, подавая выходной сигнал интегратора, вычитаемый из 1
, обратно в порт сброса интегратора. Однако модель создает алгебраический цикл. Чтобы вычислить выходные данные блока интегратора, программное обеспечение должно знать значение сигнала сброса блока, и наоборот. Поскольку эти два значения взаимозависимы, программное обеспечение не может определить ни одно из них. Поэтому при попытке смоделировать или обновить эту модель появляется сообщение об ошибке.
Следующая модель использует порт состояния интегратора, чтобы избежать алгебраического цикла.
В этой версии значение сигнала сброса зависит от значения порта состояния. Значение порта состояния доступно раньше на текущем временном шаге, чем значение выходного порта блока интегратора. Следовательно, может определить, нужно ли сбрасывать блок перед вычислением выходных данных блока, тем самым избегая алгебраического цикла.
Передача состояний между включенными подсистемами
Порт состояния помогает избежать алгебраического цикла при передаче состояния между двумя включенными подсистемами. Рассмотрим, например, следующую модель.
Включенные подсистемы A
и B
содержат следующие блоки:
Подсистема А |
Подсистема B |
---|
В этой модели постоянный входной сигнал приводит в действие две включенные подсистемы, которые интегрируют сигнал. Генератор импульсов генерирует разрешающий сигнал, который заставляет выполнение чередоваться между двумя подсистемами. Для порта включения каждой подсистемы установлено значение reset
, что приводит к сбросу подсистемой своего интегратора, когда он становится активным. Сброс интегратора приводит к тому, что интегратор считывает значение своего порта начального состояния. Порт начального состояния интегратора в каждой подсистеме подключен к выходному порту интегратора в другой подсистеме.
Это соединение предназначено для обеспечения непрерывной интеграции входного сигнала при чередовании выполнения между двумя подсистемами. Однако соединение создает алгебраический цикл. Чтобы вычислить выходные данные A
, нужно знать выходные данные B
, и наоборот. Поскольку выходные данные являются взаимозависимыми, нельзя вычислить выходные значения. Поэтому при попытке смоделировать или обновить эту модель появляется сообщение об ошибке.
Данная версия той же модели использует порт состояния интегратора, чтобы избежать создания алгебраического цикла при передаче состояния.
Включенные подсистемы A
и B
содержат следующие блоки:
Подсистема А |
Подсистема B |
---|
В этой модели начальное состояние интегратора в A
зависит от значения порта состояния интегратора в B
, и наоборот. Значения портов состояния обновляются раньше на временном шаге моделирования, чем значения выходных портов интегратора. Следовательно, можно вычислить начальное состояние любого интегратора, не зная конечного выходного значения другого интегратора.
Указание абсолютного допуска для выходных данных блока
По умолчанию программное обеспечение использует значение абсолютного допуска, указанное в диалоговом окне Configuration Parameters, для вычисления выходных данных блока Integrator. Если это значение не обеспечивает достаточного контроля ошибок, укажите более подходящее значение в поле Absolute tolerance диалогового окна блока Integrator. Указанное вами значение используется для вычисления всех выходных данных блока.
Порты
Вход
Port_1 — входной сигнал
скаляр
| вектор
| матрица
Сигнал, который необходимо интегрировать.
Типы данных: Float64
External Reset — сброс состояния к начальному
скаляр
| вектор
| матрица
Сброс состояния блока до заданного начального по внешнему сигналу. См. раздел Сброс состояния.
Зависимости
Чтобы использовать этот порт, установите флажок External Reset.
Типы данных: Float64
Bool
x0 — начальное состояние
скаляр
| вектор
| матрица
Начальное состояние блока, заданное внешним сигналом. См. раздел Определение начальных состояний.
Зависимости
Чтобы использовать этот порт, установите для параметра Initial Conditions значение external
.
Типы данных: Float64
Выход
Port_1 — выходной сигнал
скаляр
| вектор
| матрица
Результат интегрирования.
Типы данных: Float64
Port_2 — признак ограничения выходного сигнала
−1
| 0
| 1
Выходной сигнал насыщения, заданный в виде это скаляра, вектора или матрицы, которая указывает. Указывает, когда выходной сигнал ограничен верхним или нижним пределом насыщения.
-
Если интеграл ограничен на уровне Upper saturation limit, выходной сигнал равен
1
. -
Если интеграл ограничен на уровне Lower saturation limit, выходной сигнал равен
−1
-
Если интеграл находится между этими пределами, выходной сигнал равен
0
. Дополнительную информацию см.Ограничение интегратора.
Типы данных: Float64
Port_3 — состояние
скаляр
| вектор
| матрица
Выводит состояние блока. Дополнительную информацию см.О порте состояния.
Зависимости
Чтобы использовать этот порт, установите флажок параметра Show state port.
Типы данных: 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.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Show saturation port — включение выходного порта насыщения
выключено (по умолчанию)
| включено
Установите этот флажок, чтобы добавить в блок выходной порт насыщения. Когда вы снимаете этот флажок, блок не имеет выходного порта насыщения.
Зависимости
Выбор этого параметра включает выходной порт насыщения.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Show state port — включение порта вывода состояния
выключено (по умолчанию)
| включено
Установите этот флажок, чтобы добавить порт вывода состояния в блок. Когда вы снимаете этот флажок, блок не имеет порта вывода состояния.
Зависимости
Выбор этого параметра включает порт вывода состояния.
Параметр блока |
|
Значения |
|
По умолчанию |
|