Simulink 转换和超级状态,您会回到外部状态吗?

问题描述 投票:0回答:1

我有一个类似于示例状态流的系统设置:

Sample Stateflow

Condition1
发生,我们转到
Sub1
。如果
Condition3
发生的话,我们会回到
Test1
吗?同样,如果我们通过
sub2
Condition1
到达
Condition2
,然后发生
Condition4
,我们会回到
Test1
吗?

matlab simulink state-machine stateflow
1个回答
0
投票

您可以自己进行测试,将

ConditionX
变量定义为 Stateflow 模型的局部符号,以及一些您可以在逐步执行 Stateflow 评估时查看的变量
x
。在
Condition1
过渡处设置一个断点(右键单击该行,添加断点),然后运行模型以逐步执行它。

在我的屏幕截图中,我已将

ConditionX
名称缩短为
cX

简而言之,如果没有从

Test1
返回的状态转换,您将不会重新进入
Super
。控制将返回到
Super
状态(脱离
Sub1
状态),然后按照默认转换返回到
Sub1

所以如果

c1
和 c3
are true,
c2` 为假。

  1. 默认转换为
    Test1
    ,设置
    x=0
  2. Test1
    过渡到
    Super
    ,因为
    c1
    为真。
  3. 默认转换为
    Sub1
    ,设置
    x=1
  4. 转换回
    Super
    ,因为
    c2
    为 false(不转换为
    Sub2
    ),但
    c3
    为 true。
  5. 重复步骤3.和4。
    x=1
    不再改变。

如果

c2
为 true,那么您将过渡到
Sub2
,而不是上面的步骤 4。
x=2

如果

c4
也为 true,那么您将从
Sub2
转换回
Super
,然后按照默认转换回到
Sub1

如果您想返回到

Test1
,则需要添加从
Super
Test1
的默认过渡。请注意,在这个简单的示例中,
Condition1
始终为真,因此它会立即转换回
Super
Sub1

© www.soinside.com 2019 - 2024. All rights reserved.