output event является событием, которое происходит в графике Stateflow®, но отображается в блоках Simulink® вне графика. Этот тип события позволяет графику уведомить другие блоки в модели о событиях, которые происходят в графике. Задавать выходное событие:
Добавьте событие к диаграмме Stateflow, как описано в Задают События в Графике.
Установите свойство Scope для события к Output to Simulink
. Для каждого выходного события, которое вы задаете, выходной порт появляется на блоке Stateflow.
Выходное событие может активировать другие блоки в модели через изменение в управляющем сигнале (триггер ребра) или вызов функции к блоку Simulink.
Чтобы задать запускаемое фронтом выходное событие, установите свойство Trigger на Either Edge
.
Чтобы задать вызов функции выходное событие, установите свойство Trigger на Function call
.
Для получения дополнительной информации смотрите, Синхронизируют Компоненты модели Широковещательными Событиями.
Чтобы широковещательно передать выходные события от одного графика до другого, используйте оператор send
. Формат выходной широковещательной передачи события
send(event_name)
event_name
выходное событие.Запускаемое фронтом выходное событие активирует блок Simulink, чтобы выполниться во время шага текущего времени симуляции. С этим типом выходного события изменение в управляющем сигнале действует как триггер. Для получения дополнительной информации смотрите Используя Триггируемые подсистемы (Simulink).
Чтобы активировать Подсистему Simulink, когда ваша модель потребует регулярного или периодического выполнения подсистемы, используйте запускаемое фронтом выходное событие. Например, эта модель использует запускаемое фронтом выходное событие, чтобы активировать две триггируемых подсистемы равномерно.
График содержит запускаемое фронтом выходное событие e1
который чередуется между 0 и 1 в процессе моделирования.
В диаграмме Stateflow свойством Trigger запускаемого фронтом выходного события всегда является Either Edge
. Триггируемые подсистемы Simulink могут иметь Rising
, Falling
, или Either
триггер ребра. Модель показывает различие между инициированием Either
подсистема ребра от Rising
подсистема ребра:
Выходное событие инициировало Either
подсистема ребра на каждой широковещательной передаче. Триггер происходит, когда событие сигнализирует о переключателях от 0 до 1 или от 1 до 0.
Выходное событие инициировало Rising
подсистема ребра на любой широковещательной передаче. Триггер происходит только, когда событие сигнализирует о переключателях от 0 до 1.
График диспетчеризирует только одну широковещательную передачу запускаемого фронтом выходного события для каждого временного шага. Когда существует несколько широковещательных сообщений в одном временном шаге, график диспетчеризирует широковещательную передачу того и стоит в очереди остающиеся широковещательные сообщения для отправки в последовательных временных шагах. Например, в этой модели, график Вызывающей стороны использует запускаемое фронтом выходное событие output_cmd
активировать график Вызываемого.
График Вызывающей стороны пытается широковещательно передать то же запускаемое фронтом выходное событие четыре раза в одном временном шаге.
Каждый раз график Вызываемого активируется, выходные данные y
шаг одним.
Когда вы симулируете модель во время t = 1, график Вызывающей стороны диспетчеризирует одно из четырех выходных событий. График Вызываемого выполняется однажды во время того временного шага. График Вызывающей стороны стоит в очереди другие три широковещательных сообщения события для будущей отправки за один раз t = 2, t = 3 и t = 4. В результате значение y
растет с шагом одного во время t = 1, t = 2, t = 3 и t = 4.
Выходное событие вызова функции активирует блок Simulink, чтобы выполниться во время шага текущего времени симуляции. Этот тип выходного события работает только над блоками, которые можно инициировать с вызовом функции. Для получения дополнительной информации смотрите Используя Подсистемы вызова функций (Simulink).
Используйте вызов функции выходное событие, чтобы активировать блок Simulink, когда ваша модель потребует доступа к выходным данным от блока в том же временном шаге как вызов функции. Например, эта модель содержит два вызова функции выходные события:
В диаграмме Edge to Function, выходном событии call
активирует диаграмму Looping Scheduler.
В диаграмме Looping Scheduler, выходном событии A1
активирует Подсистему Simulink.
Для получения дополнительной информации см. Расписание Подсистема Многократно на Одном Шаге.
Когда существует несколько широковещательных сообщений вызова функции выходное событие в одном временном шаге, график диспетчеризирует все широковещательные сообщения в том временном шаге. Выполнение подсистем вызова функций чередовано с выполнением графика, так, чтобы выведенный от подсистемы вызова функций сразу было доступно в графике. Например, в этой модели, график Вызывающей стороны использует вызов функции выходное событие output_cmd
активировать график Вызываемого.
График Вызывающей стороны пытается широковещательно передать тот же вызов функции выходное событие четыре раза в одном временном шаге.
Каждый раз график Вызываемого активируется, выходные данные y
шаг одним.
Когда вы симулируете модель, график Вызывающей стороны диспетчеризирует все четыре выходных события во время t = 1. График Вызываемого выполняется четыре раза во время того временного шага. Выполнение графика Вызываемого чередовано с выполнением графика Вызывающей стороны так, чтобы выведенный из графика Вызываемого было сразу доступно. В результате значение | y | увеличивается с 0 до 4 во время t = 1.
Если вы не можете использовать вызов функции выходное событие, например, для генерации HDL-кода, можно аппроксимировать вызов функции при помощи:
Запускаемое фронтом выходное событие
Активированная подсистема
Два последовательных широковещательных сообщения события
Поведение постановки в очередь последовательных запускаемых фронтом выходных событий позволяет вам аппроксимировать вызов функции активированной подсистемой.
Например, в этой модели, запускаемом фронтом выходном событии 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 для выходного события, значения Порта для остающихся выходных событий автоматически перенумеровывают.