exponenta event banner

Супершаговая семантика

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

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

  • Больше допустимых переходов не существует, то есть диаграмма находится в конфигурации стабильного активного состояния.

  • Число выполненных переходов превышает указанное пользователем максимальное число итераций.

В супершаговом режиме диаграмма быстрее реагирует на входные данные, но выполняет больше вычислений в каждом временном шаге. Поэтому при создании кода для встроенного целевого объекта убедитесь, что диаграмма может завершить вычисление за один шаг времени. Чтобы достичь этого, настройте параметры супершагов, установив верхний предел для количества переходов, выполняемых диаграммой за шаг времени (см. Максимальное количество итераций).

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

Максимальное количество итераций

В супершаговом режиме диаграмма всегда выполняет по крайней мере один переход. Поэтому при установке максимального количества итераций в каждом супершаге диаграмма принимает это количество переходов плюс 1. Например, если в качестве максимального числа итераций указано 10, диаграмма выполняет 11 переходов в каждом супершаге. Чтобы задать максимальное количество итераций в каждом супершаге, см. раздел Включение супершаговой семантики.

Включить супершаговую семантику

Для включения супершаговой семантики:

  1. Щелкните правой кнопкой мыши на верхнем уровне диаграммы и выберите в контекстном меню пункт «Свойства».

  2. В диалоговом окне Свойства диаграммы установите флажок Включить супершаговую семантику.

    Под этим флажком появятся два дополнительных поля.

  3. Введите значение в поле Максимум итераций в каждом супершаге.

    Диаграмма всегда выполняет один переход во время супершага, поэтому значение N указанное значение представляет максимальное количество дополнительных переходов (всего N+1). Попробуйте выбрать число, которое позволит диаграмме достичь стабильного состояния в течение временного шага, основываясь на логике режима диаграммы. Дополнительные сведения см. в разделе Максимальное количество итераций

  4. Выберите действие в раскрывающемся меню в поле Поведение после слишком большого количества итераций.

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

    ПоведениеОписание
    Продолжайте

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

    Ошибка броска

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

    Примечание

    Выбор команды «Ошибка броска» может помочь обнаружить бесконечные циклы в циклах перехода (см. раздел Обнаружение бесконечных циклов в циклах перехода).

    Примечание

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

Супершаговый пример

Следующая модель показывает, чем семантика супершагов отличается от семантики по умолчанию:

В этой модели блок константы (Simulink) выводит на вход постоянное значение 20 u в диаграмме Stateflow. Потому что значение u всегда 20, каждый переход в диаграмме действителен:

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

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

Как супершаговая семантика работает с несколькими входными событиями

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

В этой модели блок суммы (Simulink) создает векторный сигнал 2 на 1, который переходит от [0,0] к [1,1] в момент времени. t = 1. В результате, когда модель пробуждает график, события E1 и E2 оба активны:

При включении супершаговой семантики диаграмма принимает все допустимые переходы для события E1. Диаграмма принимает переходы из состояния A кому B а затем из штата B кому C в одном супершаге. Область действия показывает, что y = 3 в конце суперэтапа:

В супершаговом режиме эта диаграмма никогда не переходит в состояние D потому что нет пути из состояния C указывать D.

Обнаружение бесконечных циклов перехода

Если диаграмма содержит циклы перехода, выполнение нескольких переходов за один шаг времени может привести к бесконечным циклам. Рассмотрим следующий пример:

В этом примере переходы между состояниями A и B и создать бесконечный цикл, потому что значение x остается постоянным при 1. Одним из способов обнаружения бесконечных циклов является настройка диаграммы для генерации ошибки, если она достигает максимального числа итераций на супершаге. См. раздел Включение супершаговой семантики.