状态机

什么是状态机

状态机(或有限状态机)是事件驱动的反应式系统的一种表示,当定义变化的条件成立时,该反应式系统会从一种工作模式转移到另一种工作模式。大多数状态机使用图形表示,但也可以通过文本表示。

构建一个状态机需要三个基本组件:

  • 状态:区分流程的不同步骤、任务或工作模式
  • 转移:在不同状态之间转换的方法
  • 动作:在状态机执行期间发生的事件或变化

一个使用 Stateflow 建模的自动变速器系统,可观察到状态机的基本组件。(请参阅示例。)

早期的状态机被数学家和计算机科学家用于描述计算系统。他们将复杂的逻辑简化为更易于管理的图形表示。与文本替代方案相比,状态机的视觉特性使其更易于展现系统的不同状态之间的关系以及哪些条件会导致转移或动作。随着时间的推移,状态机的用途已扩展到包括为动态系统(如飞机、汽车、机器人和移动电话)中的复杂逻辑建模。

包含复杂逻辑的工作示例包括:

  • 为系统安排一系列任务或步骤
  • 定义故障检测、隔离和恢复逻辑
  • 监督如何在不同工作模式之间切换

您可以使用状态机来表示汽车自动变速器的简化版本。以下示例有四种工作状态,标注为一挡、二挡、三挡和四挡。就像他们所表示的档位一样,状态机中的状态是互斥的,这意味着在某个时刻只有一个状态被激活。此状态机监控车速,并在达到当前档位的速度阈值时换挡。

Stateflow 中的自动变速器状态机。当车速达到预设阈值时,该状态机便会触发换挡,在不同挡位间进行转移。(请参阅示例。)

米利和摩尔状态机

在设计状态机时,通常需要考虑两种常见的类型:

  • 米利状态机:输出取决于当前状态和输入。其特点是在转移中定义输出。
  • 摩尔状态机:输出仅取决于当前状态。其特点是在状态内部定义输出。
状态机图,展示了接收 5 美分硬币、10 美分硬币或无硬币这几种输入状态,以及它们对应的输出。

一个使用米利语义建模的自动售货机状态机,其输出(是否售出汽水)是在转移期间定义的。(参阅 Stateflow 示例。)

状态机图,展示了一个双向交通信号灯的五个状态。

一个使用摩尔语义建模的交通信号灯状态机,其输出(信号灯颜色)是在状态内部定义的。(参阅 Stateflow 示例。)

要了解关于这两种语义及其适用场景的更多信息,请参阅米利和摩尔状态机概览

状态机的 Harel 概念

随着软件组件复杂性的发展,状态机的基础构建块也需要发展。20 世纪 80 年代,David Harel 博士确定了准确反映系统更复杂细节所需的其他功能:

  • 层次结构引入父状态(一个或多个)以进一步构建和划分设计。
  • 并行机制或正交性支持单个图包含多个同时工作的状态。
  • 事件广播使两个独立状态或状态机之间能够进行信息交换。

当这些功能与状态机结合时,所得到的表示称为 Harel 状态图。

要定义安全系统中的额外复杂性,需要用到 Harel 状态图的元素。(请参阅示例。)

使用 Stateflow 构建状态机

Stateflow® 是基于有限状态机的图形化编程环境。您可以从简单的状态图开始,逐步构建状态机,为动态系统中的复杂逻辑建模。您可以设计状态机以及状态转移图、流程图、状态转移表和真值表。这种方法可以在您开发用于监督控制、任务调度、故障管理、通信协议、用户界面和混合系统的应用时提供帮助。

Stateflow 中的状态机可进行仿真,以评估它们在不同条件下的表现。例如,可以对对升降舵建模的状态机进行仿真,以查看它在按下不同按钮或发生故障时的响应。通过对状态机进行仿真,您可以确保逻辑按预期运行,评估是否缺失条件,并测试不同场景。

要了解有关状态机建模的详细信息,请参阅 Stateflow 和 Simulink® 相关信息。要快速入门使用 Stateflow 创建状态机,请参阅对有限状态机建模


另请参阅: 控制逻辑, 状态图, 控制系统, 嵌入式系统, FDIR, 基于模型的设计, 基于模型的测试, PackML, 建模和仿真, 仿真软件, 基于模型的系统工程 (MBSE)