transition является линией с наконечником стрелки, который соединяет один графический объект с другим. В большинстве случаев переход представляет проход системы от одного режима (состояние) другому. Переход обычно соединяет источник и целевой объект. Объект source состоит в том, где переход начинается, и объект destination состоит в том, где переход заканчивается. Следующий график показывает переход от исходного состояния, B
, к целевому состоянию, A
.
Соединения делят переход на сегменты перехода. В этом случае полный переход состоит из сегментов, взятых от источника до целевого состояния. Каждый сегмент оценен в процессе определения валидности полного перехода.
Следующий пример имеет два сегментированных перехода: один от On
состояния утверждать
Off
, и другой от On
состояния к себе:
Переход по умолчанию является специальным типом перехода, который не имеет никакого исходного объекта. Смотрите Переходы По умолчанию для деталей.
Переходы не могут содержать другие объекты способ, которым могут состояния. Однако переходы содержатся в состояниях. Иерархия для перехода описана в терминах его родительского элемента, источника и целевых состояний. Родительский элемент является самым низким уровнем, который содержит источник и место назначения перехода. Рассмотрите родительские элементы для переходов в следующем примере:
Следующая таблица разрешает происхождение каждого перехода в предыдущем примере. /
символ представляет график. Каждый уровень в иерархии состояний разделяется периодом (.
Символ.
Метка перехода | Родительский элемент перехода | Источник перехода | Место назначения перехода |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
transition label может состоять из события или сообщения, условия, действия условия и действия перехода. Каждая часть метки является дополнительной. ?
символ является меткой перехода по умолчанию. Метки перехода имеют этот полный формат:
event_or_message_trigger[condition]{condition_action}/{transition_action}
Этот пример иллюстрирует части метки перехода.
Переход | Триггер события | Условие | Действие условия | Действие перехода |
---|---|---|---|---|
Состояние, чтобы утвердить C | event1 | temp > 50 | func1() | 'none' |
Состояние, чтобы утвердить B | event2 | 'none' | 'none' | data1 = 5 |
В синтаксисе метки перехода событие или триггеры сообщения появляются первыми как имя события или сообщения. У них нет специального символа различения, чтобы разделить их от других действий в метке перехода. В примере в Переходах оба перехода от состояния A имеют триггеры события. Переход от состояния, чтобы утвердить B имеет триггер события event2
и переход от состояния, чтобы утвердить C имеет триггер события event1
.
Триггеры события задают событие, которое заставляет переход быть взятым, обеспеченным условие, если задано, верно. Определение события является дополнительным. Обменивайтесь сообщениями триггеры задают переход, который будет взят, если сообщение присутствует в очереди сообщений. Отсутствие события или сообщения указывает, что переход взят после вхождения любого события. Несколько событий или сообщений заданы с помощью логического оператора OR (|
).
В синтаксисе метки перехода условиями являются Булевы выражения, заключенные в квадратные скобки ([]
). В примере в Переходах переход от состояния, чтобы утвердить C имеет условие temp > 50
.
Условием является Булево выражение, чтобы указать, что переход происходит, учитывая, что заданное выражение верно. Следуйте этим инструкциям для определения и использования условий:
Выражением условия должно быть Булево выражение, которое оценивает к true (1) или false
(0).
Выражение условия может состоять из любого следующего:
Булевы операторы, которые делают сравнения между значениями данных и числовыми значениями
Функция, которая возвращает булево значение
in(state_name)
условие, которое оценивает к истине, когда состояние, заданное, когда, аргумент активен. Для получения дополнительной информации смотрите Действие состояния Проверки при помощи в Операторе.
Временные логические условия (см. Управление выполнением диаграммы при помощи Временной Логики),
Выражение условия может вызвать графическую функцию, функцию таблицы истинности или MATLAB® функция, которая возвращает числовое значение.
Например, [test_function(x, y) < 0]
допустимое выражение условия.
Выражение условия не должно вызывать функцию, которая заставляет график изменять состояние или изменять любые переменные.
Булевы выражения могут быть сгруппированы с помощью & для выражений с отношениями AND и |
для выражений с отношениями OR.
Операторы присваивания не являются допустимыми выражениями условия.
Унарные инкрементные и декрементные действия не являются допустимыми выражениями условия.
В синтаксисе метки перехода действия условия следуют за условием перехода и заключены в фигурные скобки ({}
). В примере в Переходах переход от состояния, чтобы утвердить C имеет действие условия func1()
, вызов функции.
Действия условия выполняются, как только условие оценено как верное, но прежде чем место назначения перехода было полно решимости быть допустимым. Если никакое условие не задано, подразумеваемое условие оценивает к истине, и действие условия выполняется.
В синтаксисе метки перехода действиям перехода предшествуют с наклонной чертой вправо (/
) и заключены в фигурные скобки ({}
). В примере в Переходах переход от состояния, чтобы утвердить B имеет действие перехода data1 = 5
. В графиках C действия перехода не требуются, чтобы быть заключенными в фигурные скобки. В графиках, которые используют MATLAB в качестве языка действия, синтаксис автоматический откорректированный, если фигурные скобки отсутствуют в действии перехода. Смотрите Автоматическую Коррекцию При использовании MATLAB как Язык Действия.
Действия перехода выполняются только после того, как полный путь к переходу взят. Они выполняются после того, как место назначения перехода было полно решимости быть допустимым, и условие, если задано, верно. Если переход состоит из нескольких сегментов, действие перехода выполняется только после того, как целый путь к переходу к конечному пункту назначения полон решимости быть допустимым.
Действия перехода не поддерживаются в автономном Stateflow® графики в MATLAB.
Обычно, переход допустим, когда исходное состояние перехода активно, и метка перехода допустима. Переходы по умолчанию отличаются, потому что нет никакого исходного состояния. Валидность перехода по умолчанию к подсостоянию оценена, когда существует переход к его сверхсостоянию, принимая, что сверхсостояние активно. Этот критерий маркировки применяется и к переходам по умолчанию и к переходам общего случая. В следующей таблице перечислены возможные комбинации допустимых меток перехода.
Метка перехода | Допустимо если... |
---|---|
Событие только | То событие имеет место |
Событие и условие | То событие имеет место, и условие верно |
Сообщение только | То сообщение происходит |
Сообщение и условие | То сообщение происходит, и условие верно |
Условие только | Любое событие имеет место, и условие верно |
Действие только | Любое событие имеет место |
Не заданный | Любое событие имеет место |
Этот пример показывает простые переходы к и от исключительного (OR) состояния.
Следующий переход... | Допустимо когда... |
---|---|
B к A | B состояния активно и событие E1 происходит. |
A1 к A2 | A1 состояния активно и событие E2 происходит. |
Смотрите Переход Между Исключительными состояниями для получения дополнительной информации о семантике этого обозначения.
Следующий график показывает переходы к и от соединительных соединений.
График использует временную логику, чтобы определить когда вход u
равняется 1.
Если вход равняется 1... | Переход происходит от... |
---|---|
Прежде t = 2 | Start к Fast |
Между t = 2 и t = 5 | Start к Medium |
После t = 5 | Start к Slow |
Для получения дополнительной информации о временной логике, смотрите Управление выполнением диаграммы при помощи Временной Логики. Для получения дополнительной информации о семантике этого обозначения смотрите Переход от Общего источника до Множественных адресов.
Этот пример показывает переходы к и от исключительного (OR) сверхсостояние и использование перехода по умолчанию.
График имеет два состояния на высшем уровне в иерархии, Power_off
и Power_on
. По умолчанию, Power_off
активно. Событие Switch
переключается система между Power_off
и Power_on
состояния. Power_on
имеет три подсостояния: First
второй
, и Third
. По умолчанию, когда Power_on
становится активным, First
также становится активным. Когда Shift
равняется 1, системные переходы от First
к Second
второй
к Third
, Third
к First
, для каждого вхождения события Switch
, и затем повторения шаблона.
Для получения дополнительной информации о семантике этого обозначения смотрите Управление выполнением диаграммы при помощи Переходов По умолчанию.
Следующий пример показывает переходы к и от исключительного (OR) подсостояния.
Для получения дополнительной информации о том, как этот график работает, см. Сигналы Debounce с Обнаружением Отказа. Для получения информации о семантике этого обозначения смотрите Переход от Подсостояния до Подсостояния с Событиями.