主要内容

在编辑期间检测建模错误

启用编辑时间检查时,状态流®编辑器在您处理图表时检测潜在的错误和警告。通过在设计过程的早期修复这些问题,可以避免编译时或运行时警告和错误。

Stateflow编辑器以红色(错误)或橙色(警告)突出显示违反编辑时间检查的对象。当您指向高亮显示的对象并单击错误或警告标记时,工具提示将显示详细信息和可能的修复。

管理编辑时间检查

默认情况下,编辑时检查和语法错误高亮显示是启用的。要禁用编辑时检查,请在调试选项卡上,清晰的诊断>编辑时间错误和警告复选框。

属性上具有关联诊断配置参数的编辑时检查诊断>状态流对话框中的。

通过将这些编辑时间检查的配置参数值设置为,可以控制这些编辑时间检查的诊断操作级别错误,警告没有一个.当更改配置参数的设置时,相应编辑时检查的诊断级别也会更改。例如,如果您设置遥不可及的执行路径配置参数没有一个,则状态流编辑器不会突出悬空转换、转换阴影或不可达状态。

编辑状态和子图表上的时间检查

原子子图包含状态操作

  • 问题:原子子图上不支持状态操作。金宝app

  • 诊断级别:错误。

  • 解决方案:删除状态操作或将它们移动到原子子图的子状态。

    包含状态操作的原子子图。

缺少默认过渡

  • 问题:在具有互斥(or)分解和至少两个子状态或结点的图表或状态中,需要使用默认转换来指示执行开始的位置。

  • 诊断级别:错误。

  • 解决方案:通过添加默认转换来指定初始状态。有关更多信息,请参见默认的转换

    没有默认过渡的图表。

图形函数包含状态

  • 问题:因为图形函数完全在一个时间步骤中执行,所以它们必须不包含任何状态。

  • 诊断级别:错误。

  • 解决方案:将状态替换为连接。有关详细信息,请参阅通过定义图形函数重用逻辑模式

    包含状态的图形函数。

无效的十字路口

  • 问题:状态和连接在Stateflow编辑器中不得重叠。

  • 诊断级别:错误。

  • 解决方案:通过分离状态和交叉点来避免交叉。

    无效的交叉状态。

监测叶或子状态并行状态的活动

  • 问题:具有并行(and)分解的图表和状态不支持监视叶状态或子状态活动,因为并行子状态是同时活动的。金宝app

  • 诊断级别:警告。

  • 解决方案:打开属性检查器或模型资源管理器。清除创建用于监视的输出复选框或选择自我活动从下拉列表中。有关更多信息,请参见通过活动状态数据监视状态活动

    监视子状态活动的状态中的并行子状态。

State包含语法错误

  • 问题:状态操作不遵循statflow语法规则。状态流编辑器用红色波浪线下划线语法错误。另请参阅转换包含语法错误

  • 诊断级别:错误。

  • 解决方案:更正状态操作中的语法错误。有关详细信息,请参阅国家标签

    包含语法错误的状态。

    笔记

    在父图表中,有语法错误的子图表以红色突出显示,错误标记指示语法问题。在subchart编辑器中,语法错误以红色下划线,但没有指示问题的标记。

遥不可及的状态

  • 问题:一个国家是遥不可及当没有有效的执行路径指向它时。

  • 诊断级别:取决于配置参数遥不可及的执行路径(金宝app模型)

  • 解决方案:将不可达状态与可达状态或结的转换连接起来。

    包含不可达状态的图表。

编辑时间检查转换

晃来晃去的过渡

  • 问题:每个转换必须有一个有效的目标状态或结。

  • 诊断级别:取决于配置参数遥不可及的执行路径(金宝app模型)

  • 解决方案:将转换连接到一个状态或结点。有关更多信息,请参见过渡

    包含悬空转换的图表。

默认转换路径不会在状态中终止

  • 问题:在具有排他性(or)分解和至少一个子状态的图表或状态中:

    • 沿着默认转换的每一条路径都必须通向一个子状态。

    • 必须有一个不受条件保护或不受事件触发的默认转换路径。

  • 诊断级别:取决于配置参数没有无条件的默认转换(金宝app模型)

  • 解决方案:终止子状态中沿默认转换的每条路径。确保一个默认转换路径不受条件保护或由事件触发。

    没有到状态的无条件默认转换路径的图表。

无效的默认转换路径

  • 问题:默认转换路径不能退出父状态。

  • 诊断级别:错误。

  • 解决方案:修改默认转换路径,使其保持在父状态内。

    带有无效默认转换路径的图表。

转换包含语法错误

  • 问题:在转换中,条件或动作不遵循statflow语法规则。状态流编辑器用红色波浪线下划线语法错误。另请参阅State包含语法错误

  • 诊断级别:错误。

  • 解决方案:纠正转换条件或动作中的语法错误。有关更多信息,请参见转换标签

    包含语法错误的转换。

在此路径上,转移操作位于条件操作之前

  • 问题:当带有转换动作的转换之后是带有条件动作的转换时,这些动作不会按照转换的顺序执行。当关联条件被评估为true时,状态流程图执行条件操作。相反,图表仅在完全执行转换路径时才执行转换操作。因此,图表采用转换路径,条件操作发生在转换操作之前。

  • 诊断级别:取决于配置参数在条件动作之前指定的转换动作(金宝app模型)

  • 解决方案:将转换操作放在路径上最后一个条件操作之后。

    转换路径,其中转换操作先于条件操作。

