exponenta event banner

переходы

Определение переходов между режимами в диаграмме режимов

Синтаксис

transitions from_mode -> to_mode : predicate_condition end     

Описание

transitions начинает блок объявления переходов в диаграмме режимов. transitions блок, завершенный end ключевое слово, может содержать одну или несколько конструкций перехода.

Как правило, каждая конструкция перехода имеет следующий синтаксис:

from_mode -> to_mode : predicate_condition

где:

  • from_mode является активным режимом перед переходом.

  • to_mode является активным режимом после перехода.

  • predicate_condition является выражением, которое должно быть верным для того, чтобы переход произошел.

Например, если диаграмма режима объявляет два режима, m1 и m2, следующий синтаксис указывает, что система переходит из режима m1 к способу m2 когда p1 предикат имеет значение true:

transitions
    m1 -> m2 : p1
end

Для выполнения сброса состояния диаграммы режимов могут содержать мгновенные режимы и составные переходы. Составные переходы имеют следующий синтаксис:

from_mode -> instantaneous_mode -> to_mode : predicate_condition

где:

  • from_mode является активным режимом перед переходом.

  • instantaneous_mode является активным режимом для одной итерации события во время перехода. Для каждого перехода допускается только один мгновенный режим, поэтому составной переход не может содержать более трех режимов.

  • to_mode является активным режимом после перехода. Для составного перехода to_mode может быть таким же, как from_mode.

  • predicate_condition является выражением, которое должно быть верным для того, чтобы переход произошел.

Например, в этом составном переходе, когда предикат t становится истинным, система переходит из режима A к способу B, выполняет одну итерацию события, а затем немедленно переходит в режим C.

A -> B -> C : t

Правила приоритета перехода и выполнения

Если несколько предикатов становятся истинными одновременно, приоритет перехода определяется порядком их перечисления. Например, диаграмма режимов объявляет три режима: m1, m2, и m3, и определяет следующие переходы:

transitions
    m1 -> m2 : p1
    m1 -> m3 : p2
end

Если предикаты p1 и p2 стать истинным одновременно, система переходит из режима m1 к способу m2 (первый переход указан).

Во время инициализации решатель сначала устанавливает начальный режим, а затем проверяет переходы. Если предикат перехода имеет значение true во время инициализации, система может запуститься в режиме, отличном от указанного первым (или указанного initial конструкция). Например, рассмотрим диаграмму режимов, которая объявляет два режима, m1 и m2, и определяет следующий переход:

transitions
    m1 -> m2 : p1
end

Если предикат p1 true во время инициализации, система немедленно переходит из режима m1 (первый перечисленный режим) в режим m2, и моделирование запускается в режиме m2.

Аналогично, если предикат перехода остается верным после завершения перехода, система может войти в бесконечный цикл и в конечном итоге сгенерировать ошибку. Эта ошибка моделирования более распространена при сложных переходах, где после завершения перехода система часто оказывается в том же режиме, где она находилась до входа в переход. Чтобы избежать этой ситуации, попробуйте смоделировать составные переходы таким образом, чтобы мгновенный режим аннулировал предикат. Дополнительные сведения см. в разделе Пример сброса состояния.

Представлен в R2017a