Обнаружение ошибок моделирования во время редактирования

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

Редактор Stateflow подсвечивает объекты, которые нарушают проверки во время редактирования красным цветом (на ошибки) или оранжевым цветом (на предупреждения). Когда вы указываете на объект, который подсвечивается и нажимаете на значок ошибки или предупреждения, всплывающая подсказка отображает детали и возможные исправления.

Управление проверками во время редактирования

По умолчанию включена проверка во время редактирования и подсветка синтаксических ошибок. Чтобы отключить проверки во время редактирования, на вкладке Debug снимите флажок Diagnostics > Edit-Time Errors & Warnings.

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

Можно управлять уровнем диагностического действия для этих проверок во время редактирования, установив значение их параметра конфигурации равным error, warning, или none. Когда вы изменяете настройку для параметра конфигурации, уровень диагностики для соответствующих проверок во время редактирования также изменяется. Для примера, если вы задаете значение параметра конфигурации Unreachable execution path noneтогда Редактор Stateflow не подсвечивает болтающиеся переходы, затенение перехода или недоступные состояния.

Проверки состояний и подсхем во время субдиаграмм

Atomic Subchart Contains State Actions

  • Проблема: Состояния активности не поддерживаются на атомарных субдиаграммах.

  • Уровень диагностики: Ошибка.

  • Решение: Удалите состояния активности или переместите их в подсостояние атомарной субдиаграммы.

    Atomic subchart that contains state actions.

Default Transition Is Missing

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

  • Уровень диагностики: Ошибка.

  • Решение: Задайте начальное состояние путем добавления перехода по умолчанию. Для получения дополнительной информации см. Раздел «Переходы по умолчанию».

    Chart with no default transition.

Graphical Function Contains a State

Invalid Intersection

  • Проблема: Состояния и соединения не должны перекрываться в редакторе Stateflow.

  • Уровень диагностики: Ошибка.

  • Решение: Избегайте пересечений, разделяя состояния и соединения.

    Invalid intersection between states.

Monitoring Leaf or Child State Activity of Parallel States

  • Проблема: Графики и состояния с параллельным (И) разложением не поддерживают мониторинг активности листьев или детей в состоянии, потому что параллельные подсостояния активны одновременно.

  • Уровень диагностики: Предупреждение.

  • Решение: Откройте Property Inspector или Model Explorer. Снимите флажок Create output for monitoring или выберите Self activity из раскрывающегося списка. Для получения дополнительной информации смотрите Мониторинг активности состояния через данные активного состояния.

    Parallel substates in a state that monitors child state activity.

State Contains a Syntax Error

  • Проблема: Состояние активности не соответствует синтаксическим правилам Stateflow. Редактор Stateflow подчеркивает синтаксические ошибки красной волнистой линией. См. также Transition Contains a Syntax Error.

  • Уровень диагностики: Ошибка.

  • Решение: Исправьте синтаксическую ошибку в состояние активности. Для получения дополнительной информации см. раздел Меток состояния».

    State that contains a syntax error.

    Примечание

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

Unreachable State

  • Проблема: Состояние unreachable, когда ни один действительный путь выполнения не ведет к нему.

  • Уровень диагностики: Зависит от параметра конфигурации Недоступный путь выполнения (Simulink).

  • Решение: Соедините недоступное состояние с переходом от достижимого состояния или соединения.

    Chart that contains an unreachable state.

Проверки переходов во время редактирования

Dangling Transition

  • Проблема: Каждый переход должен иметь допустимое состояние назначения или соединения.

  • Уровень диагностики: Зависит от параметра конфигурации Недоступный путь выполнения (Simulink).

  • Решение: Соедините переход в состояние или соединение. Для получения дополнительной информации см. раздел «Переходы».

    Chart that contains a dangling transition.

Default Transition Path Does Not Terminate in a State

  • Проблема: В графиках или состояниях с эксклюзивным (OR) разложением и, по крайней мере, одним подсостоянием:

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

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

  • Уровень диагностики: Зависит от параметра конфигурации Нет безусловных переходов по умолчанию (Simulink).

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

    Chart without an unconditional default transition path to a state.

Invalid Default Transition Path

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

  • Уровень диагностики: Ошибка.

  • Решение: Измените путь перехода по умолчанию, чтобы он оставался в родительском состоянии.

    Chart with an invalid default transition path.

Transition Contains a Syntax Error

  • Проблема: При переходе условие или действие не следуют синтаксическим правилам Stateflow. Редактор Stateflow подчеркивает синтаксические ошибки красной волнистой линией. См. также State Contains a Syntax Error.

  • Уровень диагностики: Ошибка.

  • Решение: Исправьте синтаксическую ошибку в условии перехода или действии. Для получения дополнительной информации см. раздел Меток перехода».

    Transition that contains a syntax error.

Transition Action Precedes a Condition Action Along This Path

  • Проблема: Когда переход с переходным действием сопровождается переходом с действием условия, действия не выполняются в порядке переходов. Диаграммы Stateflow выполняют действия условия, когда связанное условие оценивается как true. Напротив, графики выполняют переходные действия только тогда, когда переходный путь полностью выполнен. Как следствие, график принимает путь перехода, действия условия происходят перед действиями перехода.

  • Уровень диагностики: Зависит от параметра конфигурации Transition action заданное перед действием условия (Simulink).

  • Решение: Поместите действие перехода после последнего действия условия на пути.

    Transition path in which a transition action precedes a condition action.

