概述
层级结构
Stateflow中,可以在状态中创建状态,再创建状态,无限套娃。。。如下如图,我在一个状态框里面又画了两个状态框。这里面,外面的框被称为父级,里面的状态被称为子级。其运行顺序如红线所示,里外两个框都有一个大圆点和箭头,这个大黑点与箭头就是stateflow运行的起始位置。
如下图,可以进行不断地套娃:
那么层级结构有何作用?这个很难简单讲清楚,这个我感觉各个使用者的体会可能会有所不同,我这里讲一下我的感受,用Demo举例说明可能更好理解。
如上,一个CD机有多重功能,就像我们电CD机菜单的时候,一个菜单下面会有子菜单。假如把所有的功能都全部平铺出来,放到一个级别中来演示,那么用户就很难找到自己想要的功能。这些菜单内的功能,体现在模型中,那就是非常多的子子模型,在stateflow中就是非常多的子状态。因此在Stateflow里面,也需要有这种“子菜单”的概念,这样开发的时候才能够更加高效。如下为Simulink demo Model Media Player by Using Enumerated Data中的Stateflow chart,结合前面的说明,相信应该很容易体会到层级结构的作用。
互斥与并行
有些时候,我们会希望在某些时刻,多个状态能够同时运行,这个时候就涉及到状态之间的运行关系了。Stateflow中存在两种运行机制:互斥与并行。
如下图的chart,Child_state1与Child_state2为互斥状态OR,在同一时刻,这两个状态只能执行其中一个:
如下图的chart,这里面Child_state1与Child_state2为并行状态AND,在同一时刻,两个状态同时执行:
可以发现,互斥和并行的区别,在chart中反映在框框的虚实。实现框为互斥,虚线框为并行。我们一般默认创建的都是互斥框,那么如何创建并行的呢?
选择父级后点击菜单中decomposition菜单中的orand可以进行互斥与并行的切换,右键父级也可以进行切换:
点击转换完,就可以看到框框变成虚线了:
并行状态的执行顺序
虽然说是并行状态,状态也确实会同时被激活,但是在执行的时候,这些状态在刚进入的时候也还是有执行顺序的,而执行的顺序顺序就是按框框上的的数字来的。可以看到,设置好并行后,框框的右上角会出现数字。这些数字就是在这个父级中,这些并行子级的执行顺序。如果对执行顺序有修改的需要,点击execution order进行更改即可。
最后
以上就是顺心纸飞机为你收集整理的Simulink学习——stateflow快速入门之层次结构、互斥及并行的全部内容,希望文章能够帮你解决Simulink学习——stateflow快速入门之层次结构、互斥及并行所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复