Обнаружьте общие ошибки моделирования во время симуляции графика

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

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

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

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

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

  • Активное состояние с исключительным (OR) разложение и по крайней мере одно подсостояние имеет точно одно активное подсостояние.

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

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

В то время как вы редактируете свой график, редактор Stateflow отображает потенциальные причины для несоответствий состояния путем выделения объектов красного или оранжевого цвета. Для получения дополнительной информации смотрите, Обнаруживают Ошибки Моделирования В течение Времени Редактирования.

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

Один тип несоответствия состояния происходит, когда все эти условия верны:

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

  • Состояние не содержит соединение истории.

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

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

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

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

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

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

Нарушения области значений данных

В процессе моделирования нарушение области значений данных происходит когда:

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

Обнаружьте нарушения области значений данных

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

  • Simulation range checking обнаруживает нарушения на основе проверок диапазона минимума-и-максимума. Настройкой по умолчанию является None.

  • Wrap on overflow и Saturate on overflow обнаруживают нарушения, которые происходят, когда операции целочисленной или фиксированной точки превышают числовую способность своего типа результата. Настройкой по умолчанию является warning.

Для получения дополнительной информации смотрите проверку диапазона Симуляции (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. Во вкладке Debug выберите Diagnostics> Detect Cyclical Behavior. Циклическая проверка поведения выбрана по умолчанию.

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

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

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

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

Чтобы видеть дополнительные предложения для фиксации циклического поведения в блок-схемах, войдите:

openExample("stateflow/FixCycleErrorExample")

Похожие темы