Интеграция сигнала
Simulink/Обычно используемые блоки
Simulink/Непрерывный
Блок Integrator выводит значение интеграла своего входного сигнала относительно времени.
Simulink® обрабатывает Integrator блок как динамическую систему с одним состоянием. Динамика блоков определяется:
где:
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 позволяет обернуть состояния, которые ограничены параметрами верхнего и нижнего значений обернутого состояния. Алгоритм для определения состояний переноса задается:
где:
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
.
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|