本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

Stateflow 中的状态转移表

状态转移表是表达时序模态逻辑的另一种方式。请使用状态转移表以表格形式表达模态逻辑,而不要在 Stateflow® 图中以图形方式绘制状态和转移。在 Simulink® 模型中,状态转移表仅作为模块受支持。

使用状态转移表的好处包括:

  • 易于对链式的状态机建模,其中模态逻辑涉及从一种状态到其相邻状态的转移

  • 能够以简洁紧凑的格式实现状态机

  • 可减少对图形对象的维护

    在图中添加或删除状态时,必须重新排列状态、转移和结点。在状态转移表中添加或删除状态时,不必重新排列任何图形对象。

状态转移表支持使用 MATLAB® 和 C 语言作为动作语言。有关这些动作语言之间差异的详细信息,请参阅使用 MATLAB 和 C 作为动作语言语法时的差异

以下状态转移表包含将锅炉温度保持在两个设定值之间的模态逻辑:

以下 Stateflow 图表示相同的模态逻辑:

使用状态转移表的规则

  • 如果在转移单元格中指定一个动作,它必须为条件动作。

  • 状态转移表必须有至少一个状态行和一个转移列。

状态转移表和图之间的差异

状态转移表支持 Stateflow 图中最常用元素的一部分。状态转移表不支持的元素包括:

  • 超转移

  • 并行 (AND) 分解

  • 本地事件

  • 流程图

  • 图级别函数的使用(图形函数、真值表函数、MATLAB 函数和 Simulink 函数)

状态转移表的剖析

状态转移表包含以下组件:

每个转移列包含以下状态到状态的转移信息:

  • 条件

  • 条件动作

  • 目标状态

创建状态转移表并指定属性

如何创建新状态转移表

在 MATLAB 命令提示符处,输入:

sfnew('-STT')

在 Simulink Library Browser 中,执行以下操作:

  1. 选择 Stateflow 库。

  2. 将状态转移表拖到模型中。

状态转移表的属性

要访问属性,请在 Stateflow Editor 的 Modeling 选项卡中点击 Table Properties

这些属性与使用 MATLAB 作为动作语言的图的属性相同。有关每个属性的说明,请参阅指定 Stateflow 图的属性

基于状态转移表生成图

Stateflow 软件会根据您创建的状态转移表自动生成只读的状态转移图。当您输入对状态转移表的更改时,Stateflow 也会增量更新该状态转移图。要查看基础图的最新版本,请在 Debug 选项卡中,点击 Show Auto Chart

另请参阅

相关主题