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

event является Stateflow® объект, который может инициировать действия в одном из следующих объектов:

  • Параллельное состояние на диаграмме Stateflow

  • Другая диаграмма Stateflow

  • Simulink® инициируемая подсистема или подсистема вызова функций

В целях симуляции нет предела на количество событий на диаграмме Stateflow. Однако для генерации кода базовый компилятор C применяет теоретический предел 231-1 события.

Типы событий

implicit event является встроенным событием, которое транслируется во время выполнения графика. Эти события неявны, потому что вы не задаете или не запускаете их явным образом. Для получения дополнительной информации см. «Управление поведением диаграммы управления при помощи неявных событий».

explicit event является событием, которое вы определяете явно. Явные события могут иметь один из следующих типов.

НапечататьОписание
Входное СобытиеСобытие, которое транслируется на диаграмму Stateflow из-за пределов графика. Для получения дополнительной информации смотрите Активировать диаграмму Stateflow путем отправки входных событий и проекта логики интерфейса человек-машина при помощи диаграмм Stateflow.
Локальное событиеСобытие, которое может происходить где угодно на диаграмме Stateflow, но отображается только в родительском объекте и его потомках. Локальные события поддерживаются только в диаграммах Stateflow в моделях Simulink. Для получения дополнительной информации смотрите Широковещание локальных событий для синхронизации параллельных состояний.
Выходное событиеСобытие, которое происходит в диаграмме Stateflow, но передается в блок Simulink. Выходные события поддерживаются только в диаграммах Stateflow в моделях Simulink. Для получения дополнительной информации смотрите Активация блока Simulink путем отправки выходных событий.

Локальные события можно задать на этих уровнях иерархии Stateflow.

Уровень иерархииВидимость
ГрафикЛокальное событие видно на графике и всех его состояниях и подсостояниях.
СубдиаграммаЛокальное событие видно субдиаграмме и всем его состояниям и подсостояниям.
ГосударствоЛокальное событие видно состоянию и всем его подсостояниям.

Определение событий на графике

Можно добавить события на диаграмму Stateflow с помощью панели «Символы», меню «Редактор Stateflow» или «Model Explorer».

Добавление событий через панель символов

  1. На вкладке Modeling, под Design Data, выберите Symbols Pane.

  2. Щелкните значок Create Event.

  3. В строке для нового события в разделе TYPE щелкните значок и выберите:

    • Input Event

    • Local Event

    • Output Event

  4. Измените имя события.

  5. Для входных и выходных событий щелкните по полю PORT и выберите номер порта.

  6. Чтобы задать свойства для события, откройте Property Inspector. На панели «Символы» щелкните правой кнопкой мыши строку события и выберите «Исследовать». Для получения дополнительной информации смотрите Задать свойства для события.

Добавление событий при помощи меню Редактора Stateflow

  1. На диаграмме Stateflow в модели Simulink выберите опцию меню, соответствующую типу события, которое вы хотите добавить.

    НапечататьОпция меню
    Входное СобытиеНа вкладке Modeling, под Design Data, нажмите Event Input.
    Выходное событиеНа вкладке Modeling, под Design Data, нажмите Event Output.
    Локальное событиеНа вкладке Modeling, под Design Data, нажмите Local Event.

  2. В диалоговом окне «Событие» задайте свойства данных. Для получения дополнительной информации смотрите Задать свойства для события.

Добавление событий через браузер Model Explorer

  1. На вкладке Modeling, под Design Data, выберите Model Explorer.

  2. На панели Model Hierarchy выберите объект в иерархии Stateflow, где вы хотите сделать новое событие видимым. Выбранный объект становится родительским элементом нового события.

  3. В меню Model Explorer выберите Add > Event. Новое событие с определением по умолчанию появится на панели Содержимое (Contents) Обозревателя моделей (Model Explorer).

  4. На панели Event задайте свойства события. Для получения дополнительной информации смотрите Задать свойства для события.

Доступ к информации о событии из диаграммы Stateflow

Можно отобразить свойства входного или локального события или открыть назначение выходного события непосредственно с диаграммы Stateflow. Щелкните правой кнопкой мыши состояние или переход, который содержит интересующее событие и выберите Explore. В контекстном меню перечислены имена и возможности всех разрешенных символов в состоянии или переходе. Выбор входа или локального события из контекстного меню отображает его свойства в Model Explorer. Выбор события выхода из контекстного меню открывает подсистему Simulink или диаграмму Stateflow, связанную с событием.

Лучшие практики для использования событий в диаграммах Stateflow

Используйте send Команда для трансляции явных событий в действиях

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

{output_event;}

Вместо этого вызовите send оператор.

{send(output_event);}

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

Избегайте использования явных событий для запуска условных действий

Используйте условия для переходов вместо событий, когда вы хотите:

  • Представлять условные операторы, например [x < 1] или [x == 0].

  • Представление изменения значения данных, например [hasChanged(x)].

Избегайте использования неявного enter события Проверка действия состояния

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

Не смешивайте события Edge-Triggered и Function-Call Входа в График

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

См. также

| |

Похожие темы