Переходы
Переход по умолчанию (default transition) — это переход, который выполняется до активации какого-либо состояния или узла. Система автоматически добавляет переход по умолчанию для первого состояния и добавляет узел для перехода.
Переход (transition) — это линия со стрелкой, описывающая переход от одного состояния КА, в котором переход начинается, к другому. Такой переход может соединять не только состояния, но и узлы или связывать блок состояния с узлом. Для перехода можно определить условия []
и действия {}
. Условия перехода определяют, произойдет ли переход к следующему узлу или состоянию. Действия, связанные с переходом, указывают, какой код на Julia выполнится в процессе этого перехода.
Синтаксис переходов
На переходах настраиваются Операторы темпоральной логики, индикаторы изменений, условия и действия:
Действия и условия подчиняются следующим правилам:
-
Условия задаются в квадратных скобках
[]
. -
Действия задаются в фигурных скобках
{}
. -
Все поля опциональны и могут быть пропущены.
-
Условия и действия поддерживают математические и логические операции языка Julia. Например:
-
На переходах можно оставлять комментарии как и в любом коде на языке 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 (неисправность) — вторым и второй приоритет соответственно.
Суперпереходы
Суперпереход (supertransition) — это механизм, который позволяет осуществлять переходы между состояниями на любом уровне иерархии, включая переходы вглубь дочерних состояний или из одного состояния в другое, не следуя строго установленным последовательностям переходов.