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

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

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

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

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

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

Типы Событий

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

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

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

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

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

Задайте События в графике

Можно добавить события в диаграмму Stateflow при помощи панели Символов, меню Stateflow Editor или 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. В панели Символов щелкните правой кнопкой по строке для события и выберите Explore. Для получения дополнительной информации смотрите Set Properties для События.

Добавьте События при помощи меню редактора Stateflow

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

    ВводПункт меню
    Введите событиеВо вкладке Modeling, под Design Data, нажимают Event Input.
    Выведите событиеВо вкладке Modeling, под Design Data, нажимают Event Output.
    Локальное событиеВо вкладке Modeling, под Design Data, нажимают Local Event.

  2. Диалоговое окно In the Event, задайте свойства данных. Для получения дополнительной информации смотрите Set Properties для События.

Добавьте События через Model Explorer

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

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

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

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

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

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

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

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

| |

Похожие темы