转换以并行状态开始或结束

  • 问题:在具有并行(and)分解的图表和状态中,所有兄弟子状态同时是活动的或不活动的。

  • 诊断级别:警告。

  • 解决方案:删除转换或将父状态的分解更改为exclusive (or)。

    以并行状态开始或结束的转换。

过渡连接到长方体

  • 问题:转换只能连接状态和连接。

  • 诊断级别:错误。

  • 解决方案:移动或删除附加到长方体的过渡。

    带有连接到方框的过渡的图表。

过渡跨越平行态

  • 问题:独立状态流图不支持跨越并行状态边界的转换。金宝app

  • 诊断级别:错误。

  • 解决方案:删除进入或离开并行状态的转换。

    带有跨越平行状态边界的转换的独立图表。

转换进入或退出图形功能

  • 问题:转换不能进入或退出图形函数。图形函数中的流程图必须完全包含在函数中。

  • 诊断级别:错误。

  • 解决方案:删除进入或退出图形函数的转换。

    包含进入和退出图形函数的转换的图表。

过渡循环外的自然父

  • 问题:如果源和目标之间的转换超出父状态,图表将执行退出条目在目标状态变为活动状态之前父状态的操作。

  • 诊断级别:取决于配置参数自然父代以外的过渡(金宝app模型)

  • 解决方案:移动转换,使其包含在父状态中。

    子状态之间的过渡,超出了父状态的边界。

转换跟踪

  • 问题:当一个无条件转换在来自同一源的其他传出转换之前执行时,它将阻止其他转换的执行。

  • 诊断级别:取决于配置参数遥不可及的执行路径(金宝app模型)

  • 解决方案:从每个状态或结点创建一个以上的无条件转换。显式指定无条件转换在有条件的任何转换之后执行。有关更多信息,请参见评价秩序的过渡

    在这个图表中,无条件的转变掩盖了条件的转变。

无条件路径脱离状态与在行动或儿童状态

  • 问题:引出状态的无条件转换将禁止执行状态中的操作以及到子状态的默认转换。

  • 诊断级别:取决于配置参数自然父代以外的过渡(金宝app模型)

  • 解决方案:向转换添加条件或在操作期间从状态中移除子状态。

    图中显示了一个带有during actions的状态的转换和另一个带有子状态的状态的转换。

编辑时间检查连接

循环包含带有转换操作的转换

  • 问题:周期不应该包含带有转换操作的转换。

  • 诊断级别:错误。

  • 解决方案:删除转换操作或通过删除转换来删除循环。

    一个循环中带有转换动作的流程图。

无效的历史结

  • 问题:历史交叉点是无效的当:

    • 历史连接包含在层次结构的图表级别中。

    • 历史连接包含在并行(AND)分解的状态中。

    • 历史连接包含在一个图形函数中。

    • 在同一状态中包含着多个历史节点。

    • 历史的交汇是过渡的源头。

  • 诊断级别:错误。

  • 解决方案:从层次结构的图表级别、具有并行(和)分解的状态或图形功能中删除历史连接。从状态中删除除一个历史交叉点以外的所有历史交叉点。将转换源移动到连接连接或状态。有关详细信息,请参阅使用历史连接记录状态活动

    包含无效历史连接的图表。

Junction没有无条件的脱离循环

  • 问题:交叉点必须具有从循环到状态或终止交叉点的无条件转义路径。

  • 诊断级别:错误。

  • 解决方案:创建从结点到状态结点或终止结点的无条件路径。

    没有无条件逃离循环的结点。

意想不到的回溯

  • 问题:当来自同一源的多条转换路径通向某个结点,且该结点没有通往某个状态或终止结点的无条件路径时,可能会发生控制流的意外回溯。

  • 诊断级别:取决于配置参数意外回溯(金宝app模型)

  • 解决方案:创建从结点到状态结点或终止结点的无条件路径。有关更多信息,请参见流程图中的回溯

    例如,这个图表中突出显示的连接点没有到状态的无条件转换路径A.. 如果ConditionAConditionB是真,ConditionC为false时,图表将多次回溯到路径中的第一个路口。因此,图表执行三个条件操作。

    图表带有意想不到的回溯。

    为了避免回溯,可以结合这些条件,创建一条从第二个结点到目标状态的无条件路径。更改之后,图表只执行一个条件操作。

    没有意外回溯的图表。

不可达结

  • 问题:一个结遥不可及当没有有效的执行路径指向它时。

  • 诊断级别:取决于配置参数遥不可及的执行路径(金宝app模型)

  • 解决方案:用从可达状态或结的转换连接不可达结。

    包含不可达结的图表。

对函数的编辑时间检查

函数是未使用的

  • 问题:函数是未使用当图表中没有语句时调用该函数。

  • 诊断级别:警告。

  • 解决方案:从状态、转换操作或其他函数调用函数。

    包含未使用函数的图表。

无效使用关键字作为函数参数

  • 问题:函数定义使用保留关键字作为参数。

  • 诊断级别:错误。

  • 解决方案:将参数重命名为函数。有关保留关键字的列表,请参见命名Stateflow对象的准则

    使用保留关键字作为参数的函数。

相关的话题