使用状态转移表对 CD 播放器/无线电建模
此示例说明一个简单的 CD 播放器/无线电逻辑模型,它使用 Stateflow® 中的状态转移表。
控制 CD 播放器/无线电的逻辑核心在 CdPlayerModeManager
图中,该图是使用状态转移表设计的。该表以表格形式表示模态逻辑。它允许我们定义各种状态及其层次结构,以及状态之间的转移。
状态单元格
最左侧的一列表示表中的所有状态。请注意,状态可以按层次结构嵌套。您可以选择其中一个状态作为任何给定级别的默认状态。这由在状态左侧绘制的默认转移表示。如果在选择要进入的第一个状态时涉及到逻辑,您还可以添加一个“默认转移行”。
您可以通过右键点击某个给定状态并选择添加历史结点来向该状态添加历史结点。这使得该状态能够在重新进入时记住上次激活状态,而不是选择默认状态。例如,状态 ModeManager 和 ON 有历史结点。可以从此表视图中自动生成 Stateflow 图。
转移单元格
下一组列表示从状态的外部转移。每行表示从给定状态的外部转移。每个转移单元格细分为三个子单元格:
条件单元格:指定布尔条件,该条件指定转移何时激活
条件动作单元格:指定转移激活时要采取的动作
目标单元格:指定转移的目标状态。请注意,您可以使用特殊关键字(如
$NEXT
、$PREV
)来指定相对于当前状态的目标。
此图接收用户输入,例如是否插入盘以及无线电模式(FM、AM 或 CD)。然后图确定要输出的机械命令。输入和输出数据的数据类型在 MATLAB® 文件 CdRequestMode.m
和 RadioRequestMode.m
中定义为枚举数据类型。
CdPlayerModeManager
图的输出命令由图 CdPlayerBehaviorModel
处理,该图对 CD 播放器机制的行为进行建模。此逻辑也是使用状态转移表实现的。
MATLAB UI 用于设置各种 CD/无线电模式。