Stateflow® использует переходы в графиках, чтобы переместиться из одного исключительного (OR) состояния в другое исключительное (OR) состояние. Для entry
и execution
рабочие процессы выполнения графика, Stateflow оценивает переходы, чтобы определить, действительны ли они. Допустимый переход является переходом, метки условий которого true и путь которого заканчивается в состоянии. Если переход действителен, Stateflow выходит из исходного состояния и входит в целевое состояние. Чтобы узнать о том, когда оценка происходит во время execution
и entry
рабочие процессы, см. Выполнение диаграммы Stateflow и Ввод графика или состояния.
Когда несколько переходов происходят из одного источника, такого как состояние или соединение, Stateflow использует порядок оценки, чтобы определить, когда тестировать каждый переход. В зависимости от того, какой язык действий использует график, можно создать порядок ваших переходов явным или неявным образом. Независимо от того, упорядочены ли явно или неявно, переходы показывают число около источника перехода, который обозначает порядок перехода.
Примечание
Используйте явное упорядоченное расположение, чтобы избежать изменения порядка во время редактирования графика.
Когда вы открываете новую диаграмму Stateflow, все исходные переходы из источника автоматически нумеруются в том порядке, в котором вы их создаете. Порядок начинается с 1
и переходит к следующему доступному номеру источника.
Чтобы изменить порядок выполнения перехода, щелкните правой кнопкой мыши переход, поместите курсор на Execution Order
, и выберите порядок, в котором необходимо выполнить переход. При изменении номера перехода диаграмма Stateflow автоматически перенумерует другие исходные переходы для источника, сохраняя их относительный порядок.
Для C графиков в неявном упорядоченном расположении режиме, диаграмма Stateflow оценивает группу исходящих переходов от одного источника на основе:
Иерархия.
График оценивает группу исходящих переходов в порядке на основе иерархического уровня родительского элемента каждого перехода.
Метка.
График оценивает группу исходящих переходов с равным иерархическим приоритетом на основе меток в следующем порядке приоритета:
Метки с событиями и условиями
Метки с событиями
Метки с условиями
Нет метки
Положение угловой поверхности источника перехода.
График оценивает группу исходящих переходов с равным иерархическим приоритетом и приоритетом метки на основе углового положения на поверхности исходного объекта. Переход с наименьшим положением синхроимпульса имеет наивысший приоритет. Для примера переход с 2-часовой исходной позицией имеет более высокий приоритет, чем переход с 4-часовой исходной позицией. Переход с исходной позицией 12 o 'clock имеет самый низкий приоритет.
В этом примере диаграмма Stateflow инициализируется и entry
действия выполняются для StateA
. Происходит новый временной шаг, и график просыпается. Следуя рабочему процессу для выполнения диаграммы Stateflow, Stateflow находит несколько исходящих переходов от StateA
. На данном временном шаге x = 1
, y = 1
, и z = 1
.
Следуя рабочему процессу для оценки переходов, шаги для оценки переходов этого графика выполняются в следующем порядке:
Переход 1 от StateA
отмечен для оценки.
Переход 1 от StateA
имеет условие.
Условие верно.
Пункт назначения перехода 1 от StateA
не является состоянием.
Соединение действительно имеет исходящие переходы.
Переход 1 от соединения отмечен для оценки.
Переход 1 от соединения имеет условие.
Условие ложное.
Переход 2 от соединения отмечен для оценки.
Переход 2 от соединения не имеет условия.
Местом назначения перехода 2 от соединения является состояние (StateD
).
StateD
отмечен для entry
, и StateA
отмечен для exit
.
Чтобы завершить временной шаг, следуйте рабочему процессу для выхода из состояния для StateA
и рабочий процесс ввода графика или состояния для StateE
.
Когда все исходящие переходы от источника являются недопустимыми или не заканчиваются оконечным соединением, но существуют ранее недооцененные переходы, Stateflow возвращается к предыдущему состоянию или соединению, чтобы вычислить все возможные пути.
В этом примере диаграмма Stateflow инициализируется и entry
действия выполняются для StateA
. Происходит новый временной шаг, и график просыпается. Следуя рабочему процессу для выполнения диаграммы Stateflow, Stateflow находит несколько исходящих переходов от StateA
. На данном временном шаге x = 1
, y = 1
, и z = 1
.
Следуя рабочему процессу для оценки переходов, шаги для оценки переходов этого графика выполняются в следующем порядке:
Переход 1 от StateA
отмечен для оценки.
Переход 1 от StateA
имеет условие.
Условие верно.
Пункт назначения перехода 1 от StateA
не является состоянием.
Соединение действительно имеет исходящие переходы.
Переход 1 от соединения отмечен для оценки.
Переход 1 от соединения имеет условие.
Условие ложное.
Переход 2 от соединения отмечен для оценки.
Переход 2 от соединения имеет условие.
Условие ложное.
Переход 2 от StateA
отмечен для оценки.
Переход 2 от StateA
не имеет условия.
Пункт назначения перехода 2 от StateA
является состоянием (StateE
).
StateE
отмечен для entry
, и StateA
отмечен для exit
.
Чтобы завершить временной шаг, следуйте рабочему процессу для выхода из состояния для StateA
и рабочий процесс ввода графика или состояния для StateE
.
В этом примере оконечное соединение препятствует обратному отслеживанию. Диаграмма Stateflow инициализируется и entry
действия выполняются для StateA
. Происходит новый временной шаг, и график просыпается. Следуя рабочему процессу для выполнения диаграммы Stateflow, Stateflow находит несколько исходящих переходов от StateA
. На данном временном шаге x = 1
, y = 1
, и z = 1
.
Следуя рабочему процессу для оценки переходов, шаги для оценки переходов этого графика выполняются в следующем порядке:
Переход 1 от StateA
отмечен для оценки.
Переход 1 от StateA
имеет условие.
Условие верно.
Пункт назначения перехода 1 от StateA
не является состоянием.
Соединение действительно имеет исходящие переходы.
Переход 1 от соединения отмечен для оценки.
Переход 1 от соединения имеет условие.
Условие ложное.
Переход 2 от соединения отмечен для оценки.
Переход 2 от соединения имеет условие.
Условие ложное.
Переход 3 от соединения отмечен для оценки.
Переход 3 от соединения не имеет условия.
Адресат не является состоянием и не имеет исходящих переходов.
Вернитесь к разделу Рабочий процесс для выполнения диаграммы Stateflow.
Чтобы завершить временной шаг, следуйте Рабочему процессу для выполнения диаграммы Stateflow для StateA
, начиная с того места, где вы остановились.
В синтаксисе метки перехода действия условия следуют условию перехода и заключаются в фигурные скобки ({}
). Действия с условием выполняются, когда условие оценивается как true, но до того, как путь перехода был определен как действительный.
В синтаксисе метки перехода переходным действиям предшествует прямая косая черта (/
) и заключены в фигурные скобки ({}
). Переходные действия выполняются только после определения допустимого пути перехода.
В этом примере существуют как действия условия, так и действия перехода. Диаграмма Stateflow инициализируется и entry
действия выполняются для StateA
. Происходит новый временной шаг, и график просыпается. Существует несколько исходящих переходов от StateA
. На данном временном шаге x = 1
, y = 1
, и z = 1
.
Следуя рабочему процессу для оценки переходов, шаги для оценки переходов этого графика выполняются в следующем порядке:
Переход 1 от StateA
отмечен для оценки.
Переход 1 от StateA
имеет условие ([y >= 1]
).
Условие верно.
Действий с условием нет.
Пункт назначения перехода 1 от StateA
не является состоянием.
Соединение действительно имеет исходящие переходы.
Переход 1 от соединения отмечен для оценки.
Переход 1 от соединения имеет условие ([x > 2]
).
Условие ложное.
Переход 2 от соединения отмечен для оценки.
Переход 2 от соединения имеет условие ([x >= 1]
).
Условие верно.
Существует действие условия ({y = 0;}
). Теперь y = 0
.
Соединение действительно имеет исходящие переходы.
Переход от соединения отмечен для оценки.
Переход 1 от соединения имеет условие ([z >= 5]
).
Условие ложное.
Переход 2 от StateA
отмечен для оценки.
Переход 2 от StateA
не имеет условия.
Пункт назначения перехода 2 от StateA
является состоянием (StateD
).
StateD
отмечен для entry
, и StateA
отмечен для exit
. Выполните действие перехода для этого допустимого пути (/{z = 5}
). Теперь z = 5
.
Чтобы завершить временной шаг, следуйте рабочему процессу для выхода из состояния для StateA
и рабочий процесс ввода графика или состояния для StateE
.