transitions

Задайте переходы между режимами в графике режима

Синтаксис

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 предикат верен:

transitions
    m1 -> m2 : p1
end

Чтобы реализовать сброс состояния, графики режима могут содержать instantaneous modes и compound transitions. Составные переходы имеют следующий синтаксис:

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 (первый перечисленный переход).

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

transitions
    m1 -> m2 : p1
end

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

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

Введенный в R2017a