Событие вывода - это событие, которое происходит в диаграмме 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 для активации диаграммы Callee.

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

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

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

Событие вывода вызова функции активирует блок Simulink для выполнения в течение текущего временного этапа моделирования. Этот тип выходного события работает только для блоков, которые можно запустить с помощью вызова функции. Дополнительные сведения см. в разделе Использование подсистем вызова функций (Simulink).
Используйте событие вывода вызова функции, чтобы активировать блок Simulink, когда модели требуется доступ к выходным данным из блока в тот же шаг времени, что и вызов функции. Например, эта модель содержит два события вывода вызова функции:
На диаграмме Edge to Function событие вывода call активизирует диаграмму планировщика закольцовывания.
На диаграмме планировщика закольцовывания выходное событие A1 активирует подсистему Simulink.
Дополнительные сведения см. в разделе Планирование подсистемы несколько раз за один шаг.

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

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

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

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

Если нельзя использовать событие вывода вызова функции, например, для генерации кода HDL, можно аппроксимировать вызов функции с помощью:
Событие вывода, инициируемое краем
Включенная подсистема
Две последовательных трансляции событий
Поведение очереди последовательных событий вывода, инициируемых краями, позволяет аппроксимировать вызов функции с включенной подсистемой.
Например, в этой модели инициируемое ребром выходное событие output_cmd активизирует включенную подсистему.

Диаграмма Caller выполняет широковещательную рассылку выходного события, инициируемого краем, с помощью send оператор.

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

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

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

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