transitions

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

Синтаксис

transitions from_mode -> to_mode : predicate_condition end     

Описание

transitions начинает блок объявления переходов на графике режима. The 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

Чтобы реализовать сброс состояния, графики режима могут содержать 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 становится true, система переходит из режима 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