Когда разовая редактированием проверка включена, Редактор Stateflow® обнаруживает потенциальные ошибки и предупреждения, когда вы работаете над своим графиком. Путем устранения этих проблем рано в процессе проектирования, можно избежать времени компиляции или предупреждений во время выполнения и ошибок.
Редактор Stateflow подсвечивает объекты, которые нарушают разовые редактированием регистрации красного (для ошибок) или оранжевый (для предупреждений). Когда вы указываете на объект, который подсвечен, и кликните по ошибке или предупреждению значка, подсказка отображает детали и возможные меры.
По умолчанию разовая редактированием проверка и выделение синтаксической ошибки включены. Чтобы отключить разовые редактированием проверки, во вкладке Debug, снимают флажок Diagnostics> Edit-Time Errors & Warnings.
Эта таблица приводит разовые редактированием проверки, которые имеют связанный диагностический параметр конфигурации на Diagnostics> панель Stateflow диалогового окна Configuration Parameters.
Можно управлять уровнем диагностического действия для этих разовых редактированием проверок путем устанавливания значения их параметра конфигурации к error
Предупреждение
, или 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
Проблема: Графики и состояния с параллелью (AND), разложение не поддерживает контроль листа или дочернее действие состояния, потому что параллельные подсостояния активны одновременно.
Диагностический уровень: Предупреждение.
Решение: Откройте 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 выполняют действия условия, когда связанное условие оценено как верное. В отличие от этого графики выполняют действия перехода только, когда путь к переходу полностью выполняется. Как следствие график выбирает переход путь, действия условия происходят перед действиями перехода.
Диагностический уровень: Зависит от действия Перехода параметра конфигурации, заданного перед действием условия (Simulink).
Решение: Поместите действие перехода после последнего действия условия с путем.
Transition Begins or Ends in a Parallel State
Проблема: В графиках и состояниях с параллелью (AND) разложение, все одноуровневые подсостояния активны или неактивны одновременно.
Диагностический уровень: Предупреждение.
Решение: Удалите переходы или измените разложение родительского состояния к исключительному (OR).
Transition Connects to a Box
Проблема: Переходы могут только соединиться с состояниями и соединениями.
Диагностический уровень: Ошибка.
Решение: Переместите или удалите переходы, присоединенные к полю.
Transition Crosses Parallel States
Проблема: Автономные диаграммы Stateflow не поддерживают переходы, которые пересекают контур параллельного состояния.
Диагностический уровень: Ошибка.
Решение: Удалите переход, пересекающийся в или из параллельных состояний.
Transition Enters or Exits Graphical Function
Проблема: Переходы не должны вводить или выходить из графической функции. Блок-схемы в графических функциях должны полностью содержаться в функции.
Диагностический уровень: Ошибка.
Решение: Удалите ввод перехода или выход из графической функции.
Transition Loops Outside Natural Parent
Проблема: Если переход выходит за пределы родительского состояния между источником и местом назначения, график выполняет exit
и entry
действия родительского состояния перед целевым состоянием становятся активными.
Диагностический уровень: Зависит от Перехода параметра конфигурации вне естественного родительского элемента (Simulink).
Решение: Переместите переход так, чтобы он содержался в родительском состоянии.
Transition Shadowing
Проблема: Когда безусловный переход выполняется перед другими исходящими переходами от того же источника он препятствует тому, чтобы другие переходы выполнились.
Диагностический уровень: Зависит от параметра конфигурации Недостижимый путь к выполнению (Simulink).
Решение: Создайте не больше, чем один безусловный переход от каждого состояния или соединение. Явным образом укажите, что безусловный переход выполняется после любых переходов с условиями. Для получения дополнительной информации смотрите Порядок Оценки Перехода.
Unconditional Path Out of State with During Actions or Child States
Проблема: Безусловные переходы, выводящие из состояния, запрещают выполнение during
действия в состоянии и переходы по умолчанию к дочерним состояниям.
Диагностический уровень: Зависит от Перехода параметра конфигурации вне естественного родительского элемента (Simulink).
Решение: Добавьте условие в переход или удалите во время действий и дочерних состояний от состояния.
Cycle Contains Transitions with Transition Actions
Проблема: Циклы не должны содержать переходы с действиями перехода.
Диагностический уровень: Ошибка.
Решение: Удалите действие перехода или удалите цикл путем удаления перехода.
Invalid History Junction
Проблема: соединением истории является invalid когда:
Соединение истории содержится в уровне графика иерархии.
Соединение истории содержится в состоянии с параллелью (AND) разложение.
Соединение истории содержится в графической функции.
Существует несколько соединений истории, содержавшихся в том же состоянии.
Соединение истории является источником перехода.
Диагностический уровень: Ошибка.
Решение: Удалите соединение истории из уровня графика иерархии, состояния с параллелью (AND) разложение или графическая функция. Удалите все кроме одного соединения истории от состояния. Переместите источник перехода в соединительное соединение или состояние. Для получения дополнительной информации смотрите Действие состояния Записи при помощи Соединений Истории.
Junction Has No Unconditional Escape from Cycle
Проблема: соединение должно иметь безусловный путь к Escape от цикла до состояния или завершающего работу соединения.
Диагностический уровень: Ошибка.
Решение: Создайте безусловный путь от соединения до состояния или завершающего работу соединения.
Unexpected Backtracking
Проблема: Неожиданное отслеживание в обратном порядке потока управления может произойти, когда несколько путей к переходу от того же исходного вывода до соединения и соединения не имеют безусловного пути к состоянию или завершающему работу соединению.
Диагностический уровень: Зависит от параметра конфигурации Неожиданное отслеживание в обратном порядке (Simulink).
Решение: Создайте безусловный путь от соединения до состояния или завершающего работу соединения. Для получения дополнительной информации смотрите Отслеживание в обратном порядке в Блок-схемах.
Например, подсвеченное соединение в этом графике не имеет безусловного пути к переходу, чтобы утвердить A
. Если ConditionA
и ConditionB
верны и ConditionC
является ложным, отслеживание в обратном порядке графика к первому соединению в пути многократно. В результате график выполняет три действия условия.
Чтобы постараться не отслеживать в обратном порядке, объедините условия и создайте безусловный путь от второго соединения до целевого состояния. После изменения график выполняет только одно действие условия.
Unreachable Junction
Проблема: соединением является unreachable, когда никакой допустимый путь к выполнению не приводит к нему.
Диагностический уровень: Зависит от параметра конфигурации Недостижимый путь к выполнению (Simulink).
Решение: Соедините недостижимый перекресток с переходом от достижимого состояния или соединение.
Function is Unused
Проблема: функцией является unused когда график, когда нет никаких операторов, которые вызывают функцию.
Диагностический уровень: Предупреждение.
Решение: Вызовите функцию от состояния или действия перехода или от другой функции.
Invalid Use of Keywords as Function Arguments
Проблема: функциональное определение использует зарезервированное слово в качестве аргумента.
Диагностический уровень: Ошибка.
Решение: Переименуйте аргумент в функцию. Для списка зарезервированных слов см. Инструкции для Именования Объектов Stateflow.