Переходы Конечных автоматов
Переход по умолчанию (default transition) — это переход, который выполняется до активации какого-либо состояния или узла. Система автоматически добавляет переход по умолчанию для первого состояния и добавляет узел для самого перехода.
Переход (transition) — это линия со стрелкой, описывающая переход от одного состояния КА, в котором переход начинается, к другому. Для перехода можно определить условия и действия. Условия перехода определяют, когда произойдет смена состояния, а действия – что должно произойти в момент смены.
Синтаксис переходов
На переходах настраивается темпоральная логика, условия и действия:
Условия []
определяют, когда должен произойти переход, а действия {}
определяют, что должно произойти при переходе. Действия и условия подчиняются следующим правилам:
-
Условия задаются в квадратных скобках
[]
. -
Действия задаются в фигурных скобках
{}
. -
Все поля опциональны и могут быть пропущены.
-
Условия и действия поддерживают математические операции языка Julia. Например:
-
На переходах можно оставлять комментарии как и в любом коде на языке Julia:
-
Для назначения различных значений переменным используйте точку с запятой ; в качестве разделителя:
{y = 0; v = 1}
-
Условия в рамках одного перехода задаются через логические операторы
&&
(и) и||
(или).#Вариант с "и" [x>1 && x<3] #Вариант с "или" [x>1 || x<3]
-
В условиях приоритеты операторов могут быть заданы круглыми скобками, как и в языке Julia, например:
[x == 1 && (y == 3 || after(3,sec))] # выражение (y == 3 || after(3,sec)) будет вычислено первым
Приоритеты переходов
Приоритет переходов — порядок, в котором они оцениваются и выполняются, если условия нескольких переходов одновременно истинны.
Рассмотрим пример из статьи:
В примере у состояния Rest (покой) имеются два перехода, приоритеты которых задаются автоматически:
Нажмите по переходу для настройки нужного приоритета и выберите Порядок исполнения:
В нашем случае переход до состояния Alarm (тревога) был поставлен первым и имеет первый приоритет, а до состояния Fault (неисправность) — вторым и второй приоритет соответственно.