Типы выполнения графика

Жизненный цикл диаграммы Stateflow

Stateflow® графики проходят несколько этапов выполнения:

СтадияОписание
НеактивныйГрафик не имеет активных состояний
АктивныйГрафик имеет активные состояния
СонГрафик имеет активные состояния, но никаких событий для обработки

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

См. Использование событий для выполнения графиков.

Выполнение неактивного графика

Когда график неактивен и впервые запускается событием из модели Simulink, он сначала выполняет свой набор графиков потока по умолчанию (см. Порядок выполнения для набора Графиков потока). Если это действие не вызывает входа в состояние и график имеет параллельное разложение, то каждое параллельное состояние становится активным (см. Ввод диаграммы или состояния).

Если выполнение путей потока по умолчанию не вызывает входа в состояние, возникает ошибка несогласованности состояний.

Выполнение активного графика

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

Выполнение графика при инициализации

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

Если вы хотите, чтобы ваш график начал выполняться с известного строения, можно включить свойство < reservedrangesplaceholder0 > графика. Когда вы включаете эту опцию, строение состояния графика инициализируется в момент 0 вместо первого вхождения входного события. Пути перехода по умолчанию для графика выполняются во время фазы инициализации модели в момент 0, соответствующий фазе mdlInitializeConditions () (Simulink) для S-функций. Для получения дополнительной информации смотрите Выполнение (ввод) графика при инициализации.

Примечание

Если выход этого графика соединяется с SimEvents® блокируйте, не устанавливайте этот флажок. Чтобы узнать больше об использовании диаграмм Stateflow и блоков SimEvents вместе в модели, смотрите документацию SimEvents.

Из-за переходного характера фазы инициализации не выполняйте определенные действия в путях перехода по умолчанию графика - и связанных действий входа состояния - которые выполняются при инициализации. Следуйте этим рекомендациям:

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

  • Не вызывайте экспортированные графические функции из других графиков, поскольку эти диаграммы, возможно, еще не инициализированы.

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

Вы можете управлять уровнем диагностического действия для недопустимого доступа к входным данным диаграммы в панели Diagnostics > Stateflow диалогового окна Параметры конфигурации. Для получения дополнительной информации см. документацию по Недействительному доступу к входным данным в диагностике инициализации графика (Simulink).

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

Похожие темы