Implicit events является встроенными событиями, которые происходят, когда график выполняется:
Стройте диаграмму пробуждения
Запись в состояние
Выход из состояния
Значение присвоено внутреннему объекту данных
Эти события неявны, потому что вы не задаете или инициировали их явным образом. Неявные события являются дочерними элементами графика, в котором они происходят и видимы только в вышестоящей диаграмме.
Чтобы сослаться на неявные события, операторы действия используют этот синтаксис:
event(object)
где event
является именем неявного события, и object
является состоянием или данными, в которых событие имеет место.
Каждое ключевое слово ниже генерирует неявные события в обозначении языка действия для состояний и переходов.
Неявное событие | Значение |
---|---|
Задает и неявно генерирует локальное событие, когда программное обеспечение Stateflow® пишет значение в переменную Переменная | |
Задает и неявно генерирует локальное событие, когда заданный | |
Задает и неявно генерирует локальное событие, когда из заданного | |
Задает и неявно генерирует локальное событие, когда график оцениваемого действия просыпается. | |
Эквивалентный |
Если больше чем один объект имеет то же имя, используйте точечный оператор, чтобы квалифицировать имя объекта с именем его родительского элемента. Этими примерами являются действительные ссылки к неявным событиям:
enter(switch_on) en(switch_on) change(engine.rpm)
tick
(или wakeup
) событие обращается к графику, содержащему оцениваемое действие. Событие не может обратиться к различному графику аргументом.
Этот пример иллюстрирует использование неявных событий 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
, смотрите Действие состояния Проверки при помощи в Операторе.