在编辑期间检测建模错误
当启用编辑时检查时,状态流®编辑器在处理图表时检测潜在错误和警告。通过在设计过程早期修复这些问题,可以避免编译时或运行时警告和错误。
Stateflow Editor将违反编辑时检查的对象突出显示为红色(用于错误)或橙色(用于警告)。当指向高亮显示的对象并单击错误或警告徽章时,工具提示将显示详细信息和可能的修复。
管理编辑时间检查
默认情况下,启用编辑时检查和语法错误高亮显示。要禁用编辑时检查,请在调试选项卡上,清晰的诊断>编辑时错误和警告复选框。也可以通过使用禁用编辑时检查edittime.setDisplayIssues
(模型).
对象上具有关联的诊断配置参数的编辑时检查诊断>Stateflow“配置参数”对话框中的“配置参数”。
编辑时间检查问题 | 诊断配置参数 |
---|---|
晃来晃去的过渡 | 遥不可及的执行路径(模型) |
默认转换路径不会在状态中终止 | 没有无条件的默认转换(模型) |
转换操作先于此路径上的条件操作 | 在条件操作之前指定的转换操作(模型) |
过渡循环外部的自然父 | 母体外的过渡(模型) |
转换跟踪 | 遥不可及的执行路径(模型) |
带有期间操作或子状态的无条件路径出状态 | 母体外的过渡(模型) |
意想不到的回溯 | 意想不到的回溯(模型) |
遥不可及的结 | 遥不可及的执行路径(模型) |
无法到达的端口或枢纽 | 遥不可及的执行路径(模型) |
遥不可及的状态 | 遥不可及的执行路径(模型) |
通过将这些编辑时检查的配置参数的值设置为,可以控制这些编辑时检查的诊断操作级别错误
,警告
,或没有一个
.当您更改配置参数的设置时,相应编辑时检查的诊断级别也会更改。例如,如果您设置遥不可及的执行路径配置参数没有一个
,则状态流编辑器不会突出显示悬空转换、转换阴影或不可达状态。
对州和子图的编辑时检查
原子子图包含状态操作
问题:原子子图不支持状态操作。
诊断水平:错误。
解决方案:删除状态操作或将其移动到原子子图的子状态。
缺少默认转换
问题:在具有排他(or)分解和至少两个子状态或连接的图表或状态中,需要一个默认转换来指示执行开始的位置。
诊断水平:错误。
解决方案:通过添加默认转换指定初始状态。有关更多信息,请参见使用默认转换指定初始子状态活动.
图形函数包含一个状态
问题:因为图形函数在单个时间步中完全执行,所以它们必须不包含任何状态。
诊断水平:错误。
解决方案:用连接替换状态。有关更多信息,请参见通过定义图形函数重用逻辑模式.
无效的十字路口
问题:状态流编辑器中的状态和连接不能重叠。
诊断水平:错误。
解决方案:通过分离状态和连接避免交叉。
监视并行状态的叶状态或子状态活动
问题:具有并行(and)分解的图表和状态不支持监视叶状态或子状态活动,因为并行子状态是同时活动的。
诊断水平:警告。
解决方案:打开属性检查器或者模型浏览器。清除为监视创建输出复选框或选择
自我的活动
在下拉列表中。有关更多信息,请参见通过活动状态数据监视状态活动.
状态包含语法错误
遥不可及的状态
问题:一个国家是遥不可及的当没有有效的执行路径指向它时。
诊断水平:取决于配置参数遥不可及的执行路径(模型).
解决方案:将不可达状态与来自可达源的转换连接起来。
转换的编辑时检查
晃来晃去的过渡
默认转换路径不会在状态中终止
问题:在具有排他(or)分解和至少一个子状态的图表或状态中:
默认转换路径的每个分支都必须指向一个子状态。
默认转换路径必须有一个不受条件保护或不由事件触发的分支。
诊断水平:取决于配置参数没有无条件的默认转换(模型).
解决方案:终止子状态中默认转换路径的每个分支。确保默认转换路径的一个分支不受条件保护或由事件触发。
无效的默认转换路径
问题:默认转换路径不能退出父状态。
诊断水平:错误。
解决方案:修改默认的转换路径,使其保持在父状态内。
转换包含语法错误
转换操作先于此路径上的条件操作
问题:当一个带有转换操作的转换后跟一个带有条件操作的转换时,操作不会按照转换的顺序执行。当关联的条件被计算为true时,状态流图执行条件操作。相反,图表仅在完全执行转换路径时执行转换操作。因此,图表采用一个转换路径,条件操作发生在转换操作之前。
诊断水平:取决于配置参数在条件操作之前指定的转换操作(模型).
解决方案:将转换操作置于路径上的最后一个条件操作之后。
转换以平行状态开始或结束
问题:在具有并行(and)分解的图表和状态中,所有的兄弟子状态同时是活跃的或不活跃的。
诊断水平:警告。
解决方案:删除转换或将父状态的分解更改为独占(or)。
过渡连接到一个盒子
问题:跃迁必须只连接到状态和连接。
诊断水平:错误。
解决方案:移动或删除附加到框上的转场。
跨越平行状态的过渡
问题:MATLAB中的独立图表®不支持跨越并行状态边界的转换。
诊断水平:错误。
解决方案:删除进入或离开并行状态的过渡。
过渡进入或退出图形功能
问题:转换不能进入或退出图形函数。图形函数中的流程图必须完全包含在函数内部。
诊断水平:错误。
解决方案:删除进入或退出图形功能的转换。
转换未连接到入口/出口端口
问题:转换没有连接到源或目的地附近的入口或出口端口。
诊断水平:警告。
解决方案:将转换连接到端口或将转换源或目标移动到不同的位置。
过渡循环外部的自然父
问题:如果转换超出源和目标之间的父状态,图表将执行
退出
而且条目
目的状态激活前父状态的动作。诊断水平:取决于配置参数母体外的过渡(模型).
解决方案:移动转换,使其包含在父状态中。
转换跟踪
带有期间操作或子状态的无条件路径出状态
问题:状态的无条件转换阻止了
在
状态中的操作以及子状态之间的转换。诊断水平:取决于配置参数母体外的过渡(模型).
解决方案:向转换添加条件,或在操作期间从状态中删除子状态。
连接的编辑时检查
循环包含带有转换操作的转换
问题:周期不应该包含具有转换操作的转换。
诊断水平:错误。
解决方案:删除转换动作或通过删除转换来删除循环。
无效的历史结
问题:历史的转折点是无效的当:
历史结点包含在层次结构的图表级别中。
历史节点包含在具有并行(AND)分解的状态中。
历史连接包含在一个图形函数中。
同一状态中包含多个历史连接。
历史结合点是过渡的根源。
诊断水平:错误。
解决方案:从层次结构的图表级别、具有并行(AND)分解的状态或图形函数中删除历史连接。除了一个历史枢纽,把所有历史枢纽都从该州移走。将转换源移动到连接结或状态。有关更多信息,请参见使用历史连接恢复先前的子状态活动.
Junction没有无条件地摆脱循环
问题:一个结点必须有一个从循环到状态或终止结点的无条件转义路径。
诊断水平:错误。
解决方案:创建一条从连接到状态或终止连接的无条件路径。
意想不到的回溯
遥不可及的结
问题:一个结遥不可及的当没有有效的执行路径指向它时。
诊断水平:取决于配置参数遥不可及的执行路径(模型).
解决方案:将不可达的结与来自可达源的转换连接起来。
函数的编辑时检查
函数是未使用的
问题:一个函数未使用的当图表中没有调用函数的语句时。
诊断水平:警告。
解决方案:从状态或转换操作或从另一个函数调用该函数。
无效地使用关键字作为函数参数
问题:函数定义使用保留关键字作为参数。
诊断水平:错误。
解决方案:将实参重命名为函数。有关保留关键字的列表,请参见命名状态流对象的指南.
进入和退出端口的编辑时检查
图表顶层的入口或出口交界处
问题:只有在排他(OR)状态和原子子图中才支持进入和退出连接。
诊断水平:错误。
解决方案:将结移动到独占(或)状态或原子子图或删除结。
入口连接必须有一个无条件的路径到一个状态
问题:入口结点必须有一条不受条件保护或不被事件触发的过渡路径。
诊断水平:错误。
解决方案:添加一条从入口结点到状态的无条件路径。
入口连接必须有出口跃迁
问题:入口结点没有连接到出站过渡路径。
诊断水平:错误。
解决方案:附加过渡到入口结或删除结。
退出端口必须具有到某个状态的无条件路径
问题:出口端口必须有一个不受条件保护或不被事件触发的转换路径。
诊断水平:错误。
解决方案:添加从退出端口到某个状态的无条件路径。
退出端口必须具有传出转换
问题:出口端口没有连接到出口转换路径。
诊断水平:错误。
解决方案:将转换附加到出口端口或删除端口。
无效的入口或出口连接
问题:只有在排他(OR)状态和原子子图中才支持进入和退出连接。
诊断水平:错误。
解决方案:将结移动到独占(或)状态或原子子图或删除结。
遗漏出入口路口
问题:入口或出口端口必须具有匹配的入口或出口连接。
诊断水平:错误。
解决方案:删除端口或创建一个具有相同标签的匹配连接。
具有相同标签的多个入口或出口连接
问题:同一父节点中的入口和出口连接必须具有唯一的标签。
诊断水平:错误。
解决方案:删除其中一个连接或更改其中一个标签。
从入口结点开始的路径包含一个终端结点
问题:从入口结点出发的每一条路径都必须通向一个状态。
诊断水平:错误。
解决方案:用状态替换终端结。
出口端口的路径包含终端连接
问题:从出口端口出发的每一条路径都必须通向一个状态。
诊断水平:错误。
解决方案:用状态替换终端结。
从入口结点到历史结点的过渡路径
问题:从入口结点的过渡路径不能连接到历史结点。
诊断水平:错误。
解决方案:删除从入口结点到历史结点的路径。
从内部过渡到出口结点的过渡路径
问题:内部过渡路径不能连接到出口结。
诊断水平:错误。
解决方案:移除从内部过渡到出口交界处的路径。
从入口结点到出口结点的过渡路径必须包含在父结点中
问题:从入口结点开始或到出口结点结束的转换路径必须包含在父状态中。
诊断水平:错误。
解决方案:修改要包含在父状态中的转换路径。
无法到达的端口或枢纽
问题:港口或枢纽是遥不可及的当没有有效的执行路径指向它时。
诊断水平:取决于配置参数遥不可及的执行路径(模型).
解决方案:将不可达的入口端口或出口连接到来自可达源的转换。