状态图

用简化的图形形式清楚地传达复杂的软件设计

状态图或状态转换图是状态机有限数量的状态、状态转换和管理转换的规则的图形表示。状态图被用作复杂软件设计的高级起点,因为它们的简单性允许清楚地交流不同的操作模式。

在状态图中:

  • 方框表示状态或不同的操作模式
  • 箭头表示从一种状态到另一种状态的转换
  • 与每个箭头关联的文本表示管理转换的规则
图1:使用statflow建模的3种操作模式(关闭、加热和空转)的微波炉状态图。

图1。使用statflow建模的3种操作模式(关闭、加热和空转)的微波炉状态图。

状态机的输出或操作是对每个系统状态的行为的描述。两种类型的状态机—moore和meally—是根据定义机器输出的位置进行分类的。

摩尔状态图的实现

在这种类型的状态机中,输出仅依赖于系统的状态,并被定义为状态操作。无论您如何进入一个状态,状态操作都是相同的。例如,在图2的状态图中,来自的输出加热无论转换是否发生在空转状态。

图2:使用带有statflow的Moore实现建模的状态图。

图2。使用Moore实现和Stateflow建模的状态图。

状态图的简单实现

在这种类型的状态机中,输出不仅取决于系统的状态,还取决于对系统的输入。如图3中的状态图所示,Mealy实现中的输出是在转换处定义的。

图3:使用Mealy实现和Stateflow建模的状态图。

图3。使用Mealy实现和Stateflow建模的状态图。

通过Mealy实现,可以通过添加循环来重新组织和简化状态图,以更新机器输出。这对于更复杂的设计越来越有利。

图4:使用Mealy实现和Stateflow建模的重组状态图。

图4。使用Mealy实现和Stateflow建模的重组状态图。

Mealy和Moore机器都因其简单和清晰而受欢迎,并且这两种风格经常混合在同一个状态图中。

状态图:增强的状态图

状态图的基本构建块不足以用一个图来表示复杂的逻辑系统。您将需要额外的功能来有效地捕获复杂的设计细节。状态图也称为Harel图,添加了包括层次、并行或正交性和事件广播等功能。

层次结构功能允许进一步的设计划分,并可以减少状态之间所需的转换线的数量。可以引入父状态来在状态机中创建层次结构。例如,在图5的状态图中,的父状态烘焙包括的子状态加热而且闲置和相关的状态图。

图5:显示层次结构的状态图,使用Stateflow建模。

图5。显示层次结构的状态图,使用Stateflow建模。

并行性或正交性功能允许一个状态图包含同时操作的多个状态。例如,在图6的状态图中,烤箱而且Oven_Light可以认为是两个独立的状态机同时运行。该图表用一个包含两个并行状态机的图形表示整个系统。

图6:显示层次结构和并行性的状态图,使用statflow建模。

图6。显示层次结构和并行性的状态图,使用statflow建模。

事件广播功能通过允许两个独立状态或状态机之间的信息交换扩展了系统的功能。在前面的例子中,两个状态机是独立的,因为烤箱灯的操作不依赖于烤箱的加热系统。通过事件广播,可以使用控件中的简单命令添加在烘焙完成时关闭烤箱灯的功能烤箱状态逻辑,如图7中的状态图所突出显示。

图7:使用statflow建模的状态图,显示了层次结构、并行性和广播。

图7。显示层次结构、并行性和广播的状态图,使用Stateflow建模。

具有层次结构、并行性和广播功能的状态图有助于表示复杂的系统功能,而不需要混乱的状态图。

带有状态流的状态图和状态图

Stateflow®是一个基于有限状态机的图形化编程环境。使用Stateflow,您可以从简单的状态图开始,构建状态图,为动态系统中的复杂逻辑建模,包括自动变速箱、机器人系统、移动电话等等。这种复杂逻辑的应用包括:

如果您需要创建用于控制软件组件的逻辑,您可以使用Simulink中的自动代码生成功能将状态图转换为C、HDL或PLC代码以进行部署。

有关建模状态图的更多信息,包括这些高级技术,请参见Stateflow而且仿真软件。这个例子中,安全系统建模,演示了Stateflow中的层次结构、并行性和事件广播。

参见:控制逻辑状态机控制系统嵌入式系统

Baidu
map