用简化的图形形式表示事件驱动系统
状态机(或有限状态机)是事件驱动的反应性系统的表示,如果控制变化的条件满足,它就会从一个状态转换到另一个状态。状态机通常用于描述计算系统,但它们已经扩展到动态系统(如飞机、汽车、机器人和移动电话)中的复杂逻辑模型。
包含复杂逻辑的操作示例包括:
- 为系统安排任务或步骤的顺序
- 定义故障检测、隔离和恢复逻辑
- 监督如何在不同的操作模式之间切换
表示状态机的方法有很多种,但图形化方法是最常见的。状态转换图,也称为状态图,是一个显示有限数量的状态的图,其中包含控制何时从一个状态转换到另一个状态的规则。
例如,您可以使用状态图来表示汽车自动齿轮变速箱的简化版本。下面显示的状态机标记了四个操作状态第一个
,第二个
,第三
,第四
.就像它们所代表的齿轮一样,这些状态是独占的,所以一次只有一个状态是活动的。这个状态机监视汽车的速度,并在速度超过运行中的档位的固定阈值时切换到不同的档位。
图1。使用statflow建模的自动齿轮传动系统的状态图。
状态图主要有两种类型:
- Mealy -状态机输出不仅依赖于状态,还依赖于对系统的输入,通过在转换中定义机器输出来表示,如图2所示
- Moore -状态机输出仅依赖于系统的状态,通过在状态上定义机器输出来表示,如图3所示
有关这些语义的更多信息,请参见Mealy和Moore机器概述.
要创建模拟复杂软件组件的状态机,状态图的基本构建块是不够的。为了有效地获取系统的复杂细节,需要以下附加功能:
- 层次结构-介绍父状态并进一步构造设计
- 并行性和正交性-允许一个图包含多个同时运行的状态
- 事件广播—允许两个独立的状态或状态机之间的信息交换
当这些功能与状态转换图相结合时,这些表示称为Harel状态图,或简称为状态图。
有关这些功能的更多信息,请参见状态图和状态图.
带有状态流的状态机
Stateflow®是一个基于有限状态机的图形化编程环境。使用Stateflow,您可以从简单的状态图开始,并构建状态图来建模动态系统中的复杂逻辑。
你可以用MATLAB®作为MATLAB对象或Simulink来执行独立的状态图®将状态图模拟为Simulink块。