Когда проверка во время редактирования включена, Stateflow® Редактор обнаруживает потенциальные ошибки и предупреждения во время работы с графиком. Устраняя эти проблемы на ранних этапах процесса проекта, можно избежать предупреждений и ошибок во время компиляции или выполнения.
Редактор Stateflow подсвечивает объекты, которые нарушают проверки во время редактирования красным цветом (на ошибки) или оранжевым цветом (на предупреждения). Когда вы указываете на объект, который подсвечивается и нажимаете на значок ошибки или предупреждения, всплывающая подсказка отображает детали и возможные исправления.
По умолчанию включена проверка во время редактирования и подсветка синтаксических ошибок. Чтобы отключить проверки во время редактирования, на вкладке Debug снимите флажок Diagnostics > Edit-Time Errors & Warnings.
В этой таблице перечислены проверки во время редактирования, которые имеют связанный параметр конфигурации диагностики на панели Diagnostics > Stateflow диалогового окна Параметры конфигурации.
Проблема с проверкой во время редактирования | Параметр конфигурации диагностики |
---|---|
Висячий переход | Недоступный путь выполнения (Simulink) |
Путь перехода по умолчанию не заканчивается в состоянии | Никаких безусловных переходов по умолчанию (Simulink) |
Действие перехода предшествует действию условия вдоль этого пути | Действие перехода, заданное перед действием условия (Simulink) |
Переход Циклов Внешние Природные Родительские элементы | Переход за пределы естественного родительского элемента (Simulink) |
Переходное затенение | Недоступный путь выполнения (Simulink) |
Безусловный путь вне государства с во время действий или дочерних состояний | Переход за пределы естественного родительского элемента (Simulink) |
Неожиданное обратное отслеживание | Неожиданное обратное отслеживание (Simulink) |
Недоступное соединение | Недоступный путь выполнения (Simulink) |
Можно управлять уровнем диагностического действия для этих проверок во время редактирования, установив значение их параметра конфигурации равным error
, warning
, или none
. Когда вы изменяете настройку для параметра конфигурации, уровень диагностики для соответствующих проверок во время редактирования также изменяется. Для примера, если вы задаете значение параметра конфигурации Unreachable execution path none
тогда Редактор Stateflow не подсвечивает болтающиеся переходы, затенение перехода или недоступные состояния.
Atomic Subchart Contains State Actions
Проблема: Состояния активности не поддерживаются на атомарных субдиаграммах.
Уровень диагностики: Ошибка.
Решение: Удалите состояния активности или переместите их в подсостояние атомарной субдиаграммы.
Default Transition Is Missing
Проблема: В графике или состоянии с эксклюзивным (OR) разложением и, по крайней мере, двумя подсостояниями или соединениями требуется переход по умолчанию, чтобы указать, с чего начинается выполнение.
Уровень диагностики: Ошибка.
Решение: Задайте начальное состояние путем добавления перехода по умолчанию. Для получения дополнительной информации см. Раздел «Переходы по умолчанию».
Graphical Function Contains a State
Проблема: Поскольку графические функции выполняются полностью за один временной шаг, они не должны содержать никаких состояний.
Уровень диагностики: Ошибка.
Решение: Замените состояния соединениями. Для получения дополнительной информации см. «Повторное использование логических шаблонов путем определения графических функций».
Invalid Intersection
Проблема: Состояния и соединения не должны перекрываться в редакторе Stateflow.
Уровень диагностики: Ошибка.
Решение: Избегайте пересечений, разделяя состояния и соединения.
Monitoring Leaf or Child State Activity of Parallel States
Проблема: Графики и состояния с параллельным (И) разложением не поддерживают мониторинг активности листьев или детей в состоянии, потому что параллельные подсостояния активны одновременно.
Уровень диагностики: Предупреждение.
Решение: Откройте Property Inspector или Model Explorer. Снимите флажок Create output for monitoring или выберите Self activity
из раскрывающегося списка. Для получения дополнительной информации смотрите Мониторинг активности состояния через данные активного состояния.
State Contains a Syntax Error
Проблема: Состояние активности не соответствует синтаксическим правилам Stateflow. Редактор Stateflow подчеркивает синтаксические ошибки красной волнистой линией. См. также Transition Contains a Syntax Error
.
Уровень диагностики: Ошибка.
Решение: Исправьте синтаксическую ошибку в состояние активности. Для получения дополнительной информации см. раздел Меток состояния».
Примечание
На родительском графике подсвечены красным цветом субдиаграмм с синтаксическими ошибками, а значок ошибки указывает на проблему с синтаксисом. В редакторе субдиаграммы синтаксическая ошибка подчеркнута красным цветом, но нет значка, указывающего на проблему.
Unreachable State
Проблема: Состояние unreachable, когда ни один действительный путь выполнения не ведет к нему.
Уровень диагностики: Зависит от параметра конфигурации Недоступный путь выполнения (Simulink).
Решение: Соедините недоступное состояние с переходом от достижимого состояния или соединения.
Dangling Transition
Проблема: Каждый переход должен иметь допустимое состояние назначения или соединения.
Уровень диагностики: Зависит от параметра конфигурации Недоступный путь выполнения (Simulink).
Решение: Соедините переход в состояние или соединение. Для получения дополнительной информации см. раздел «Переходы».
Default Transition Path Does Not Terminate in a State
Проблема: В графиках или состояниях с эксклюзивным (OR) разложением и, по крайней мере, одним подсостоянием:
Каждый путь на переходе по умолчанию должен привести к подсостоянию.
Должен быть один путь перехода по умолчанию, который не охраняется условием или запускается событием.
Уровень диагностики: Зависит от параметра конфигурации Нет безусловных переходов по умолчанию (Simulink).
Решение: Завершает каждый путь по умолчанию переход в подсостоянии. Убедитесь, что один путь перехода по умолчанию не защищен условием или вызван событием.
Invalid Default Transition Path
Проблема: путь перехода по умолчанию не должен выходить из родительского состояния.
Уровень диагностики: Ошибка.
Решение: Измените путь перехода по умолчанию, чтобы он оставался в родительском состоянии.
Transition Contains a Syntax Error
Проблема: При переходе условие или действие не следуют синтаксическим правилам Stateflow. Редактор Stateflow подчеркивает синтаксические ошибки красной волнистой линией. См. также State Contains a Syntax Error
.
Уровень диагностики: Ошибка.
Решение: Исправьте синтаксическую ошибку в условии перехода или действии. Для получения дополнительной информации см. раздел Меток перехода».
Transition Action Precedes a Condition Action Along This Path
Проблема: Когда переход с переходным действием сопровождается переходом с действием условия, действия не выполняются в порядке переходов. Диаграммы Stateflow выполняют действия условия, когда связанное условие оценивается как true. Напротив, графики выполняют переходные действия только тогда, когда переходный путь полностью выполнен. Как следствие, график принимает путь перехода, действия условия происходят перед действиями перехода.
Уровень диагностики: Зависит от параметра конфигурации Transition action заданное перед действием условия (Simulink).
Решение: Поместите действие перехода после последнего действия условия на пути.
Transition Begins or Ends in a Parallel State
Проблема: В графиках и состояниях с параллельным (И) разложением все одноуровневые подсостояния являются активными или неактивными одновременно.
Уровень диагностики: Предупреждение.
Решение: Удалите переходы или измените разложение родительского состояния на исключающее (OR).
Transition Connects to a Box
Проблема: Переходы могут соединяться только с состояниями и соединениями.
Уровень диагностики: Ошибка.
Решение: Перемещение или удаление переходов, присоединенных к коробке.
Transition Crosses Parallel States
Проблема: Автономные диаграммы Stateflow не поддерживают переходы, которые пересекают контур параллельного состояния.
Уровень диагностики: Ошибка.
Решение: Удалите переход, переходящий в параллельные состояния или из них.
Transition Enters or Exits Graphical Function
Проблема: Переходы не должны входить или выходить из графической функции. Потоковые графики в графических функциях должны быть полностью содержатся внутри функции.
Уровень диагностики: Ошибка.
Решение: Удалите переход, входящий или выходящий из графической функции.
Transition Loops Outside Natural Parent
Проблема: Если переход выходит за пределы родительского состояния между источником и местом назначения, график выполняет exit
и entry
действия родительского состояния до того, как состояние назначения станет активным.
Уровень диагностики: Зависит от параметра конфигурации Transition outside natural parent (Simulink).
Решение: Перемещайте переход так, чтобы он содержался в родительском состоянии.
Transition Shadowing
Проблема: Когда безусловный переход выполняется перед другими исходящими переходами из того же источника, это препятствует выполнению других переходов.
Уровень диагностики: Зависит от параметра конфигурации Недоступный путь выполнения (Simulink).
Решение: Создайте не более одного безусловного перехода от каждого состояния или соединения. Явным образом задайте, что безусловный переход выполняется после любых переходов с условиями. Для получения дополнительной информации см. раздел Порядок оценки перехода.
Unconditional Path Out of State with During Actions or Child States
Проблема: Безусловные переходы, ведущие из состояния, препятствуют выполнению during
действия в состоянии и переходы по умолчанию к дочерним состояниям.
Уровень диагностики: Зависит от параметра конфигурации Transition outside natural parent (Simulink).
Решение: Добавить условие к переходу или удалить во время действий и дочерних состояний из состояния.
Cycle Contains Transitions with Transition Actions
Проблема: Циклы не должны содержать переходы с переходными действиями.
Уровень диагностики: Ошибка.
Решение: Удалите действие перехода или удалите цикл, удалив переход.
Invalid History Junction
Проблема: Историческое соединение invalid, когда:
Историческое соединение содержится на уровне графика иерархии.
Историческое соединение содержится в состоянии с параллельным (И) разложением.
Историческое соединение содержится внутри графической функции.
В одном и том же состоянии содержится несколько исторических соединений.
Исторический узел является источником перехода.
Уровень диагностики: Ошибка.
Решение: Удалите историческое соединение с уровня графика иерархии, состояние с параллельным (И) разложением или графическую функцию. Удалите все соединения, кроме одного в истории, из состояния. Переместите источник перехода в соединительное соединение или состояние. Для получения дополнительной информации смотрите Запись действия состояния при помощи History Junctions.
Junction Has No Unconditional Escape from Cycle
Проблема: Соединение должно иметь безусловный путь выхода из цикла в состояние или оконечное соединение.
Уровень диагностики: Ошибка.
Решение: Создайте безусловный путь от соединения до состояния или оконечного соединения.
Unexpected Backtracking
Проблема: Неожиданное обратное отслеживание потока управления может произойти, когда несколько переходных путей от одного и того же источника ведут к соединению, и соединение не имеет безусловного пути к состоянию или оконечному соединению.
Уровень диагностики: Зависит от параметра конфигурации Unexpected backtracking (Simulink).
Решение: Создайте безусловный путь от соединения до состояния или оконечного соединения. Для получения дополнительной информации смотрите Backtrack в Flow Графиков.
Например, подсвеченное соединение на этом графике не имеет безусловного пути перехода к состоянию A
. Если ConditionA
и ConditionB
true и ConditionC
false, график переходит к первому соединению в пути несколько раз. В результате график выполняет три действия с условием.
Чтобы избежать обратного отслеживания, объедините условия и создайте безусловный путь от второго соединения до состояния назначения. После изменения график выполняет только одно действие условия.
Unreachable Junction
Проблема: Соединение unreachable, когда ни один действительный путь выполнения не ведет к нему.
Уровень диагностики: Зависит от параметра конфигурации Недоступный путь выполнения (Simulink).
Решение: Соедините недостижимое соединение с переходом от достижимого состояния или соединения.
Function is Unused
Проблема: Функция unused, когда на графике нет операторов, вызывающих функцию.
Уровень диагностики: Предупреждение.
Решение: Вызов функции из состояния или переходного действия или из другой функции.
Invalid Use of Keywords as Function Arguments
Проблема: Определение функции использует зарезервированное ключевое слово в качестве аргумента.
Уровень диагностики: Ошибка.
Решение: Переименуйте аргумент в функцию. Список зарезервированных ключевых слов см. в Руководстве по именованию объектов Stateflow.