Событие - это объект Stateflow ®, который может инициировать действия в одном из следующих объектов:
Параллельное состояние в диаграмме Stateflow
Другая диаграмма Stateflow
Подсистема запуска или вызова функций Simulink ®
В целях моделирования количество событий в диаграмме Stateflow не ограничено. Однако для генерации кода базовый компилятор C обеспечивает теоретическое ограничение 231-1 событий.
Неявное событие - это встроенное событие, которое передается во время выполнения диаграммы. Эти события неявны, так как они явно не определены или не инициированы. Дополнительные сведения см. в разделе Управление поведением диаграммы с помощью неявных событий.
Явное событие - это явно определенное событие. Явные события могут иметь один из этих типов.
| Напечатать | Описание |
|---|---|
| Входное событие | Событие, передаваемое на диаграмму Stateflow из-за пределов диаграммы. Дополнительные сведения см. в разделе Активация диаграммы потока состояний путем отправки событий ввода и конструирования логики интерфейса человек-машина с помощью диаграмм потока состояний. |
| Локальное событие | Событие, которое может произойти в любом месте диаграммы Stateflow, но отображается только в родительском объекте и его потомках. Локальные события поддерживаются только в диаграммах Stateflow в моделях Simulink. Дополнительные сведения см. в разделе Широковещательная рассылка локальных событий для синхронизации параллельных состояний. |
| Выходное событие | Событие, которое происходит в диаграмме Stateflow, но передается блоку Simulink. Выходные события поддерживаются только в диаграммах Stateflow в моделях Simulink. Дополнительные сведения см. в разделе Активация блока Simulink путем отправки выходных событий. |
Локальные события можно определить на этих уровнях иерархии Stateflow.
| Уровень иерархии | Видимость |
|---|---|
| Диаграмма | Локальное событие отображается на диаграмме и во всех ее состояниях и подстанциях. |
| Поддиаграмма | Локальное событие отображается на подшарте и во всех его состояниях и подстанциях. |
| Государство | Локальное событие видно государству и всем его подстанциям. |
Добавить события в диаграмму потока состояний можно с помощью панели Символы (Symbols), меню Редактор потока состояний (Stateflow Editor) или Проводника моделей (Model Explorer).
На вкладке «Моделирование» в разделе «Данные проекта» выберите «Панель обозначений».
Щелкните значок Создать событие.![]()
В строке нового события в разделе ТИП щелкните значок и выберите:
Input Event
Local Event
Output Event
Измените имя события.
Для ввода и вывода событий щелкните по полю PORT и выберите номер порта.
Чтобы задать свойства события, откройте инспектор свойств. На панели «Символы» щелкните правой кнопкой мыши строку события и выберите команду «Обзор». Дополнительные сведения см. в разделе Задание свойств события.
В диаграмме Stateflow в модели Simulink выберите пункт меню, соответствующий типу добавляемого события.
| Напечатать | Пункт меню |
|---|---|
| Входное событие | На вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) щелкните Ввод событий (Event Input). |
| Выходное событие | На вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) щелкните Вывод события (Event Output). |
| Локальное событие | На вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) щелкните Локальное событие (Local Event). |
В диалоговом окне «Событие» задайте свойства данных. Дополнительные сведения см. в разделе Задание свойств события.
На вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) выберите Обозреватель моделей (Model Explorer).
На панели Иерархия модели (Model Hierarchy) выберите объект в иерархии Stateflow, где необходимо сделать новое событие видимым. Выбранный объект становится родителем нового события.
В меню Проводника моделей выберите Добавить (Add) > Событие (Event). Новое событие с определением по умолчанию появится на панели Содержимое (Contents) Проводника моделей (Model Explorer).
На панели «Событие» укажите свойства события. Дополнительные сведения см. в разделе Задание свойств события.
Можно отобразить свойства входного или локального события или открыть назначение выходного события непосредственно из диаграммы Stateflow. Щелкните правой кнопкой мыши состояние или переход, содержащий интересующее событие, и выберите Исследовать. В контекстном меню перечислены имена и области всех разрешенных символов в состоянии или переходе. При выборе входного или локального события в контекстном меню его свойства отображаются в обозревателе моделей. При выборе выходного события в контекстном меню открывается подсистема Simulink или диаграмма Stateflow, связанная с событием.
send Команда для трансляции явных событий в действияхДля трансляции локальных или выходных событий в действиях состояния или перехода используйте send оператор. Например, для широковещательной передачи выходного события, когда переход допустим, не используйте имя события в качестве действия условия.
{output_event;}Вместо этого вызовите send оператор.
{send(output_event);}Хотя оба действия действительны, используйте send оператор повышает читаемость диаграммы и гарантирует, что явные события не будут приняты за данные.
Используйте условия для переходов вместо событий, когда необходимо:
Представлять условные операторы, например, [x < 1] или [x == 0].
Представляют изменение значения данных, например, [hasChanged(x)].
enter Проверка активности состоянияДля проверки активности состояния используйте in оператор вместо неявного события enter. Дополнительные сведения см. в разделе Проверка активности состояния с помощью оператора in.
Смешение входных событий, использующих краевые триггеры и вызовы функций, приводит к ошибке времени компиляции.