Оценка переходов

Stateflow® использует переходы в графиках, чтобы переместиться из одного исключительного (OR) состояния в другое исключительное (OR) состояние. Для entry и execution рабочие процессы выполнения графика, Stateflow оценивает переходы, чтобы определить, действительны ли они. Допустимый переход является переходом, метки условий которого true и путь которого заканчивается в состоянии. Если переход действителен, Stateflow выходит из исходного состояния и входит в целевое состояние. Чтобы узнать о том, когда оценка происходит во время execution и entry рабочие процессы, см. Выполнение диаграммы Stateflow и Ввод графика или состояния.

Рабочий процесс для оценки переходов

Порядок оценки перехода

Когда несколько переходов происходят из одного источника, такого как состояние или соединение, Stateflow использует порядок оценки, чтобы определить, когда тестировать каждый переход. В зависимости от того, какой язык действий использует график, можно создать порядок ваших переходов явным или неявным образом. Независимо от того, упорядочены ли явно или неявно, переходы показывают число около источника перехода, который обозначает порядок перехода.

Примечание

Используйте явное упорядоченное расположение, чтобы избежать изменения порядка во время редактирования графика.

Явное упорядоченное расположение

Когда вы открываете новую диаграмму Stateflow, все исходные переходы из источника автоматически нумеруются в том порядке, в котором вы их создаете. Порядок начинается с 1 и переходит к следующему доступному номеру источника.

Чтобы изменить порядок выполнения перехода, щелкните правой кнопкой мыши переход, поместите курсор на Execution Order, и выберите порядок, в котором необходимо выполнить переход. При изменении номера перехода диаграмма Stateflow автоматически перенумерует другие исходные переходы для источника, сохраняя их относительный порядок.

Неявное упорядоченное расположение

Для C графиков в неявном упорядоченном расположении режиме, диаграмма Stateflow оценивает группу исходящих переходов от одного источника на основе:

  • Иерархия.

    График оценивает группу исходящих переходов в порядке на основе иерархического уровня родительского элемента каждого перехода.

  • Метка.

    График оценивает группу исходящих переходов с равным иерархическим приоритетом на основе меток в следующем порядке приоритета:

    1. Метки с событиями и условиями

    2. Метки с событиями

    3. Метки с условиями

    4. Нет метки

  • Положение угловой поверхности источника перехода.

    График оценивает группу исходящих переходов с равным иерархическим приоритетом и приоритетом метки на основе углового положения на поверхности исходного объекта. Переход с наименьшим положением синхроимпульса имеет наивысший приоритет. Для примера переход с 2-часовой исходной позицией имеет более высокий приоритет, чем переход с 4-часовой исходной позицией. Переход с исходной позицией 12 o 'clock имеет самый низкий приоритет.

Пример исходящего перехода

В этом примере диаграмма Stateflow инициализируется и entry действия выполняются для StateA. Происходит новый временной шаг, и график просыпается. Следуя рабочему процессу для выполнения диаграммы Stateflow, Stateflow находит несколько исходящих переходов от StateA. На данном временном шаге x = 1, y = 1, и z = 1.

Оценка исходящих переходов

Следуя рабочему процессу для оценки переходов, шаги для оценки переходов этого графика выполняются в следующем порядке:

  1. Переход 1 от StateA отмечен для оценки.

  2. Переход 1 от StateA имеет условие.

  3. Условие верно.

  4. Пункт назначения перехода 1 от StateA не является состоянием.

  5. Соединение действительно имеет исходящие переходы.

  6. Переход 1 от соединения отмечен для оценки.

  7. Переход 1 от соединения имеет условие.

  8. Условие ложное.

  9. Переход 2 от соединения отмечен для оценки.

  10. Переход 2 от соединения не имеет условия.

  11. Местом назначения перехода 2 от соединения является состояние (StateD).

  12. StateD отмечен для entry, и StateA отмечен для exit.

Чтобы завершить временной шаг, следуйте рабочему процессу для выхода из состояния для StateA и рабочий процесс ввода графика или состояния для StateE.

Пример исходящего перехода с обратным отслеживанием

Когда все исходящие переходы от источника являются недопустимыми или не заканчиваются оконечным соединением, но существуют ранее недооцененные переходы, Stateflow возвращается к предыдущему состоянию или соединению, чтобы вычислить все возможные пути.

В этом примере диаграмма Stateflow инициализируется и entry действия выполняются для StateA. Происходит новый временной шаг, и график просыпается. Следуя рабочему процессу для выполнения диаграммы Stateflow, Stateflow находит несколько исходящих переходов от StateA. На данном временном шаге x = 1, y = 1, и z = 1.

Оценка исходящих переходов с обратным отслеживанием

