Активируйте блок 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).

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

Чтобы активировать Подсистему 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).

Когда использовать вызов функции Выходные События

Используйте вызов функции выходное событие, чтобы активировать блок 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 для выходного события, значения Порта для остающихся выходных событий автоматически перенумеровывают.

Смотрите также

Похожие темы