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».
На вкладке Modeling, под Design Data, выберите Symbols Pane.
Щелкните значок Create Event.
В строке для нового события в разделе TYPE щелкните значок и выберите:
Input Event
Local Event
Output Event
Измените имя события.
Для входных и выходных событий щелкните по полю PORT и выберите номер порта.
Чтобы задать свойства для события, откройте Property Inspector. На панели «Символы» щелкните правой кнопкой мыши строку события и выберите «Исследовать». Для получения дополнительной информации смотрите Задать свойства для события.
На диаграмме 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, где вы хотите сделать новое событие видимым. Выбранный объект становится родительским элементом нового события.
В меню Model Explorer выберите Add > Event. Новое событие с определением по умолчанию появится на панели Содержимое (Contents) Обозревателя моделей (Model Explorer).
На панели Event задайте свойства события. Для получения дополнительной информации смотрите Задать свойства для события.
Можно отобразить свойства входного или локального события или открыть назначение выходного события непосредственно с диаграммы Stateflow. Щелкните правой кнопкой мыши состояние или переход, который содержит интересующее событие и выберите Explore. В контекстном меню перечислены имена и возможности всех разрешенных символов в состоянии или переходе. Выбор входа или локального события из контекстного меню отображает его свойства в Model Explorer. Выбор события выхода из контекстного меню открывает подсистему Simulink или диаграмму Stateflow, связанную с событием.
send
Команда для трансляции явных событий в действияхЧтобы транслировать локальные или выходные события в состоянии или переходных действиях, используйте send
оператор. Для примера, чтобы транслировать событие выхода, когда переход действителен, избегайте использования имени события в качестве действия условия.
{output_event;}
Вместо этого вызовите send
оператор.
{send(output_event);}
Хотя оба действия действительны, использование send
оператор повышает удобочитаемость графика и гарантирует, что явные события не будут приняты за данные.
Используйте условия для переходов вместо событий, когда вы хотите:
Представлять условные операторы, например [x < 1]
или [x == 0]
.
Представление изменения значения данных, например [hasChanged(x)]
.
enter
события
Проверка действия состоянияЧтобы проверить активность состояния, используйте in
оператор вместо неявного события enter
. Для получения дополнительной информации смотрите Проверяйте активность состояния при помощи оператора in.
Смешивание входных событий, которые используют краевые триггеры и вызовы функций, приводит к ошибке во время компиляции.