【研发日记】Matlab/Simulink技能解锁(十二)——Stateflow中的两种状态机嵌套对比
创始人
2024-11-15 14:04:53
0

文章目录

前言

项目背景

两级状态机

函数状态机

分析和应用

总结

参考资料


前言

        见《【研发日记】Matlab/Simulink技能解锁(七)——两种复数移相算法》

        见《【研发日记】Matlab/Simulink技能解锁(八)——分布式仿真》

        见《【研发日记】Matlab/Simulink技能解锁(九)——基于嵌入式处理器仿真》

        见《【研发日记】Matlab/Simulink技能解锁(十)——PID调参技巧》

        见《【研发日记】Matlab/Simulink技能解锁(十一)——Stateflow中的en、du、ex应用对比》

项目背景

        近期使用Simulink开发的嵌入式项目中,用到了Stateflow中的状态机嵌套,使用过程中发现了两种嵌套方式存在关键的差异,极易踩坑。查阅官方文档并没有找到相应的解释。利用周末时间亲自摸索了一下,把它们的一些基本规律和技巧总结下来。

两级状态机

        两级状态机是在某个State里边直接放入一个Stateflow,示例如下:

        从上图可以看出,外层s1每次进入之后,一方面正常执行自有的代码(Cnt=Cnt+1;),另一方面也有序地执行内层的Stateflow。当外层s1退出时,内层的Stateflow也全部退出。当外层s1重新进入时,内层的Stateflow不管前一次停在哪个State,这时候都要从初始State(s2)开始执行。

函数状态机

        函数状态机是在某个State里边放入一个Simulik Function,然后再在里边放入一个Stateflow,以此间接实现状态机嵌套的目的,示例如下:

        从图上可以看出,外层Stateflow进入s1之后,嵌套在s1内部的Simulik Function也被调用起来,Fcn()实际上也是一个Stateflow。跟前面的两级状态机相比,外层Stateflow基本没有区别,内层Stateflow也是完全一样,正常理解的话应该运行得到相同的结果。实际运行起来看到了很关键的差异,就是外层State每次进入后,内层Stateflow运行的起点不一样。第一次外层进入s1时,内层是从初始State(s2)开始执行的。第二次外层进入s1时,内层直接就从s3开始执行。后面外层每次进入s1,内层都从s3开始执行。

分析和应用

        1、两级状态机的外层State每次重新进入时,内层的Stateflow不管原本停在哪个State,都会回到初始State重新开始运行。这种状态机嵌套模式,内层的Stateflow是没有“记忆”的,适合应用于有初始化操作或者有复位操作的系统,比如带有累加功能或者积分功能的应用,每次重新启动都需要清零操作。

        2、函数状态机的外层State每次重新进入时,内层的Stateflow都会先找到原本停在哪个State,然后从那里开始继续运行。这种状态机嵌套模式,能保证内层的Stateflow有准确“记忆”,适合应用于需要暂存数据的系统,比如有固定执行序列的应用,当应用被打断又重新恢复时,需要从原有的位置开始运行。

总结

        以上就是本人在研发中使用Stateflow中的状态机嵌套时,一些个人理解和分析的总结,主要是对比介绍了两种状态机嵌套方式的基本规律,展示了仿真运行的效果,并分析了它们的特点和适用场景。

        后续还会分享另外几个最近解锁的Matlab/Simulink新技能,欢迎评论区留言、点赞、收藏和关注,这些鼓励和支持都将成文本人持续分享的动力。

        另外,上述例程使用的Demo工程,可以到笔者的主页查找和下载。

参考资料

    Mathworks Help -> Stateflow

        版权声明,原创文章,转载和引用请注明出处和链接,侵权必究!

相关内容

热门资讯

手册辅助!韵味字牌有没有挂(辅... 手册辅助!韵味字牌有没有挂(辅助)竟然真的有辅助插件(哔哩哔哩)1、操作简单,无需韵味字牌有没有挂手...
明白辅助挂!填大坑辅助软件!都... 明白辅助挂!填大坑辅助软件!都是存在有开挂辅助攻略(新版有挂)-哔哩哔哩1、超多福利:超高返利,海量...
总结辅助!闲逸辅助软件(辅助)... 总结辅助!闲逸辅助软件(辅助)其实存在有辅助教程(哔哩哔哩)1、闲逸辅助软件辅助器安装包、闲逸辅助软...
日前!广西老友玩有破解吗!竟然... 日前!广西老友玩有破解吗!竟然真的是有开挂辅助工具(存在有挂)-哔哩哔哩1、打开软件启动之后找到中间...
指南书辅助!顺欣茶楼辅助软件视... 指南书辅助!顺欣茶楼辅助软件视频(辅助)一贯一直都是有辅助攻略(哔哩哔哩)1、顺欣茶楼辅助软件视频有...
第三方辅助!werplan怎么... 第三方辅助!werplan怎么透视!果然真的有开挂辅助脚本(有挂神器)-哔哩哔哩1.werplan怎...
技法辅助!天蝎辅助(辅助)切实... 技法辅助!天蝎辅助(辅助)切实真的有辅助工具(哔哩哔哩)天蝎辅助脚本下载中分为三种模型:天蝎辅助挂靠...
据相关数据显示!暗宝辅助好用吗... 据相关数据显示!暗宝辅助好用吗!总是真的是有开挂辅助app(有挂存在)-哔哩哔哩1、超多福利:超高返...
课程辅助!天天贵阳智能辅助器(... 课程辅助!天天贵阳智能辅助器(辅助)果然是真的有辅助软件(哔哩哔哩)所有人都在同一条线上,像星星一样...
长期以来!白金岛放炮罚开挂!切... 长期以来!白金岛放炮罚开挂!切实真的是有开挂辅助器(有挂细节)-哔哩哔哩1、完成白金岛放炮罚开挂辅助...