主要内容

在编辑期间检测建模错误

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

Stateflow Editor以红色(错误)或橙色(警告)突出显示违反编辑时检查的对象。当指向突出显示的对象并单击错误或警告徽章时,工具提示将显示详细信息和可能的修复方法。

管理编辑时检查

默认情况下,编辑时检查和语法错误突出显示是启用的。要禁用编辑时检查,请在调试选项卡,清除诊断>编辑时错误和警告复选框。也可以使用edittime.setDisplayIssues(万博1manbetx模型)

属性上具有关联诊断配置参数的编辑时检查诊断>Stateflow窗格中的“配置参数”对话框。

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

状态和子图的编辑时检查

原子子图包含状态操作

  • 问题:原子子图不支持状态操作。万博1manbetx

  • 诊断水平:错误。

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

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

默认转换缺失

  • 问题:在具有排他(or)分解和至少两个子状态或连接的图表或状态中,需要一个默认转换来指示执行开始的位置。

  • 诊断水平:错误。

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

    没有默认转换的图表。

图形化函数包含一个状态

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

  • 诊断水平:错误。

  • 解决方案:用连接替换状态。有关更多信息,请参见通过定义图形化函数重用逻辑模式

    包含状态的图形化函数。

无效的十字路口

  • 问题:状态流编辑器中的状态和连接不能重叠。

  • 诊断水平:错误。

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

    无效的状态交叉。

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

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

  • 诊断水平:警告。

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

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

状态包含语法错误

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

  • 诊断水平:错误。

  • 解决方案:纠正状态操作中的语法错误。有关更多信息,请参见定义状态中的动作

    包含语法错误的状态。

    请注意

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

遥不可及的状态

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

  • 诊断水平:取决于配置参数执行路径不可达(万博1manbetx模型)

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

    包含不可访问状态的图表。

转换的编辑时检查

晃来晃去的过渡

  • 问题:每个转换必须有一个有效的目的地。

  • 诊断水平:取决于配置参数执行路径不可达(万博1manbetx模型)

  • 解决方案:将转换连接到状态、连接或端口。有关更多信息,请参见运行模式转换

    包含悬垂转换的图表。

默认转换路径不会在某个状态下终止

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

    • 默认转换路径的每个分支都必须指向一个子状态。

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

  • 诊断水平:取决于配置参数没有无条件的默认转换(万博1manbetx模型)

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

    图表中没有无条件的默认转换分支到状态。

无效的默认转换路径

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

  • 诊断水平:错误。

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

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

转换包含语法错误

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

  • 诊断水平:错误。

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

    包含语法错误的转换。

沿着这条路径,转换操作在条件操作之前

  • 问题:当带有转换操作的转换之后紧接着带有条件操作的转换时,操作不会按照转换的顺序执行。当关联的条件被计算为真时,状态流程图将执行条件操作。相反,图表仅在完全执行转换路径时执行转换操作。因此,图表采用转换路径,条件操作发生在转换操作之前。

  • 诊断水平:取决于配置参数在条件操作之前指定的转换操作(万博1manbetx模型)

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

    转换路径,其中转换操作在条件操作之前。

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

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

  • 诊断水平:警告。

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

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

Transition连接到一个盒子

  • 问题:转换必须只连接到状态和连接。

  • 诊断水平:错误。

  • 解决方案:移动或删除附加到框上的转场。

    带有连接到方框的转场的图表。

过渡跨越平行状态

  • 问题:MATLAB独立图表®不支持跨越并行万博1manbetx状态边界的转换。

  • 诊断水平:错误。

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

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

转换进入或退出图形函数

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

  • 诊断水平:错误。

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

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

转换未连接到入口/出口端口

  • 问题:转换没有连接到源或目标附近的入口或出口端口。

  • 诊断水平:警告。

  • 解决方案:将转换连接到端口,或将转换源或目标移动到不同的位置。

    位于默认转换的目标点附近的入口端口。

转换循环外部自然父

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

  • 诊断水平:取决于配置参数脱离自然父母的过渡(万博1manbetx模型)

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

    超出父状态边界的子状态之间的转换。

转换跟踪

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

  • 诊断水平:取决于配置参数执行路径不可达(万博1manbetx模型)

  • 解决方案:从每个状态或连接创建的无条件转换不超过一个。显式指定无条件转换在任何带有条件的转换之后执行。有关更多信息,请参见过渡评估令

    用无条件转换遮蔽条件转换的图表。

在操作期间或子状态中无条件地路径出状态

  • 问题:状态的无条件转换会阻止状态中的操作以及子状态之间的转换。

  • 诊断水平:取决于配置参数脱离自然父母的过渡(万博1manbetx模型)

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

    在图表中使用一个过渡到一个状态,其中包含during动作,另一个过渡到一个状态,其中包含子状态。

连接的编辑时检查

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

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

  • 诊断水平:错误。

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

    循环中带有过渡动作的流程图。

