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