Диаграммы Stateflow ® проходят несколько этапов выполнения:
| Стадия | Описание |
|---|---|
| Неактивный | Диаграмма не имеет активных состояний |
| Активный | Диаграмма имеет активные состояния |
| Сон | Диаграмма имеет активные состояния, но события для обработки отсутствуют |
Когда модель Simulink ® впервые запускает диаграмму Stateflow, диаграмма неактивна и не имеет активных состояний. После того, как диаграмма выполнит и полностью обработает свое начальное триггерное событие из модели Simulink, она передает управление обратно в модель и переходит в спящий режим. При следующем триггерном событии Simulink диаграмма переходит из спящей в активную стадию.
См. раздел Использование событий для выполнения диаграмм.
Когда диаграмма неактивна и сначала инициируется событием из модели Simulink, она сначала выполняет свой набор блок-схем по умолчанию (см. Порядок выполнения для набора блок-схем). Если это действие не вызывает переход в состояние и диаграмма имеет параллельное разложение, то каждое параллельное состояние становится активным (см. раздел Ввод диаграммы или состояния).
Если выполнение путей потока по умолчанию не приводит к введению состояния, возникает ошибка несоответствия состояний.
После первого запуска диаграммы моделью Simulink она является активной диаграммой. Когда диаграмма получает другое событие из модели, она снова выполняется как активная диаграмма. Если диаграмма не имеет состояний, каждое выполнение эквивалентно инициализации диаграммы. В противном случае активные подсостояния выполняются. Параллельные состояния выполняются в том же порядке, в котором они становятся активными.
По умолчанию при первом запуске диаграммы выполняются пути перехода по умолчанию. В это время диаграмма может получать доступ к входам, записывать в выходы и транслировать события.
Если требуется начать выполнение диаграммы из известной конфигурации, можно включить свойство Execute (enter) Chart At Initialization chart. При включении этой опции конфигурация состояния диаграммы инициализируется в момент времени 0 вместо первого вхождения входного события. Пути перехода по умолчанию для диаграммы выполняются во время фазы инициализации модели в момент времени 0, соответствующий фазе mdlInitialityConditions () (Simulink) для S-функций. Дополнительные сведения см. в разделе Выполнение (ввод) диаграммы при инициализации.
Примечание
Если выходные данные этой диаграммы подключены к блоку SimEvents ®, не устанавливайте этот флажок. Дополнительные сведения об использовании диаграмм Stateflow и блоков SimEvents в модели см. в документации SimEvents.
Из-за переходного характера фазы инициализации не выполняйте определенные действия в путях перехода по умолчанию диаграммы - и связанные действия ввода состояния - которые выполняются при инициализации. Следуйте следующим инструкциям:
Не обращайтесь к входным данным диаграммы, поскольку блоки, подключенные к входным портам диаграммы, возможно, еще не инициализировали свои выходы.
Не вызывайте экспортированные графические функции из других диаграмм, поскольку они еще не были инициализированы.
Не транслируйте события вывода вызова функции, поскольку инициируемые подсистемы могли еще не инициализироваться.
Можно управлять уровнем диагностического действия для недопустимого доступа к входным данным диаграммы в области Диагностика > Поток состояний диалогового окна Параметры конфигурации. Дополнительные сведения см. в документации по диагностике Недопустимый доступ к входным данным при инициализации диаграммы (Simulink).
Выполнение при инициализации игнорируется в диаграммах Stateflow, не содержащих состояний.