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

Переходы

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

default transition 1

default transition 2

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

stateflow condition 1

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

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

condition action stateflow

Действия и условия подчиняются следующим правилам:

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

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

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

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

    stateflow example synth 1

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

    stateflow commentary 1

  • Для того чтобы разместить несколько операторов языка 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)) будет вычислено первым
  • Подробнее об операторах темпоральной логики читайте в статье;

  • Подробнее об индикаторах изменений читайте ниже.

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

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

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

im3

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

sf transition prior 1

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

stateflow example settings 1

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

Суперпереходы

Суперпереход (supertransition) — это механизм, который позволяет осуществлять переходы между состояниями на любом уровне иерархии, включая переходы вглубь дочерних состояний или из одного состояния в другое, не следуя строго установленным последовательностям переходов.

supertransition ka 1