Несмотря на то, что несколько параллелей (AND), который состояния в том же графике выполняют одновременно, график Stateflow®, должны определить, когда активировать каждого в процессе моделирования. Это упорядоченное расположение определяет, когда каждое параллельное состояние выполняет действия, которые берут его через все этапы выполнения.
В отличие от исключительного (OR) утверждают, параллельные состояния обычно не используют переходы. Вместо этого порядок выполнения зависит от:
Явное упорядоченное расположение
Задайте явным образом порядок выполнения параллельных состояний на идущей от штата к штату основе (см. Явное Упорядоченное расположение Параллельных состояний).
Неявное упорядоченное расположение
Замените явное упорядоченное расположение, позволив диаграмме Stateflow использовать внутренние правила, чтобы заказать параллельные состояния (см. Неявное Упорядоченное расположение Параллельных состояний).
Параллельные состояния являются присвоенными приоритетными номерами на основе порядка выполнения. Чем ниже номер, тем выше приоритет. Приоритетное количество каждого состояния появляется в правом верхнем углу.
Поскольку порядок выполнения является свойством диаграммы, все параллельные состояния в графике наследовали установку свойства. Вы не можете смешать явное и неявное упорядоченное расположение в той же диаграмме Stateflow. Однако можно смешать графики с различными режимами упорядоченного расположения в той же модели Simulink®.
В коде, который сгенерирован от диаграмм Stateflow, которые содержат параллельные состояния, каждое состояние выполняется на основе его порядка.
По умолчанию диаграмма Stateflow заказывает параллельные состояния явным образом на основе приоритетов выполнения, которые вы устанавливаете.
Когда вы открываете новую диаграмму Stateflow — или та, которая еще не содержит параллельных состояний — график автоматически присваивает приоритетные номера, чтобы быть параллельным состояниям в порядке, вы создаете их. Нумерация запускается со следующего доступного номера в родительском контейнере.
Когда вы включаете явное упорядоченное расположение в графике, который содержит неявно упорядоченные параллельные состояния, неявные приоритеты сохраняются для существующих параллельных состояний. Когда вы добавляете новые параллельные состояния, порядок выполнения присвоен таким же образом что касается новых диаграмм Stateflow — в порядке создания.
Можно сбросить присвоения порядка выполнения в любое время на идущей от штата к штату основе, как описано в Порядке выполнения Набора для Параллельных состояний Индивидуально. Когда вы изменяете порядок выполнения для параллельного состояния, диаграмма Stateflow автоматически перенумеровывает другие параллельные состояния, чтобы сохранить их относительный порядок выполнения. Для получения дополнительной информации смотрите Обслуживание Порядка для Параллельных состояний.
Чтобы использовать явное упорядоченное расположение для параллельных состояний, выполните эти задачи:
Включите Явное Упорядоченное расположение на Уровне Графика. Чтобы включить явное упорядоченное расположение для параллельных состояний, выполните эти шаги:
Щелкните правой кнопкой в верхнем уровне графика и выберите Properties из контекстного меню.
Диалоговое окно Свойств диаграммы появляется.
Установите флажок User-specified state/transition execution order.
Нажмите OK.
Если ваш график уже содержит параллельные состояния, которые были упорядочены неявно, существующие приоритеты сохраняются, пока вы явным образом не изменяете их. Когда вы добавляете новые параллельные состояния в явном режиме, ваш график автоматически присваивает приоритеты на основе порядка создания (см. Как Явные работы Упорядоченного расположения). Однако можно теперь явным образом изменить порядок выполнения на идущей от штата к штату основе, как описано в Порядке выполнения Набора для Параллельных состояний Индивидуально.
Установите Порядок выполнения для Параллельных состояний Индивидуально. В явном режиме упорядоченного расположения можно изменить порядок выполнения отдельных параллельных состояний. Щелкните правой кнопкой по параллельному состоянию интереса и выберите новый приоритет из меню Execution Order.
В неявном режиме упорядоченного расположения диаграмма Stateflow заказывает параллельные состояния неявно на основе местоположения. Приоритет идет сверху донизу и затем слева направо, на основе этих правил:
Чем выше вертикальное положение параллельного состояния в графике, тем выше приоритет выполнения для того состояния.
Среди параллельных состояний с тем же вертикальным положением крайнее левое состояние получает самый высокий приоритет.
Следующий пример показывает, как эти правила применяются к параллельным состояниям верхнего уровня и параллельны подсостояниям.
Примечание
Неявное упорядоченное расположение создает зависимость между размещением проекта и приоритетом выполнения. Когда вы перестраиваете параллельные состояния в своем графике, вы можете случайно заявка на изменение выполнения и влиять на результаты симуляции. Для большего количества управления вашими проектами используйте явный режим упорядоченного расположения по умолчанию, чтобы установить приоритеты выполнения.
Чтобы использовать неявное упорядоченное расположение для параллельных состояний, выполните эти шаги:
Щелкните правой кнопкой в верхнем уровне графика и выберите Properties из контекстного меню.
В диалоговом окне Свойств диаграммы снимите флажок User-specified state/transition execution order.
Нажмите OK.
Используете ли вы явное или неявное упорядоченное расположение, график пытается согласовать приоритеты выполнения, когда вы удаляете, перенумеровываете или добавляете параллельные состояния. В этих случаях график повторно присваивает приоритет параллельным состояниям к:
Заполните разрывы в последовательности так, чтобы упорядоченное расположение было непрерывно
Убедитесь, что никакие два состояния не имеют тот же приоритет
Сохраните намеченный относительный приоритет выполнения
Для явного упорядоченного расположения график сохраняет заданные пользователями приоритеты. Рассмотрите этот пример явного упорядоченного расположения:
Из-за явного упорядоченного расположения приоритет каждого состояния и подсостояния совпадает с порядком создания в графике. График повторно присваивает приоритет параллельным состояниям и подсостояниям, когда вы выполняете эти действия:
Измените приоритет b
состояния верхнего уровня к 3.
Добавьте g
состояния верхнего уровня.
Удалите e
подсостояния.
График сохраняет приоритетный набор явным образом для b
состояния верхнего уровня, но перенумеровывает все другие параллельные состояния, чтобы сохранить их предшествующий относительный порядок.
Для неявного упорядоченного расположения график сохраняет намеченный относительный приоритет на основе геометрии. Рассмотрите этот пример неявного упорядоченного расположения:
Если вы удаляете верхний уровень, утверждают b
и e
подсостояния, график автоматически повторно присваивает приоритет остающимся параллельным состояниям и подутверждает, чтобы сохранить неявный геометрический порядок:
Существуют ситуации, в которых необходимо восстановить параллельное состояние после того, как вы удаляете его из диаграммы Stateflow. В неявном режиме упорядоченного расположения график повторно присваивает приоритет выполнения на основе того, где вы восстанавливаете состояние. Если вы возвращаете состояние в его исходное местоположение в графике, вы восстанавливаете его исходный приоритет.
Однако в явном режиме упорядоченного расположения, график не может всегда восстанавливать исходный приоритет выполнения к восстановленному состоянию. Это зависит от того, как вы восстанавливаете состояние.
Если вы удаляете состояние... | И восстановите состояние... | Каков приоритет? |
---|---|---|
При удалении, сокращая, перетаскивая вне контуров родительского состояния или перетаскивая, таким образом, его контуры перекрывают родительское состояние | Используя команду отмены | Исходный приоритет восстанавливается. |
При перетаскивании вне контуров родительского состояния или таким образом, его контуры перекрывают родительское состояние и отпускание кнопки мыши | Перетаскивание его назад в родительское состояние | Исходный приоритет потерян. Диаграмма Stateflow обрабатывает восстановленное состояние как созданное последнее и присваивает его самый низкий приоритет выполнения. |
При перетаскивании вне контуров родительского состояния или таким образом, его контуры перекрывают родительское состояние, не отпуская кнопку мыши | Перетаскивание его назад в родительское состояние | Исходный приоритет восстанавливается. |
При перетаскивании, таким образом, его контуры перекрывают одно или несколько одноуровневых состояний | Перетаскивание его к местоположению без перекрывающихся контуров в том же родительском состоянии | Исходный приоритет восстанавливается. |
Сокращение | Вставка | Исходный приоритет потерян. Диаграмма Stateflow обрабатывает восстановленное состояние как созданное последнее и присваивает его самый низкий приоритет выполнения. |
Если вы переключаетесь на неявный режим после явного упорядоченного расположения параллельных состояний, диаграмма Stateflow сбрасывает порядок выполнения, чтобы следовать неявным правилам геометрии. Однако, если вы переключаетесь от неявного до явного режима, график не восстанавливает исходный явный порядок выполнения.
Когда вы группируете параллельные состояния в поле, состояния сохраняют свой относительный порядок выполнения. Кроме того, диаграмма Stateflow присваивает поле ее собственный приоритет на основе явных или неявных правил упорядоченного расположения, которые применяются. Этот приоритет определяет, когда график активирует параллельные состояния в поле.
Когда вы преобразуете состояние с параллельным разложением в субдиаграмму, ее подсостояния сохраняют свой относительный порядок выполнения на основе преобладающих явных или неявных правил.