Implicit events является встроенными событиями, которые происходят во время выполнения графика когда:
Диаграмма просыпается.
Диаграмма входит в состояние, и состояние становится активным.
График выходит из состояния, и состояние становится неактивным.
График присваивает значение внутреннему объекту данных.
Эти события неявны, потому что вы не задаете или инициировали их явным образом. Неявные события являются дочерними элементами графика, в котором они происходят и отображаются только в вышестоящей диаграмме.
Ключевое слово tick
задает неявное событие, сгенерированное, когда график просыпается в симуляции дискретного времени.
Например, в этом графике, Fan
и Heater
параллельны (AND) состояния. Каждое состояние имеет пару подсостояний, On
и Off
. Первоначально, подсостояния Fan.Off
и Heater.Off
активны. Каждый раз, когда график просыпается, он генерирует tick
событие. Третий tick
инициировал переход от Heater.Off
к Heater.On
. Точно так же четвертый tick
инициировал переход от Fan.Off
к Fan.On
. На восьмом tick
, переходы графика назад к Fan.Off
и Heater.Off
.
Для получения информации о временном логическом операторе after
, смотрите Управление выполнением диаграммы при помощи Временной Логики.
Примечание
tick
событие обращается к графику, содержащему оцениваемое действие. Событие не может обратиться к различному графику.
В Stateflow® графики в Simulink® модели, эти операторы генерируют неявные события, когда график устанавливает значение переменной или когда график вводит или выходит из состояния.
Оператор | Синтаксис | Описание | Пример |
---|---|---|---|
change |
| Генерирует неявное локальное событие, когда график устанавливает значение переменной data_name . Переменная data_name не могут быть порожденные машиной данные. Это неявное событие работает только с данными, которые являются на уровне графика или ниже в иерархии. Для порожденных машиной данных используйте операторы обнаружения изменения, чтобы определить, когда значение данных изменится. Для получения дополнительной информации смотрите, Обнаруживают Изменения в Значениях Данных и Выражения. | Задайте неявное локальное событие, когда действие состояния или перехода запишет значение в переменную change(Engine.rpm) |
enter |
| Генерирует неявное локальное событие когда заданный state_name состояния становится активным. | Задайте неявное локальное событие, когда выполнение графика введет enter(Fan.On) |
exit |
| Генерирует неявное локальное событие когда заданный state_name состояния становится неактивным. | Задайте неявное локальное событие, когда выполнение графика выйдет exit(Fan.Off) |
Если больше чем одно состояние или объект данных имеют то же имя, используйте запись через точку, чтобы квалифицировать имя состояния. Для получения дополнительной информации смотрите, Идентифицируют Данные при помощи Записи через точку.
Например, в этом графике, Fan
и Heater
параллельны (AND) состояния. Каждое состояние имеет пару подсостояний, On
и Off
. Первоначально, подсостояния Fan.Off
и Heater.Off
активны. Когда график просыпается, он генерирует tick
событие, которое инициировало переход от Fan.Off
к Fan.On
. Когда Fan.Off
становится неактивным, график генерирует другое неявное событие, которое инициировало переход от Heater.Off
к Heater.On
. Когда выполнение графика заканчивается, подсостояния Fan.On
и Heater.On
активны.
Примечание
Если то же неявное событие инициировало несколько переходов в параллельных состояниях, порядок, в котором выполняются переходы, не обязательно совпадает с порядком выполнения параллельных состояний. Чтобы избежать неожиданного поведения и гарантировать, что переходы выполняются в порядке, заданном для параллельных состояний, не используйте неявные события. Вместо этого используйте условия перехода, которые вызывают операторы, такие как in
или hasChanged
. Для получения дополнительной информации смотрите Действие состояния Проверки при помощи в Операторе и Обнаружьте Изменения в Значениях Данных и Выражения.
after | change | enter | exit | hasChanged | in