在编辑期间检测建模错误

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

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

管理编辑时间检查

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

此表列出了编辑时检查具有相关联的诊断配置参数的诊断>状态流“配置参数”对话框的窗格。

编辑时检查问题 诊断配置参数
党岭转型 无法到达的执行路径(万博1manbetxSimulink的)
默认转换路径不在状态中终止 无条件默认转换(万博1manbetxSimulink的)
过渡行动先于条件操作沿着这条道路 过渡动作状态下动作之前指定(万博1manbetxSimulink的)
自然父对象外的过渡循环 自然亲本以外的过渡(万博1manbetxSimulink的)
过渡阴影 无法到达的执行路径(万博1manbetxSimulink的)
无条件的输出路径状态与在操作或儿童的国家 自然亲本以外的过渡(万博1manbetxSimulink的)
意外回溯 意外回溯(万博1manbetxSimulink的)
无法到达的交界处 无法到达的执行路径(万博1manbetxSimulink的)

通过将这些编辑时间检查的配置参数值设置为错误,警告,或没有.当您更改设置的配置参数,为相应的编辑时检查诊断水平也会发生变化。例如,如果你设置了无法到达的执行路径配置参数到没有,则Stateflow编辑器不会突出显示悬挂的转换、转换阴影或无法访问的状态。

编辑状态的时间检查

无效的交集

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

  • 诊断级别:错误。

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

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

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

  • 诊断级别:警告。

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

对象包含语法错误

  • 问题:一个国家的行动不遵循Stateflow的语法规则。该Stateflow的编辑下划线语法错误用红色,波浪线。

  • 诊断级别:错误。

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

    注意

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

不可达

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

  • 诊断级别:取决于配置参数无法到达的执行路径(万博1manbetxSIMULINK)。

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

在转换编辑时间检查

党岭转型

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

  • 诊断级别:取决于配置参数无法到达的执行路径(万博1manbetxSIMULINK)。

  • 解决方案:连接过渡到一个国家或结。欲了解更多信息,请参阅过渡.

缺少默认转换

  • 问题:在图表或状态与独占(OR)分解和至少两个子状态或结,需要默认过渡,以指示执行的开始位置。

  • 诊断级别:错误。

  • 解决方案:通过添加默认转换指定初始状态。有关详细信息,请参见默认过渡.

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

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

    • 沿着默认过渡的每个路径必须导致子状态。

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

  • 诊断级别:取决于配置参数无条件默认转换(万博1manbetxSIMULINK)。

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

无效的默认转换路径

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

  • 诊断级别:错误。

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

无效的转换交叉成图形功能

  • 问题:转变不得进入图形功能。Stateflow图调用从政府行为或转换的图形功能。

  • 诊断级别:错误。

  • 解决方案:删除进入图形功能的转换。

对象包含语法错误

  • 问题:在转换中,条件或操作不遵循Stateflow语法规则。Stateflow编辑器用红色波浪线为语法错误加下划线。

  • 诊断级别:错误。

  • 解决方案:更正转换条件或操作中的语法错误。有关详细信息,请参见转移标签符号.

过渡行动先于条件操作沿着这条道路

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

  • 诊断级别:取决于配置参数过渡动作状态下动作之前指定(万博1manbetxSIMULINK)。

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

转型处于平行状态开始或结束

  • 问题:在具有并行(和)分解的图表和状态中,所有同级状态同时处于活动或非活动状态。

  • 诊断级别:警告。

  • 解决方案:卸下转变或改变亲本状态的分解,独占(OR)。

转换连接到框

  • 问题:转场只能连接状态和路口。

  • 诊断级别:错误。

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

过渡十字并行状态

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

  • 诊断级别:错误。

  • 解决方案:删除过渡交叉进入或离开平行状态。

转换进入或退出图形功能

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

  • 诊断级别:错误。

  • 解决方案:删除退出图形功能的转换。

自然父对象外的过渡循环

  • 问题:如果转换超出源和目标之间的父状态,则图表将执行出口进入目的地状态之前父状态的行动变得活跃。

  • 诊断级别:取决于配置参数自然亲本以外的过渡(万博1manbetxSIMULINK)。

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

过渡阴影

  • 问题:当前其他输出转移无条件转换执行从相同的源,它可以防止其它转变的执行。

  • 诊断级别:取决于配置参数无法到达的执行路径(万博1manbetxSIMULINK)。

  • 解决方案:从每个状态或连接创建不超过一个无条件转换。显式指定无条件转换在具有条件的任何转换之后执行。有关详细信息,请参见转型评价订购.

无条件的输出路径状态与在操作或儿童的国家

  • 问题:从状态引出的无条件转换禁止状态中的操作和默认转换为子状态。

  • 诊断级别:取决于配置参数自然亲本以外的过渡(万博1manbetxSIMULINK)。

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

在结编辑时间检查

周期包含与转换动作转换

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

  • 诊断级别:错误。

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

无效的历史结

  • 问题:历史交汇点是无效什么时候:

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

    • 历史结点被包含在并行(AND)分解的状态。

    • 历史结点包含的图形函数中。

    • 在同一状态中包含多个历史连接。

    • 历史结是一个过渡的来源。

  • 诊断级别:错误。

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

结已经从循环中没有无条件逃生

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

  • 诊断级别:错误。

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

意外回溯

  • 问题:在下列情况下,可能会发生控制流的意外回溯:

    • 从同一个源到一个连接点的多个过渡路径。

    • 结不具有的状态或终止结无条件路径。

  • 诊断级别:取决于配置参数意外回溯(万博1manbetxSIMULINK)。

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

    例如,此图表中突出显示的连接不具有到状态的无条件转换路径一个. 如果条件条件B是真实,条件如果为false,则图表将多次回溯到路径中的第一个交叉点。因此,图表执行三个条件操作。

    为了避免回溯,结合的条件,并创建从所述第二结点到目标状态的无条件的路径。变更后,图表执行的条件只有一个动作。

无法到达的交界处

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

  • 诊断级别:取决于配置参数无法到达的执行路径(万博1manbetxSIMULINK)。

  • 解决方案:连接不可达结与来自可达状态或结的过渡。

在功能编辑时间检查

函数未使用

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

  • 诊断级别:警告。

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

图形功能包含状态

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

  • 诊断级别:错误。

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

关键词的无效使用是作为函数的参数

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

  • 诊断级别:错误。

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

相关主题