无效的历史连接

  • 问题:历史的转折点是无效的当:

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

    • 历史节点包含在具有并行(AND)分解的状态中。

    • 历史节点包含在图形函数中。

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

    • 历史交叉点是转型的源头。

  • 诊断水平:错误。

  • 解决方案:从层次结构的图表级别、具有并行(AND)分解的状态或图形化函数中删除历史节点。除去所有的历史路口,只留下一个。将转换源移动到连接结或状态。有关更多信息,请参见使用历史连接恢复先前的次状态活动

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

Junction不能无条件地逃离循环

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

  • 诊断水平:错误。

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

    没有从循环中无条件逃脱的结。

意想不到的回溯

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

  • 诊断水平:取决于配置参数意想不到的回溯(万博1manbetx模型)

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

    例如,这个图表中突出显示的结没有无条件的状态路径一个.如果ConditionA而且ConditionB都是真实的ConditionC为false,则图表将多次返回到路径中的第一个结。结果,图表执行三个条件操作。

    图表与意外回溯。

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

    没有意外回溯的图表。

遥不可及的结

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

  • 诊断水平:取决于配置参数执行路径不可达(万博1manbetx模型)

  • 解决方案:使用来自可达源的转换连接不可达结。

    包含不可到达连接的图表。

函数的编辑时检查

函数未使用

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

  • 诊断水平:警告。

  • 解决方案:从状态或转换操作或从另一个函数调用该函数。

    包含未使用函数的图表。

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

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

  • 诊断水平:错误。

  • 解决方案:将参数重命名为函数。有关保留关键字的列表,请参见命名状态流对象的指南

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

进入和退出端口的编辑时检查

海图顶部的入口或出口交界处

  • 问题:入口和出口连接仅在排他(OR)状态和原子子图中受支持。万博1manbetx

  • 诊断水平:错误。

  • 解决方案:将连接移动到独占(OR)状态或原子子图或删除该连接。

    图表顶部的入口和出口连接。

入口连接必须具有到某个状态的无条件路径

  • 问题:入口结必须有一条转换路径,该路径不受条件保护,也不由事件触发。

  • 诊断水平:错误。

  • 解决方案:添加从入口结点到状态的无条件路径。

    连接到状态的单个条件路径的入口结。

入口连接必须有输出跃迁

  • 问题:入口结不连接到传出转换路径。

  • 诊断水平:错误。

  • 解决方案:将过渡附加到入口结或删除结。

    不连接到过渡路径的入口结。

退出端口必须具有无条件的状态路径

  • 问题:出口端口必须有一个转换路径,该路径不受条件保护,也不由事件触发。

  • 诊断水平:错误。

  • 解决方案:添加从退出端口到某个状态的无条件路径。

    连接到某个状态的单个条件路径的退出端口。

出口端口必须具有传出转换

  • 问题:退出端口不连接到传出转换路径。

  • 诊断水平:错误。

  • 解决方案:将转换附加到出口端口或删除端口。

    不连接转换路径的退出端口。

无效的入口或出口连接

  • 问题:入口和出口连接仅在排他(OR)状态和原子子图中受支持。万博1manbetx

  • 诊断水平:错误。

  • 解决方案:将连接移动到独占(OR)状态或原子子图或删除该连接。

    并行(and)状态的入口和出口连接。

缺少入口或出口连接

  • 问题:入口或出口端口必须具有匹配的入口或出口连接。

  • 诊断水平:错误。

  • 解决方案:删除端口或创建具有相同标签的匹配连接。

    没有匹配连接的入口和出口端口。

具有相同标签的多个入口或出口连接

  • 问题:同一父节点中的入口和出口连接必须具有唯一的标签。

  • 诊断水平:错误。

  • 解决方案:删除其中一个连接或更改其中一个标签。

    两个有相同标签in1的入口连接。

从入口结点开始的路径包含一个终端结点

  • 问题:从一个入口结点出发的每条路径都必须通向一个状态。

  • 诊断水平:错误。

  • 解决方案:用状态替换终端结。

    连接到终端结的入口结。

从出口端口的路径包含一个终端结

  • 问题:从出口端口出发的每条路径都必须通向一个状态。

  • 诊断水平:错误。

  • 解决方案:用状态替换终端结。

    连接到终端结的出口端口。

从入口结点到历史结点的过渡路径

  • 问题:从入口节点的转换路径不能连接到历史节点。

  • 诊断水平:错误。

  • 解决方案:删除从入口结点到历史结点的路径。

    连接到历史结点的入口结点。

从内部转换到出口结的转换路径

  • 问题:内部转换路径不能连接到出口结。

  • 诊断水平:错误。

  • 解决方案:删除从内部过渡到出口结的路径。

    状态,该状态包含到出口端口的内部转换。

从入口结点到出口结点的过渡路径必须包含在父结点中

  • 问题:从入口连接开始或结束于出口连接的转换路径必须包含在父状态中。

  • 诊断水平:错误。

  • 解决方案:将转换路径修改为包含在父状态中。

    在连接到出口结之前退出并重新进入状态的转换路径。

不可达端口或连接

  • 问题:端口或连接是遥不可及的当没有有效的执行路径指向它时。

  • 诊断水平:取决于配置参数执行路径不可达(万博1manbetx模型)

  • 解决方案:将不可达的入口端口或出口连接到来自可达源的转换。

    包含不可到达的入口连接和端口的图表。

相关的话题