Transition Begins or Ends in a Parallel State

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

  • Уровень диагностики: Предупреждение.

  • Решение: Удалите переходы или измените разложение родительского состояния на исключающее (OR).

    Transitions that begin or end in a parallel states.

Transition Connects to a Box

  • Проблема: Переходы могут соединяться только с состояниями и соединениями.

  • Уровень диагностики: Ошибка.

  • Решение: Перемещение или удаление переходов, присоединенных к коробке.

    Chart with a transition that connects to a box.

Transition Crosses Parallel States

  • Проблема: Автономные диаграммы Stateflow не поддерживают переходы, которые пересекают контур параллельного состояния.

  • Уровень диагностики: Ошибка.

  • Решение: Удалите переход, переходящий в параллельные состояния или из них.

    Standalone chart with a transition that crosses the boundary of a parallel state.

Transition Enters or Exits Graphical Function

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

  • Уровень диагностики: Ошибка.

  • Решение: Удалите переход, входящий или выходящий из графической функции.

    Chart containing transitions that enter and exit a graphical function.

Transition Loops Outside Natural Parent

  • Проблема: Если переход выходит за пределы родительского состояния между источником и местом назначения, график выполняет exit и entry действия родительского состояния до того, как состояние назначения станет активным.

  • Уровень диагностики: Зависит от параметра конфигурации Transition outside natural parent (Simulink).

  • Решение: Перемещайте переход так, чтобы он содержался в родительском состоянии.

    Transition between substates that goes outside the boundary of the parent state.

Transition Shadowing

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

  • Уровень диагностики: Зависит от параметра конфигурации Недоступный путь выполнения (Simulink).

  • Решение: Создайте не более одного безусловного перехода от каждого состояния или соединения. Явным образом задайте, что безусловный переход выполняется после любых переходов с условиями. Для получения дополнительной информации см. раздел Порядок оценки перехода.

    The unconditional transition in this chart shadows the conditional transition.

Unconditional Path Out of State with During Actions or Child States

  • Проблема: Безусловные переходы, ведущие из состояния, препятствуют выполнению during действия в состоянии и переходы по умолчанию к дочерним состояниям.

  • Уровень диагностики: Зависит от параметра конфигурации Transition outside natural parent (Simulink).

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

    Chart with one transition out of a state with during actions and another transition out of a state with child states.

Проверки соединений во время редактирования

Cycle Contains Transitions with Transition Actions

  • Проблема: Циклы не должны содержать переходы с переходными действиями.

  • Уровень диагностики: Ошибка.

  • Решение: Удалите действие перехода или удалите цикл, удалив переход.

    Flow chart with a transition action in a cycle.

Invalid History Junction

  • Проблема: Историческое соединение invalid, когда:

    • Историческое соединение содержится на уровне графика иерархии.

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

    • Историческое соединение содержится внутри графической функции.

    • В одном и том же состоянии содержится несколько исторических соединений.

    • Исторический узел является источником перехода.

  • Уровень диагностики: Ошибка.

  • Решение: Удалите историческое соединение с уровня графика иерархии, состояние с параллельным (И) разложением или графическую функцию. Удалите все соединения, кроме одного в истории, из состояния. Переместите источник перехода в соединительное соединение или состояние. Для получения дополнительной информации смотрите Запись действия состояния при помощи History Junctions.

    Chart that contains an invalid history junction.

Junction Has No Unconditional Escape from Cycle

  • Проблема: Соединение должно иметь безусловный путь выхода из цикла в состояние или оконечное соединение.

  • Уровень диагностики: Ошибка.

  • Решение: Создайте безусловный путь от соединения до состояния или оконечного соединения.

    Junction with no unconditional escape from a cycle.

Unexpected Backtracking

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

  • Уровень диагностики: Зависит от параметра конфигурации Unexpected backtracking (Simulink).

  • Решение: Создайте безусловный путь от соединения до состояния или оконечного соединения. Для получения дополнительной информации смотрите Backtrack в Flow Графиков.

    Например, подсвеченное соединение на этом графике не имеет безусловного пути перехода к состоянию A. Если ConditionA и ConditionB true и ConditionC false, график переходит к первому соединению в пути несколько раз. В результате график выполняет три действия с условием.

    Chart with unexpected backtracking.

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

    Chart with no unexpected backtracking.

Unreachable Junction

  • Проблема: Соединение unreachable, когда ни один действительный путь выполнения не ведет к нему.

  • Уровень диагностики: Зависит от параметра конфигурации Недоступный путь выполнения (Simulink).

  • Решение: Соедините недостижимое соединение с переходом от достижимого состояния или соединения.

    Chart that contains an unreachable junction.

Проверки функций во время редактирования

Function is Unused

  • Проблема: Функция unused, когда на графике нет операторов, вызывающих функцию.

  • Уровень диагностики: Предупреждение.

  • Решение: Вызов функции из состояния или переходного действия или из другой функции.

    Chart containing an unused function.

Invalid Use of Keywords as Function Arguments

  • Проблема: Определение функции использует зарезервированное ключевое слово в качестве аргумента.

  • Уровень диагностики: Ошибка.

  • Решение: Переименуйте аргумент в функцию. Список зарезервированных ключевых слов см. в Руководстве по именованию объектов Stateflow.

    Function that uses a reserved keyword as an argument.

Похожие темы