Документация Engee

Переходы Конечных автоматов

Переход по умолчанию (default transition) — это переход, который выполняется до активации какого-либо состояния или узла. Система автоматически добавляет переход по умолчанию для первого состояния и добавляет узел для самого перехода.

default transition 1

default transition 2

Переход (transition) — это линия со стрелкой, описывающая переход от одного состояния КА, в котором переход начинается, к другому. Для перехода можно определить условия и действия. Условия перехода определяют, когда произойдет смена состояния, а действия – что должно произойти в момент смены.

stateflow condition 1

Синтаксис переходов

На переходах настраивается темпоральная логика, условия и действия:

condition action stateflow

Условия [] определяют, когда должен произойти переход, а действия {} определяют, что должно произойти при переходе. Действия и условия подчиняются следующим правилам:

  • Условия задаются в квадратных скобках [].

  • Действия задаются в фигурных скобках {}.

  • Все поля опциональны и могут быть пропущены.

  • Условия и действия поддерживают математические операции языка Julia. Например:

    stateflow example synth 1

  • На переходах можно оставлять комментарии как и в любом коде на языке Julia:

    stateflow commentary 1

  • Для назначения различных значений переменным используйте точку с запятой ; в качестве разделителя:

    {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)) будет вычислено первым

Приоритеты переходов

Приоритет переходов — порядок, в котором они оцениваются и выполняются, если условия нескольких переходов одновременно истинны.

Рассмотрим пример из статьи:

im3

В примере у состояния Rest (покой) имеются два перехода, приоритеты которых задаются автоматически:

sf transition prior 1

Нажмите по переходу для настройки нужного приоритета и выберите Порядок исполнения:

stateflow example settings 1

В нашем случае переход до состояния Alarm (тревога) был поставлен первым и имеет первый приоритет, а до состояния Fault (неисправность) — вторым и второй приоритет соответственно.