Активируйте блок Simulink путем отправки выходных событий

output event является событием, которое происходит в Stateflow® диаграмма, но видна в Simulink® блоки за пределами графика. Этот тип события позволяет графику уведомлять другие блоки в модели о событиях, которые происходят на графике. Чтобы определить выход событие:

  1. Добавьте событие к диаграмме Stateflow, как описано в разделе Задать события на графике.

  2. Задайте для свойства Scope для события значение Output to Simulink. Для каждого выхода события, которое вы задаете, на блоке Stateflow появляется выход порт.

  3. Событие выхода может активировать другие блоки в модели через изменение управляющего сигнала (триггер ребра) или вызов функции к блоку Simulink.

    • Чтобы задать выходное событие, вызванное ребром, задайте для свойства Trigger значение Either Edge.

    • Чтобы задать выходное событие вызова функции, задайте значение свойства Trigger Function call.

Для получения дополнительной информации смотрите Синхронизация компонентов модели посредством широковещательных событий.

Широковещательные выходные события

Чтобы транслировать выходные события от одного графика к другой, используйте оператор send. Формат широковещательной передачи выходного события:

send(event_name)
где event_name является событием выхода.

Активируйте блок Simulink при помощи краевых триггеров

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

Когда использовать Edge-триггерные выходные события

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

График содержит инициированное кромкой выходное событие e1 который чередуется между 0 и 1 во время симуляции.

В диаграмме Stateflow свойство Trigger выходного события, вызванного ребром, всегда Either Edge. У триггируемых подсистем Simulink может быть Rising, Falling, или Either ребро. Модель показывает различие между запуском Either краевая подсистема из Rising Ребро подсистема:

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

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

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

График отправляет только одно широковещательное сообщение выходного события, инициируемого краем, для каждого временного шага. Когда существует несколько широковещательных передач за один временной шаг, график отправляет одну широковещательную передачу и ставит оставшиеся широковещательные передачи в очередь для отправки в последующие временные шаги. Для примера в этой модели графика Caller использует событие edge-trigged выхода output_cmd для активации графика Калли.

Caller графика пытается транслировать одно и то же событие выхода срабатывающее на фронте четыре раза за один временной шаг.

Каждый раз, когда активируется диаграмма Калли, выходные данные y шаги на единицу.

Когда вы симулируете модель, в момент t = 1, график вызывающего абонента отправляет одно из четырех выходных событий. График Callee выполняется один раз в течение того временного шага. График вызывающего абонента ставит в очередь другие три вещания событий для будущей отправки во времени t = 2, t = 3 и t = 4. В результате значение y растет с шагами в единицу в момент времени t = 1, t = 2, t = 3 и t = 4.

Активируйте блок Simulink при помощи вызовов функций

Выходное событие вызова функции активирует блок Simulink, который выполняется в течение текущего временного шага симуляции. Этот тип выхода события работает только с блоками, которые можно инициировать вызовом функции. Для получения дополнительной информации см. Использование подсистем вызова функций (Simulink).

Когда использовать Function-Call Выходные события

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

  • В Диаграмму Edge to Function событие выхода call активирует диаграмму Looping Scheduler.

  • В Диаграмму Looping Scheduler событие выхода A1 активирует подсистему Simulink.

Для получения дополнительной информации смотрите Запланировать несколько раз Подсистему в один шаг.

Перемежение нескольких выходных событий вызова функции

Когда существует несколько широковещательных передач выходного события вызова функции за один временной шаг, график отправляет все широковещательные передачи за этот временной шаг. Выполнение подсистем вызова функций перемежается с выполнением диаграммы, так что вывод от подсистемы вызова функций доступен сразу на графике. Для примера в этой модели графика Caller использует событие function-call выхода output_cmd для активации графика Калли.

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

Каждый раз, когда активируется диаграмма Калли, выходные данные y шаги на единицу.

Когда вы моделируете модель, график Caller отправляет все четыре выходных события в момент t = 1. За тот временной шаг графика Callee выполняется четыре раза. Выполнение графика Калли перемежается с выполнением графика вызывающего абонента, так что вывод из графика Калли немедленно становится доступным. В результате значение | y | увеличивается с 0 до 4 во время t = 1.

Аппроксимация вызова функции при помощи событий, вызванных фронтом

Если вы не можете использовать вызов функции выходное событие, например, для генерации HDL-кода, можно аппроксимировать вызов функции при помощи:

  • Событие выхода с edge-триггером

  • Включенная подсистема

  • Два последовательных вещания событий

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

Для примера в этой модели событие выхода, вызванное ребром output_cmd активирует активированную подсистему.

График вызывающего абонента транслирует выходное событие, вызванное фронтом, используя send оператор.

Когда симуляция начинается, значение триггерного сигнала составляет 0. В момент t = 20 график отправляет output_cmd, изменение значения триггерного сигнала на 1. Включенная подсистема становится активной и выполняется в течение этого временного шага. Поскольку никаких других широковещательных сообщений о событиях не происходит, активированная подсистема продолжает выполняться в каждый временной шаг, пока симуляция не закончится при t = 40. Блок Display показывает окончательное значение 40.

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

Когда симуляция начинается, значение триггерного сигнала составляет 0. В момент t = 20 график отправляет output_cmd, изменение значения триггерного сигнала на 1. Включенная подсистема становится активной и выполняется в течение этого временного шага. График помещает второе событие в очередь для отправки на следующем временном шаге. В момент t = 21 график отправляет второе выходное событие, которое изменяет значение триггерного сигнала назад на 0. Активированная подсистема останавливает выполнение, и блок Display показывает окончательное значение 20.

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

Ассоциация событий Выхода с портами Выхода

Когда вы задаете выход событие на графике, порт выхода события появляется на правой стороне блока диаграммы. Выходные события должны быть скалярными, но можно задать несколько выходных событий на графике. Свойство Port выходного события задает положение выходного порта.

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

См. также

Похожие темы