Переходы могут иметь различные типы действия, которые включают событие или триггеры сообщения, условия, действия условия и действия перехода. Типы действия следуют за обозначением метки с этим общим форматом:
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)
, которое оценивает к истине, когда состояние, заданное, когда, аргумент активен (см. Действие состояния Проверки при помощи в Операторе),
График не может использовать условие in
инициировать действия на основе действия состояний в других графиках.
Временные логические условия (см. Выполнение Диаграммы управления при помощи Временной Логики),
Выражение условия может вызвать графическую функцию, функцию таблицы истинности или функцию MATLAB®, которая возвращает числовое значение.
Например, [test_function(x, y) < 0]
является допустимым выражением условия.
Если выражение условия вызывает функцию с несколькими возвращаемыми значениями, только первое значение применяется. Другие возвращаемые значения не используются.
Выражение условия не должно вызывать функцию, которая заставляет график изменять состояние или изменять любые переменные.
Булевы выражения могут быть сгруппированы с помощью & для выражений с отношениями AND и |
для выражений с отношениями OR.
Операторы присваивания не являются допустимыми выражениями условия.
Унарные инкрементные и декрементные действия не являются допустимыми выражениями условия.
В синтаксисе метки перехода действия условия следуют за условием перехода и заключены в фигурные скобки ({}
). В примере в Типах Действия Перехода переход от состояния, чтобы утвердить C имеет действие условия func1()
, вызов функции.
Действия условия выполняются, как только условие оценено как верное, но прежде чем место назначения перехода было полно решимости быть допустимым. Если никакое условие не задано, подразумеваемое условие оценивает к истине, и действие условия выполняется.
Если условие охраняет событие, оно проверяется, только если триггер события активен. Если условие охраняет сообщение, оно проверяется, только если сообщение присутствует.
В синтаксисе метки перехода действиям перехода предшествуют с наклонной чертой вправо (/
) и заключают в фигурные скобки ({}
). В примере в Типах Действия Перехода переход от состояния, чтобы утвердить B имеет действие перехода data1 = 5
. В графиках C действия перехода не требуются, чтобы быть заключенными в фигурные скобки. В графиках, которые используют MATLAB в качестве языка действия, синтаксис автоматический исправленный, если фигурные скобки отсутствуют в действии перехода. Смотрите Автоматическое Исправление При использовании MATLAB как Язык Действия.
Действия перехода выполняются только после того, как полный путь к переходу взят. Они выполняются после того, как место назначения перехода было полно решимости быть допустимым, и условие, если задано, верно. Если переход состоит из нескольких сегментов, действие перехода выполняется только после того, как целый путь к переходу к конечному пункту назначения полон решимости быть допустимым.
Действия перехода поддерживаются только в графиках Stateflow® в моделях Simulink®.