По умолчанию графики Stateflow® выполняются однажды для каждого входного события или временного шага. Если вы моделируете систему, которая должна реагировать быстро на входные параметры, можно включить супер семантику шага. Супер семантика шага поддерживается только в диаграммах Stateflow в модели Simulink®.
Когда вы включаете супер семантику шага, диаграмма Stateflow выполняется многократно для каждого активного входного события или для каждого временного шага, когда график не имеет никаких входных событий. График берет допустимые переходы, пока любое из этих условий не происходит:
Больше допустимых переходов не существует, то есть, график находится в устойчивой активной настройке состояния.
Количество взятых переходов превышает заданное пользователями максимальное количество итераций.
На супер шаге ваш график быстрее отвечает на входные параметры, но выполняет больше расчетов в каждом временном шаге. Поэтому при генерации кода для целевого процессора, убедитесь, что график может закончить расчет в одном временном шаге. Чтобы достигнуть этого поведения, подстройте супер параметры шага путем установления верхнего предела для количества переходов, которые график берет на временной шаг (см. Максимальное количество Итераций).
Для целей симуляции задайте, переходит ли график к следующему временному шагу или генерирует ошибку, если это достигает максимального количества переходов преждевременно. Однако в сгенерированном коде для целевых процессоров, график всегда переходит к следующему временному шагу после взятия максимального количества переходов.
На супер шаге ваш график всегда берет по крайней мере один переход. Поэтому, когда вы определяете максимальный номер итераций на каждом супер шаге, график берет то количество переходов плюс 1. Например, если вы задаете 10 как максимальное количество итераций, ваш график берет 11 переходов в каждом супер шаге. Чтобы определить максимальный номер итераций на каждом супер шаге, смотрите, Включают Супер Семантику Шага.
Включить супер семантику шага:
Щелкните правой кнопкой в верхнем уровне графика и выберите Properties из контекстного меню.
В диалоговом окне Свойств диаграммы установите флажок Enable super step semantics.
Два дополнительных поля появляются ниже того флажка.
Введите значение в поле Maximum iterations in each super step.
График всегда берет один переход во время супер шага, таким образом, значение N
то, что вы задаете, представляет максимальное количество дополнительных переходов (в общей сложности для N+1
). Попытайтесь выбрать номер, который позволяет графику достигать устойчивого состояния во временном шаге, на основе логики режима вашего графика. Для получения дополнительной информации смотрите Максимальное количество Итераций
Выберите действие из выпадающего меню в поле Behavior after too many iterations.
Ваш выбор определяет, как график ведет себя в процессе моделирования, если это превышает максимальное количество итераций на супер шаге прежде, чем достигнуть устойчивого состояния.
Поведение | Описание |
---|---|
Proceed | График возвращается, чтобы спать с последней активной настройкой состояния, то есть, после обновления локальных данных при последнем допустимом переходе на супер шаге. |
Throw Error | Остановки симуляции и график генерируют ошибку, указывая, что слишком много итераций произошли при попытке достигнуть устойчивого состояния. Примечание Выбор Throw Error может помочь обнаружить бесконечные циклы в циклах перехода (см. Обнаружение Бесконечных циклов в Циклах Перехода. |
Примечание
Эта опция важна только для целей симуляции. Для целевых процессоров генерация кода переходит к следующему временному шагу вместо того, чтобы генерировать ошибку.
Следующая модель показывает, как супер продвигаются, семантика отличается от семантики по умолчанию:
В этой модели блок Constant выводит постоянное значение 20 к входу u
в диаграмме Stateflow. Поскольку значение u
всегда 20, каждый переход в графике допустим:
По умолчанию график берет только один переход в каждом шаге симуляции, постепенно увеличивая y
каждый раз.
Когда вы включаете супер семантику шага, график берет все допустимые переходы в каждом временном шаге, останавливающемся в C
состояния с
y
= 3.
Когда вы включаете супер семантику шага для графика с несколькими активными входными событиями, график берет все допустимые переходы для первого активного события, прежде чем это начнет обрабатывать следующее активное событие. Например, рассмотрите следующую модель:
В этой модели блок Sum производит 2 1 векторный сигнал, который идет от [0,0] до [1,1] во время t
= 1. В результате, когда модель будит график, события E1
и E2
оба активны:
Если вы включаете супер семантику шага, график берет все допустимые переходы для события E1
. График берет переходы от A
состояния к
B
и затем от B
состояния
toc
на одном супер шаге. Осциллограф показывает тот y
= 3 в конце супер шага:
На супер шаге, этот график никогда переходы, чтобы не утвердить D
потому что нет никакого пути от C
состояния утверждать
D
.
Если ваш график содержит циклы перехода, брать несколько переходов в одном временном шаге может вызвать бесконечные циклы. Рассмотрите следующий пример:
В этом примере, переходах между состояниями A
и B
цикл и производит бесконечный цикл потому что значение x
остается постоянным в 1. Один способ обнаружить бесконечные циклы состоит в том, чтобы сконфигурировать ваш график, чтобы сгенерировать ошибку, если это достигает максимального количества итераций на супер шаге. Смотрите Включают Супер Семантику Шага.