Stateflow学习笔记之状态图转移实例

 

从一个状态退出,进入另一个状态  

考虑以下状态图。

 

假设当前的活动状态为A.A1。

假设变量的值为:x = 5, y = 2, z = 0.

接下来的执行步骤为:

  • 判断状态A是否有向外的转移。有,且满足[x>4]的条件。转移有效。
  • 将状态A 标记为“退出状态”,执行状态A的退出动作:z = z + 1。现在z = 1。
  • 将状态B标记为“进入状态”,执行状态B的进入动作:x = x - 1。现在x = 4。
  • 状态B包含子状态,没有历史状态结点,执行默认转移。
  • 状态B.B1标记为“进入状态”,执行B.B1的进入动作:x = x - 1。现在x = 3。
  • 当前活动状态为B.B1,状态图进入休眠。

 

超转移

考虑以下状态图:

假设当前活动状态为A.A2。

假设当前变量的值为:x = 5, y = 5, z = 0.

接下来的执行步骤为:

  • 测试状态A是否存在有效的输出转移。不满足条件:[x>10]。
  • 测试状态A.A2是否存在有效的输出转移。满足条件:[x>4],为有效的转移。
  • 退出状态A.A2,无退出动作。
  • 退出状态A。执行退出动作:z = z + 1。
  • 进入状态B。执行进入动作:x = x - 1。
  • 进入状态B1。执行进入动作:x = x - 1。
  • 当前活动状态为B.B1,状态图进入休眠。

 

不存在有效转移时,执行during动作

考虑以下状态图:

初始化完成后,执行默认转移动作,A.A1为活动状态。此时,x = 3, y = 0, z = 0.

下一个时刻,状态图的执行步骤为:

  • 测试状态A的输出转移,不满足条件:[x>4]。
  • 测试状态A1的输出转移,不满足条件:[y>3]。
  • 执行状态A的during动作:y = y + 1。此时y = 1。
  • 执行状态A1的during动作:x = x + 1。此时x = 4。
  • 当前活动状态还是A.A1,状态图进入休眠。

 

 


 

 

参考资料

进入图或状态
Enter a Chart or State

https://ww2.mathworks.cn/help/stateflow/ug/chart-initialization-and-entry-actions.html

 

状态图的执行
Execution of a Stateflow Chart

https://ww2.mathworks.cn/help/stateflow/ug/chart-during-actions.html

 

退出状态
Exit a State

https://ww2.mathworks.cn/help/stateflow/ug/chart-exit-actions.html
 

 

  • 7
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值