文档

在编辑期间检测建模错误

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

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

管理编辑时检查

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

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

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

晃来晃去的过渡

每个转换必须有一个有效的目标状态或连接。要解决此问题,请将转换连接到状态或连接。有关更多信息,请参见转换

诊断配置参数:执行路径不可达(金宝app模型)

默认转换缺失

在具有排他(or)分解和至少两个子状态或连接的图表或状态中,需要一个默认转换来指示执行开始的位置。要解决此问题,请通过添加默认转换来指定初始状态。有关更多信息,请参见默认的转换

诊断水平:错误

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

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

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

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

有关更多信息,请参见默认的转换

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

包含一个状态

因为图形化函数完全在一个时间步中执行,所以它们不能包含任何状态。要解决这个问题,请将状态替换为连接。有关更多信息,请参见通过定义图形化函数重用逻辑模式

诊断水平:错误

无效的默认转换路径

默认转换路径不能退出父状态。要解决此问题,请修改默认转换路径,使其保持在父状态中。有关更多信息,请参见默认的转换

诊断水平:错误

无效的历史连接

历史节点记录了超状态下的次状态的活动。历史连接在以下情况下无效:

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

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

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

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

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

有关更多信息,请参见使用历史连接记录状态活动

诊断水平:错误

无效的十字路口

状态流编辑器中的状态和连接不能重叠。要解决此问题,请通过分离状态和连接来避免交叉。

诊断水平:错误

无效的过渡交叉到图形函数

转场不能输入图形函数。状态流图从状态操作或转换调用图形函数。要解决此问题,请删除进入图形化函数的转换。有关更多信息,请参见通过定义图形化函数重用逻辑模式

诊断水平:错误

图形函数的无效转换

转场不能退出图形函数。图形化函数中的流程图必须完全包含在函数中。若要解决此问题,请删除退出图形化函数的转换。有关更多信息,请参见通过定义图形化函数重用逻辑模式

诊断水平:错误

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

函数定义使用保留关键字作为参数。要解决此问题,请将参数重命名为函数。有关保留关键字的列表,请参见状态流对象命名规则

诊断水平:错误

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

具有并行(and)分解的图表和状态不支持监视叶状态或子状态活动,因为并行基态是同时活动的。金宝app要解决这个问题,请打开属性检查器或模型资源管理器。清除创建用于监视的输出复选框或选择自我的活动在下拉列表中。有关更多信息,请参见通过活动状态数据监视状态活动

诊断水平:警告

对象包含语法错误

在状态或转换中,操作或条件不遵循语法规则。状态流编辑器用红色波浪线强调语法错误。有关更多信息,请参见转换标签符号而且状态标签

诊断水平:错误

请注意

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

在此路径上,转换动作先于条件动作

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

例如,假设ConditionA而且ConditionB是真的。

从状态执行转换路径一个B如下顺序:

  • 状态一个是活跃的。

  • 图表评估ConditionA

  • 图表评估ConditionB

  • 图表执行ConditionAction2

  • 状态一个变得不活跃。

  • 图表执行TransitionAction1

  • 状态B变得活跃。

结果,ConditionAction2发生之前TransitionAction1

要提高图表的清晰度,请将过渡操作放在路径上的最后一个条件操作之后。

诊断配置参数:在条件操作之前指定的转换操作(金宝app模型)

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

在具有并行(and)分解的图表和状态中,从基态到基态或从基态到基态的转换导致所有兄弟状态变为活动状态或不活动状态。要解决此问题,请删除转换或将父状态分解更改为排他(or)。有关更多信息,请参见状态分解

诊断水平:警告

过渡跨越平行状态

独立状态流图不支持跨越并行状态边界的转换。金宝app要解决此问题,请删除进入或退出并行状态的转换。

诊断水平:错误

自然父层外的过渡循环

如果源和目标之间的转换超出了父状态,则父状态的退出和进入操作将在目标状态变为活动之前执行。

例如,考虑这个图表中突出显示的过渡。

当这个转换激活时,状态操作将按以下顺序执行:

  • 退出国家行动B

  • 退出国家行动一个

  • 条目国家行动一个

  • 条目国家行动C

防止图表退出和重新进入状态一个,移动转换,使其包含在状态中一个

诊断配置参数:脱离自然父母的过渡(金宝app模型)

转换跟踪

当无条件转换在来自同一源的其他传出转换之前执行时,它将阻止其他转换的执行。避免过渡阴影:

  • 从每个状态或连接创建的无条件转换不超过一个。

  • 显式指定无条件转换在任何带有条件的转换之后执行。

有关更多信息,请参见过渡评估令

诊断配置参数:执行路径不可达(金宝app模型)

操作期间或子状态的无条件路径出状态

无条件转换导致的状态抑制:

  • 执行状态中的动作。

  • 默认转换为子状态。

要解决此问题,请添加转换条件。

诊断配置参数:脱离自然父母的过渡(金宝app模型)

意想不到的回溯

当以下条件为真时,控制流可能会发生意外的回溯:

  • 结没有到状态或终止结的无条件过渡路径。

  • 共享一个源的多个转换路径导致连接。

有关更多信息,请参见在流程图中回溯

例如,假设ConditionA而且ConditionB都是真实的ConditionC是假的。

然后执行到状态的默认转换路径一个如下顺序:

  • 默认转换指向第一个连接。

  • 图表评估ConditionA.因为这个条件为真,所以执行图表Action1然后移动到第二个路口。

  • 图表评估ConditionC.由于这个条件为假,图表将返回到第一个结点。

  • 图表评估ConditionB.因为这个条件为真,所以执行图表Action2然后移动到第二个路口。

  • 图表评估ConditionC.由于这个条件为假,图表将返回到第一个结点。

  • 图表执行Action3

  • 状态一个变得活跃。

结果,图表执行三个条件操作。

为了避免回溯,可以结合这些条件并创建从第二个结点到目标状态的无条件路径。

诊断配置参数:意想不到的回溯(金宝app模型)

不可达状态或不可达连接

状态或结点是遥不可及的当没有有效的执行路径指向它时。要解决此问题,请将不可达状态或结与可达状态或结的转换连接起来。

诊断配置参数:执行路径不可达(金宝app模型)

未使用的函数

函数是未使用的当一个图表没有语句时调用该函数。要解决此问题,请从状态或转换操作或从另一个函数调用该函数。

诊断水平:警告

相关的话题