exponenta event banner

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

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

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

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

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

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

Типы событий

Неявное событие - это встроенное событие, которое передается во время выполнения диаграммы. Эти события неявны, так как они явно не определены или не инициированы. Дополнительные сведения см. в разделе Управление поведением диаграммы с помощью неявных событий.

Явное событие - это явно определенное событие. Явные события могут иметь один из этих типов.

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

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

Уровень иерархииВидимость
ДиаграммаЛокальное событие отображается на диаграмме и во всех ее состояниях и подстанциях.
ПоддиаграммаЛокальное событие отображается на подшарте и во всех его состояниях и подстанциях.
ГосударствоЛокальное событие видно государству и всем его подстанциям.

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

Добавить события в диаграмму потока состояний можно с помощью панели Символы (Symbols), меню Редактор потока состояний (Stateflow Editor) или Проводника моделей (Model Explorer).

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

  1. На вкладке «Моделирование» в разделе «Данные проекта» выберите «Панель обозначений».

  2. Щелкните значок Создать событие.

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

    • Input Event

    • Local Event

    • Output Event

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

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

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

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

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

    НапечататьПункт меню
    Входное событиеНа вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) щелкните Ввод событий (Event Input).
    Выходное событиеНа вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) щелкните Вывод события (Event Output).
    Локальное событиеНа вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) щелкните Локальное событие (Local Event).

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

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

  1. На вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) выберите Обозреватель моделей (Model Explorer).

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

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

  4. На панели «Событие» укажите свойства события. Дополнительные сведения см. в разделе Задание свойств события.

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

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

Рекомендации по использованию событий в диаграммах Stateflow

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

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

{output_event;}

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

{send(output_event);}

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

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

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

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

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

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

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

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

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

См. также

| |

Связанные темы