Порядок выполнения для параллельных состояний

Упорядоченное расположение для параллельных состояний

Несмотря на то, что несколько параллелей (AND), который состояния в том же графике выполняют одновременно, график Stateflow®, должны определить, когда активировать каждого в процессе моделирования. Это упорядоченное расположение определяет, когда каждое параллельное состояние выполняет действия, которые берут его через все этапы выполнения.

В отличие от исключительного (OR) утверждают, параллельные состояния обычно не используют переходы. Вместо этого порядок выполнения зависит от:

Параллельные состояния являются присвоенными приоритетными номерами на основе порядка выполнения. Чем ниже номер, тем выше приоритет. Приоритетное количество каждого состояния появляется в правом верхнем углу.

Поскольку порядок выполнения является свойством диаграммы, все параллельные состояния в графике наследовали установку свойства. Вы не можете смешать явное и неявное упорядоченное расположение в той же диаграмме Stateflow. Однако можно смешать графики с различными режимами упорядоченного расположения в той же модели Simulink®.

В коде, который сгенерирован от диаграмм Stateflow, которые содержат параллельные состояния, каждое состояние выполняется на основе его порядка.

Явное упорядоченное расположение параллельных состояний

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

Как явные работы упорядоченного расположения

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

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

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

Закажите параллельные состояния явным образом

Чтобы использовать явное упорядоченное расположение в параллельных состояниях, выполните эти задачи:

Включите Явное Упорядоченное расположение на Уровне Графика.  Чтобы включить явное упорядоченное расположение для параллельных состояний, выполните эти шаги:

  1. Щелкните правой кнопкой в верхнем уровне графика и выберите Properties из контекстного меню.

    Диалоговое окно Свойств диаграммы появляется.

  2. Установите флажок User-specified state/transition execution order.

  3. Нажмите OK.

    Если ваш график уже содержит параллельные состояния, которые были упорядочены неявно, существующие приоритеты сохраняются, пока вы явным образом не изменяете их. Когда вы добавляете новые параллельные состояния в явном режиме, ваш график автоматически присваивает приоритеты на основе порядка создания (см. Как Явные работы Упорядоченного расположения). Однако можно теперь явным образом изменить порядок выполнения на идущей от штата к штату основе, как описано в Порядке выполнения Набора для Параллельных состояний Индивидуально.

Установите Порядок выполнения для Параллельных состояний Индивидуально.  В явном режиме упорядоченного расположения можно изменить порядок выполнения отдельных параллельных состояний. Щелкните правой кнопкой по параллельному состоянию интереса и выберите новый приоритет из меню Execution Order.

Неявное упорядоченное расположение параллельных состояний

Правила неявного упорядоченного расположения для параллельных состояний

В неявном режиме упорядоченного расположения диаграмма Stateflow заказывает параллельные состояния неявно на основе местоположения. Приоритет идет сверху донизу и затем слева направо, на основе этих правил:

  • Чем выше вертикальное положение параллельного состояния в графике, тем выше приоритет выполнения для того состояния.

  • Среди параллельных состояний с тем же вертикальным положением крайнее левое состояние получает самый высокий приоритет.

Следующий пример показывает, как эти правила применяются к параллельным состояниям верхнего уровня и параллельны подсостояниям.

Примечание

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

Закажите параллельные состояния неявно

Чтобы использовать неявное упорядоченное расположение в параллельных состояниях, выполните эти шаги:

  1. Щелкните правой кнопкой в верхнем уровне графика и выберите Properties из контекстного меню.

  2. В диалоговом окне Свойств диаграммы снимите флажок User-specified state/transition execution order.

  3. Нажмите OK.

Закажите обслуживание для параллельных состояний

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

  • Заполните разрывы в последовательности так, чтобы упорядоченное расположение было непрерывно

  • Убедитесь, что никакие два состояния не имеют тот же приоритет

  • Сохраните намеченный относительный приоритет выполнения

Как график сохраняет относительные приоритеты в явном режиме

Для явного упорядоченного расположения график сохраняет заданные пользователями приоритеты. Рассмотрите этот пример явного упорядоченного расположения:

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

  1. Измените приоритет b состояния верхнего уровня к 3.

  2. Добавьте g состояния верхнего уровня.

  3. Удалите e подсостояния.

График сохраняет приоритетный набор явным образом для b состояния верхнего уровня, но перенумеровывает все другие параллельные состояния, чтобы сохранить их предшествующий относительный порядок.

Как график сохраняет относительные приоритеты в неявном режиме

Для неявного упорядоченного расположения график сохраняет намеченный относительный приоритет на основе геометрии. Рассмотрите этот пример неявного упорядоченного расположения:

Если вы удаляете верхний уровень, утверждают b и e подсостояния, график автоматически повторно присваивает приоритет остающимся параллельным состояниям и подутверждает, чтобы сохранить неявный геометрический порядок:

Приоритеты выполнения в восстановленных состояниях

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

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

Если вы удаляете состояние...И восстановите состояние...Каков приоритет?
При удалении, сокращая, перетаскивая вне контуров родительского состояния или перетаскивая, таким образом, его контуры перекрывают родительское состояниеИспользуя команду отменыИсходный приоритет восстанавливается.
При перетаскивании вне контуров родительского состояния или таким образом, его контуры перекрывают родительское состояние и отпускание кнопки мышиПеретаскивание его назад в родительское состояниеИсходный приоритет потерян. Диаграмма Stateflow обрабатывает восстановленное состояние как созданное последнее и присваивает его самый низкий приоритет выполнения.
При перетаскивании вне контуров родительского состояния или таким образом, его контуры перекрывают родительское состояние, не отпуская кнопку мышиПеретаскивание его назад в родительское состояниеИсходный приоритет восстанавливается.
При перетаскивании, таким образом, его контуры перекрывают одно или несколько одноуровневых состоянийПеретаскивание его к местоположению без перекрывающихся контуров в том же родительском состоянииИсходный приоритет восстанавливается.
СокращениеВставкаИсходный приоритет потерян. Диаграмма Stateflow обрабатывает восстановленное состояние как созданное последнее и присваивает его самый низкий приоритет выполнения.

Переключение между явным и неявным упорядоченным расположением

Если вы переключаетесь на неявный режим после явного упорядоченного расположения параллельных состояний, диаграмма Stateflow сбрасывает порядок выполнения, чтобы следовать неявным правилам геометрии. Однако, если вы переключаетесь от неявного до явного режима, график не восстанавливает исходный явный порядок выполнения.

Порядок выполнения параллельных состояний в полях и подграфиках

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

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