exponenta event banner

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

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

При моделировании модели синтаксический анализатор Stateflow оценивает графические и неграфические объекты и данные в каждой машине Stateflow по поддерживаемой нотации диаграммы и синтаксису языка действий. Можно также проверить синтаксис диаграммы, выбрав Обновить диаграмму (Update Chart) на вкладке Моделирование (Modeling) панели инструментов Stateflow.

Если в диаграмме имеются синтаксические ошибки, диаграмма автоматически отображается с выделенным объектом, вызывающим первую ошибку. Можно выбрать ошибку в окне диагностики, чтобы переместить ее исходную диаграмму на передний план с выделенным исходным объектом. Все неразрешенные данные или события на диаграмме отмечаются в мастере символов.

Несоответствия состояний

В диаграмме Stateflow состояния являются несогласованными, если они нарушают одно из следующих правил:

  • Активное состояние с эксклюзивным разложением (ИЛИ) и, по меньшей мере, одним подсостоянием имеет ровно одно активное подсостояние.

  • Все подсостояния активного состояния с параллельным (И) разложением являются активными.

  • Все подсостояния неактивного состояния неактивны независимо от разложения состояния.

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

Причины несоответствия состояния

Несогласованность состояний одного типа возникает, когда выполняются все эти условия:

  • Состояние с несколькими подсостояниями имеет исключительное разложение (ИЛИ).

  • Государство не содержит соединения истории.

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

  • Не все переходы в состояние являются сверхпереходами, ведущими непосредственно к подсостоянию.

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

Добавление безусловного перехода по умолчанию в одно из состояний устраняет несогласованность состояний.

Обнаружение несоответствий состояний

Во время компиляции диаграммы Stateflow обнаруживают несоответствия состояний, вызванные пропуском безусловного перехода по умолчанию. Чтобы управлять уровнем диагностического действия, откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters). На панели Диагностика > Поток состояния для параметра Диагностика без безусловных переходов по умолчанию можно выбрать error, warning, или none. Значение по умолчанию: error. Дополнительные сведения см. в разделе Отсутствие безусловных переходов по умолчанию (Simulink).

Нарушения диапазона данных

Во время моделирования нарушение диапазона данных происходит в следующих случаях:

Например, эта диаграмма содержит локальные данные a имеет минимальное значение 0 и максимальное значение 2. entry действие в состоянии A инициализирует a на 1. during действие увеличивает значение a на 1. По истечении двух временных шагов значение a превышает указанный диапазон, что приводит к нарушению диапазона данных.

Обнаружение нарушений диапазона данных

Во время выполнения диаграммы Stateflow обнаруживают нарушения диапазона данных. Чтобы управлять уровнем диагностического действия, откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters). На панели Диагностика > Валидность данных можно выбрать error, warning, или none для этой диагностики:

  • Проверка диапазона моделирования выявляет нарушения на основе проверок минимального и максимального диапазона. Значение по умолчанию: none.

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

Дополнительные сведения см. в разделах Проверка диапазона моделирования (Simulation range checking, Simulink), Наложение при переполнении (Simulink) и Насыщение при переполнении (Simulink).

Циклическое поведение

Циклическое поведение возникает при бесконечном повторении шага или последовательности шагов во время моделирования диаграммы.

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

  • during действие в состоянии C транслирует событие E1.

  • Событие E1 запускает переход из состояния A.A1 указывать A.A2. Действие условия для этого перехода транслирует событие E2.

  • Событие E2 запускает переход из состояния B.B1 указывать B.B2. Действие условия для этого перехода транслирует событие E1.

Событие транслируется в состояниях A и B происходят в действиях условия, поэтому переходы не происходят до тех пор, пока диаграмма не обработает результирующие события. Подгосударства A.A1 и B.B1 оставаться активным, поэтому новые широковещательные передачи событий продолжают запускать переходы, и процесс повторяется бесконечно.

Поскольку неориентированные трансляции локальных событий могут вызвать нежелательное рекурсивное поведение, использование send рекомендуется оператор для трансляции направленных локальных событий. Дополнительные сведения см. в разделе Широковещательная рассылка локальных событий для синхронизации параллельных состояний.

Обнаружение циклического поведения во время моделирования

Во время моделирования диаграммы Stateflow используют алгоритмы обнаружения циклов для обнаружения класса бесконечных рекурсий, вызванных трансляциями событий. Чтобы включить обнаружение циклов, откройте диаграмму Stateflow. На вкладке Отладка выберите Диагностика > Определить циклическое поведение. Проверка циклического поведения выбрана по умолчанию.

Диаграммы статофлоу также обнаруживают неориентированные локальные трансляции событий. Чтобы управлять уровнем диагностического действия, откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters). На панели «Диагностика» > «Поток состояний» можно выбрать для диагностики Undirected event broadcasts. error, warning, или none. Значение по умолчанию: warning. Дополнительные сведения см. в разделе Неориентированные трансляции событий (Simulink).

Ограничения обнаружения циклического поведения

Обнаружение цикла stateflow ограничено случаями рекурсии из-за трансляций событий и не распространяется на другие типы циклического поведения.

Например, Stateflow не может обнаружить бесконечный цикл в этой блок-схеме. В этом примере переход по умолчанию инициализирует локальные данные i в 0. Следующий сегмент перехода увеличивается i. Переход к оконечному соединению допустим только в том случае, если условие [i < 0] является правдой. Поскольку это условие никогда не является верным, получается бесконечный цикл.

Модель sf_cycle_error_fix предоставляет предложения по фиксации циклического поведения в блок-схемах. В командной строке MATLAB ® введите:

sfhelp('cycle_error');

Связанные темы