状态流在编辑时检测的建模规则

Stateflow®编辑器通过以红色或橙色突出显示对象来显示潜在的错误和警告。为了显示语法错误,Stateflow用红色波浪线突出显示错误。通过在设计图表时修复这些问题,可以避免潜在的编译或运行时警告和错误。要查看详细信息和可能的修复,请将光标放在对象上并单击徽章。

要关闭编辑时间检查和语法错误突出显示,请清除Display > Error & Warnings。更改相应配置参数的诊断级别时,编辑时诊断级别也会更改。例如,如果将“配置参数”对话框中Diagnostics > Stateflow 窗格上的“Unreachable execution path”配置参数设置为无,则状态流不会在编辑器中突出显示转换阴影。并非所有编辑时检查都有相应的配置参数。

对象包含语法错误

状态或转换中的动作或条件的表示法不遵循语法规则。违规行为被突出显示为错误。

危险的转换

悬空转换未连接到目标对象。转换必须具有有效的源状态或连接以及有效的目标状态或连接。
通过在 Diagnostics > Stateflow > Unreachable execution path 参数来控制诊断操作的级别。

Unreachable state

如果没有通向某个状态的有效执行路径,则无法访问该状态。通过将该状态与可到达状态或连接点的转换连接起来,使该状态成为可到达的目的地。
在这里插入图片描述
通过在 Diagnostics > Stateflow > Unreachable execution path 参数来控制诊断操作的级别。

转换阴影

当图表包含源自某个源的无条件转换,阻止来自同一源的其他转换执行时,就会发生转换阴影。
在这里插入图片描述为了避免转换阴影,请为来自状态或连接的每组传出转换创建不超过一个无条件的转换。明确指定无条件转换为比任何有条件的转换更低的求值顺序。

在这里插入图片描述要控制诊断操作的级别,请在“模型配置参数”对话框中设置Diagnostics > Stateflow > Unreachable execution path 参数。
如果可能,单击Fix for Stateflow以切换转换的执行顺序。您可以从Edit 菜单中撤消应用的修复。

无效的默认转换路径

当默认转换的执行路径退出父状态时,会发生无效的默认转换。创建一个默认转换,其中包含父状态中的执行路径。

在这里插入图片描述

无条件路径脱离状态,包括动作或子状态

状态的无条件转换会阻止Stateflow在该状态的操作期间执行或默认转换到子状态。
在这里插入图片描述要控制诊断操作的级别,请在“模型配置参数”对话框中设置Diagnostics > Stateflow > Transition外部自然父参数。

图形函数包含一个状态
调用时,图形函数必须完全执行。因此,图形函数不能包含状态。

在这里插入图片描述缺少默认转换
具有独占(or)分解的图表或状态需要默认转换,以指示默认情况下哪个状态或连接进入执行。
在这里插入图片描述当你点击Fix, Stateflow将默认转换添加到左上角的state或节点。

没有无条件默认转换

在具有异或分解的图表或状态中,必须有一个无条件的默认转换。如果沿转换的一条路径保持无条件,则可以包含多个交叉点和转换。

在这里插入图片描述要控制诊断操作的级别,请在“模型配置参数”对话框中设置Diagnostics > Stateflow > No unconditional default transitions参数。

意外回溯

在以下条件下,交叉口可能会出现控制流的意外回溯:
该结没有无条件的转换路径到状态或终止结。
共享一个源的多个转换路径通向该结点。

在这里插入图片描述
通过在“模型配置参数”对话框中设置 Diagnostics > Stateflow > Unexpected backtracking参数来控制诊断操作的级别。
单击“Fix”时,Stateflow会添加从回溯连接到终止连接的转换。您可以从“Edit”菜单中撤消应用的修复。

在自然父状态之外的转换循环
当转换在源和目标之间的父状态之外循环时,父状态的退出和进入操作会在目标状态变为活动状态之前执行。通常,这种行为不是你想要的行为。例如:
状态B最初处于活动状态。
执行状态B退出操作。
状态A执行退出操作。
状态A执行输入操作。
执行状态C条目操作。
在这里插入图片描述
要使执行从状态B移动到状态C,而不退出和重新进入状态A,请移动转换,使其包含在状态A中。

在这里插入图片描述

转换操作先于条件操作

当路径上有一个转换动作,并且在接下来的转换中有一个条件动作时,这些动作不会按照转换的顺序执行。条件操作在前一个转换操作之前执行。条件操作在相关条件被评估为真时执行,而转换操作仅在转换路径完全执行时执行。
在此图中,如果条件A和条件B为真,则条件Action2在TransitionAction1之前执行。

在这里插入图片描述
执行顺序:
1 评估条件A。
2 如果为真,则评估条件B。
3 如果为true,则执行ConditionAction2。
4 退出状态A。
5 执行TranstionAction1。
6 进入状态B。

为了更加清晰,请将转换操作放在路径上的最后一个条件操作之后。

在这里插入图片描述

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

与并行状态之间的转换会导致所有兄弟并行状态变为活动或非活动状态。为了避免无意的行为,不要创建进入或退出并行状态的转换。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值