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