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