Implicit events является встроенными событиями, которые происходят, когда график выполняется:
Стройте диаграмму пробуждения
Запись в состояние
Выход из состояния
Значение присвоено внутреннему объекту данных
Эти события неявны, потому что вы не задаете или инициировали их явным образом. Неявные события являются дочерними элементами графика, в котором они происходят и отображаются только в вышестоящей диаграмме.
Чтобы сослаться на неявные события, операторы действия используют этот синтаксис:
event(object)
где event
имя неявного события и object
состояние или данные, в которых событие имеет место.
Каждое ключевое слово ниже генерирует неявные события в обозначении языка действия для состояний и переходов.
Неявное событие | Значение |
---|---|
Задает и неявно генерирует локальное событие, когда программное обеспечение Stateflow® пишет значение в переменную Переменная | |
Задает и неявно генерирует локальное событие когда заданный | |
Задает и неявно генерирует локальное событие когда заданный | |
Задает и неявно генерирует локальное событие, когда график оцениваемого действия просыпается. |
Если больше чем один объект имеет то же имя, используйте точечный оператор, чтобы квалифицировать имя объекта с именем его родительского элемента. Этими примерами являются действительные ссылки к неявным событиям:
enter(switch_on) en(switch_on) change(engine.rpm)
tick
событие обращается к графику, содержащему оцениваемое действие. Событие не может обратиться к различному графику аргументом.
Этот пример иллюстрирует использование неявного tick
события.
Fan
и Heater
параллельны (AND) сверхдержавы. В первый раз, когда событие пробуждает диаграмму Stateflow, состояния Fan.Off
и Heater.Off
станьте активными.
Примите, что вы запускаете симуляцию дискретного времени. Каждый раз, когда график просыпается, tick
широковещательная передача события происходит. После четырех широковещательных сообщений, перехода от Fan.Off
к Fan.On
происходит. Точно так же после трех широковещательных сообщений, перехода от Heater.Off
к Heater.On
происходит.
Для получения информации о after
оператор, смотрите Выполнение Диаграммы управления при помощи Временной Логики.
Предположим что:
Ваш график содержит параллельные состояния.
В нескольких параллельных состояниях то же неявное событие используется, чтобы охранять переход от одного подсостояния до другого.
Когда несколько переходов допустимы в том же временном шаге, переходы выполняются на основе порядка, в котором они были созданы в графике. Этот порядок не обязательно совпадает с порядком активации параллельных состояний, которые содержат переходы. Например, рассмотрите следующий график:
Когда переход от IV.HERE
к IV.THERE
происходит, условие ex(IV.HERE)
допустимо для переходов от А к B для параллели, утверждает I, II, и III. Эти три перехода от А к B выполняются в порядке, в котором они были созданы: в состоянии I, затем II, и наконец III. Этот порядок не совпадает с порядком активации тех состояний.
Чтобы гарантировать, что допустимые переходы выполняются в том же порядке, что параллельные состояния становятся активными, используйте in
оператор вместо неявного enter
или exit
события:
С этой модификацией переходы от А к B происходят в том же порядке как активация параллельных состояний. Для получения дополнительной информации о in
оператор, смотрите Действие состояния Проверки при помощи в Операторе.