Следуя рабочему процессу для оценки переходов, шаги для оценки переходов этого графика выполняются в следующем порядке:

  1. Переход 1 от StateA отмечен для оценки.

  2. Переход 1 от StateA имеет условие.

  3. Условие верно.

  4. Пункт назначения перехода 1 от StateA не является состоянием.

  5. Соединение действительно имеет исходящие переходы.

  6. Переход 1 от соединения отмечен для оценки.

  7. Переход 1 от соединения имеет условие.

  8. Условие ложное.

  9. Переход 2 от соединения отмечен для оценки.

  10. Переход 2 от соединения имеет условие.

  11. Условие ложное.

  12. Переход 2 от StateA отмечен для оценки.

  13. Переход 2 от StateA не имеет условия.

  14. Пункт назначения перехода 2 от StateA является состоянием (StateE).

  15. StateE отмечен для entry, и StateA отмечен для exit.

Чтобы завершить временной шаг, следуйте рабочему процессу для выхода из состояния для StateA и рабочий процесс ввода графика или состояния для StateE.

Предотвратите обратное отслеживание

В этом примере оконечное соединение препятствует обратному отслеживанию. Диаграмма Stateflow инициализируется и entry действия выполняются для StateA. Происходит новый временной шаг, и график просыпается. Следуя рабочему процессу для выполнения диаграммы Stateflow, Stateflow находит несколько исходящих переходов от StateA. На данном временном шаге x = 1, y = 1, и z = 1.

Следуя рабочему процессу для оценки переходов, шаги для оценки переходов этого графика выполняются в следующем порядке:

  1. Переход 1 от StateA отмечен для оценки.

  2. Переход 1 от StateA имеет условие.

  3. Условие верно.

  4. Пункт назначения перехода 1 от StateA не является состоянием.

  5. Соединение действительно имеет исходящие переходы.

  6. Переход 1 от соединения отмечен для оценки.

  7. Переход 1 от соединения имеет условие.

  8. Условие ложное.

  9. Переход 2 от соединения отмечен для оценки.

  10. Переход 2 от соединения имеет условие.

  11. Условие ложное.

  12. Переход 3 от соединения отмечен для оценки.

  13. Переход 3 от соединения не имеет условия.

  14. Адресат не является состоянием и не имеет исходящих переходов.

  15. Вернитесь к разделу Рабочий процесс для выполнения диаграммы Stateflow.

Чтобы завершить временной шаг, следуйте Рабочему процессу для выполнения диаграммы Stateflow для StateA, начиная с того места, где вы остановились.

Условие и переходные действия

Действия с условием

В синтаксисе метки перехода действия условия следуют условию перехода и заключаются в фигурные скобки ({}). Действия с условием выполняются, когда условие оценивается как true, но до того, как путь перехода был определен как действительный.

Переходные действия

В синтаксисе метки перехода переходным действиям предшествует прямая косая черта (/) и заключены в фигурные скобки ({}). Переходные действия выполняются только после определения допустимого пути перехода.

В этом примере существуют как действия условия, так и действия перехода. Диаграмма Stateflow инициализируется и entry действия выполняются для StateA. Происходит новый временной шаг, и график просыпается. Существует несколько исходящих переходов от StateA. На данном временном шаге x = 1, y = 1, и z = 1.

Оценка исходящих переходов с помощью действий условия и перехода

Следуя рабочему процессу для оценки переходов, шаги для оценки переходов этого графика выполняются в следующем порядке:

  1. Переход 1 от StateA отмечен для оценки.

  2. Переход 1 от StateA имеет условие ([y >= 1]).

  3. Условие верно.

  4. Действий с условием нет.

  5. Пункт назначения перехода 1 от StateA не является состоянием.

  6. Соединение действительно имеет исходящие переходы.

  7. Переход 1 от соединения отмечен для оценки.

  8. Переход 1 от соединения имеет условие ([x > 2]).

  9. Условие ложное.

  10. Переход 2 от соединения отмечен для оценки.

  11. Переход 2 от соединения имеет условие ([x >= 1]).

  12. Условие верно.

  13. Существует действие условия ({y = 0;}). Теперь y = 0.

  14. Соединение действительно имеет исходящие переходы.

  15. Переход от соединения отмечен для оценки.

  16. Переход 1 от соединения имеет условие ([z >= 5]).

  17. Условие ложное.

  18. Переход 2 от StateA отмечен для оценки.

  19. Переход 2 от StateA не имеет условия.

  20. Пункт назначения перехода 2 от StateA является состоянием (StateD).

  21. StateD отмечен для entry, и StateA отмечен для exit. Выполните действие перехода для этого допустимого пути (/{z = 5}). Теперь z = 5.

Чтобы завершить временной шаг, следуйте рабочему процессу для выхода из состояния для StateA и рабочий процесс ввода графика или состояния для StateE.

Похожие темы