通过创建一个层次结构嵌套的状态。然后,您可以在statflow中控制多个复杂度级别®图表。有关更多信息,请参见模型有限状态机.
要创建州的层次结构,将一个或多个州置于另一个州的边界内。内部状态是外部状态的子状态(或子状态)。外部状态是内部状态的父状态(或超状态)。
父状态的内容就像一个更小的图表。当一个父状态变为活动状态时,它的一个子状态也变为活动状态。当父状态变为非活动状态时,它的所有子状态都变为非活动状态。
这个例子模拟了一个立体声系统,包括一个调幅收音机,一个调频收音机和一个CD播放机。在模拟过程中,您可以通过单击Media Player Helper用户界面上的按钮来控制立体声系统。
立体声最初处于待机模式(OFF)。当您选择Radio Request按钮之一时,立体声将打开相应的子组件。如果您选择了CD播放器,您可以单击CD请求按钮中的一个来选择播放、倒带、快进或停止。在模拟过程中,您可以在任何点插入或弹出磁盘。
最初,这个立体系统的完全实现显得相当复杂。然而,通过一次只关注单个级别的活动,您可以增量地设计整个系统设计。例如,以下条件是CD播放器进入快进播放模式的必要条件:
你打开音响。
你打开CD播放机。
你在播放唱片。
点击UI中的FF按钮。
您可以构建一个分层模型,一次只考虑其中的一个条件。例如,最外层可以定义立体声打开和关闭之间的过渡。中间层定义了不同的立体声子组件之间的过渡,以及CD播放机的停止和播放模式之间的过渡。最下面的一层定义了当您满足播放光盘的所有其他条件时,对CD请求按钮的响应。
为了实现立体系统的行为,sf_mediaplayer
属性下的模型资源管理器列出的嵌套状态层次结构模式管理器
图表。要打开模型资源管理器,在建模选项卡上,选择模型浏览器.
该表列出了层次结构中每个状态的角色。
层次结构级别 | 状态 | 描述 |
---|---|---|
最高级别(模式管理器 图表) |
喷射 |
光盘弹出模式(中断所有其他立体声功能) |
NormalOperation |
立体声系统的正常操作模式 | |
立体系统活动(子状态 |
备用 |
立体声系统处于待机模式(OFF) |
在 |
立体声系统激活(ON) | |
立体声子组件(的子状态 |
CDMode |
CD播放机子组件是活跃的 |
AMMode |
调幅无线电子组件是有效的 | |
FMMode |
调频无线电子组件已激活 | |
CD播放器活动(子状态 |
停止 |
CD播放机停止 |
玩 |
CD播放机正在播放光盘 | |
光盘播放模式(子状态 |
正常的 |
正常的播放模式 |
倒带 |
反向播放模式 | |
fastforwar |
快进播放模式 |
该图显示了图表中各州的完整布局。
历史上连接在NormalOperation
和在
state记录在弹出光盘或关闭系统之前的操作模式(Standby或ON)和媒体播放器(CD播放器、AM收音机或FM收音机)的活动子组件。
这个例子sf_mediaplayer
包含另外两个状态流程图:
应用程序接口
使用UI管理接口,并将输入传递给模式管理器
和CD播放器
图表。
CD播放器
对象的输出应用程序接口
和模式管理器
图表和模仿CD播放机的机械行为。
在模拟过程中,您可以研究每个图表如何响应与Media Player Helper应用程序的交互。要在图表之间快速切换,请使用statflow Editor顶部的选项卡。