我有一个类似于示例状态流的系统设置:
Condition1
发生,我们转到 Sub1
。如果 Condition3
发生的话,我们会回到 Test1
吗?同样,如果我们通过sub2
和Condition1
到达Condition2
,然后发生Condition4
,我们会回到Test1
吗?
您可以自己进行测试,将
ConditionX
变量定义为 Stateflow 模型的局部符号,以及一些您可以在逐步执行 Stateflow 评估时查看的变量 x
。在 Condition1
过渡处设置一个断点(右键单击该行,添加断点),然后运行模型以逐步执行它。
在我的屏幕截图中,我已将
ConditionX
名称缩短为 cX
。
简而言之,如果没有从
Test1
返回的状态转换,您将不会重新进入 Super
。控制将返回到 Super
状态(脱离 Sub1
状态),然后按照默认转换返回到 Sub1
。
所以如果
c1
和 c3are true,
c2` 为假。
Test1
,设置x=0
。Test1
过渡到 Super
,因为 c1
为真。Sub1
,设置x=1
。Super
,因为 c2
为 false(不转换为 Sub2
),但 c3
为 true。x=1
不再改变。如果
c2
为 true,那么您将过渡到 Sub2
,而不是上面的步骤 4。x=2
。
如果
c4
也为 true,那么您将从 Sub2
转换回 Super
,然后按照默认转换回到 Sub1
。
如果您想返回到
Test1
,则需要添加从 Super
到 Test1
的默认过渡。请注意,在这个简单的示例中,Condition1
始终为真,因此它会立即转换回Super
和Sub1
。