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