我是靠谱客的博主 负责皮皮虾,最近开发中收集的这篇文章主要介绍Stateflow学习笔记之状态图转移实例从一个状态退出,进入另一个状态  超转移不存在有效转移时,执行during动作参考资料,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

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

考虑以下状态图。

 

假设当前的活动状态为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
 

 

最后

以上就是负责皮皮虾为你收集整理的Stateflow学习笔记之状态图转移实例从一个状态退出,进入另一个状态  超转移不存在有效转移时,执行during动作参考资料的全部内容,希望文章能够帮你解决Stateflow学习笔记之状态图转移实例从一个状态退出,进入另一个状态  超转移不存在有效转移时,执行during动作参考资料所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部