Семантика супер-шага

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

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

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

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

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

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

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

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

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

Чтобы включить семантику супер-шага:

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

  2. В диалоговом окне свойств графика» установите флажок «Enable super step semantics».

    Ниже этого флажка отображаются два дополнительных поля.

  3. Введите значение в поле Maximum iterations in each super step.

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

  4. Выберите действие из раскрывающегося меню в Behavior after too many iterations полей.

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

    ПоведениеОписание
    Proceed

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

    Throw Error

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

    Примечание

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

    Примечание

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

Пример супер-шага

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

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

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

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

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

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

В этой модели блок Sum (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. Один из способов обнаружить бесконечные циклы - сконфигурировать график, чтобы сгенерировать ошибку, если она достигает максимального количества итераций в супер шаге. См. «Включение семантики супер-шагов».