状态机原理在控制程序设计中的应用
刹注沙甸妙‘ 一
状态机原理在控制程序设计中的应用
陈小琴 , 蒋存波 , 金 红
桂林工学院电子与计算机系 , 广西 桂林
摘 要 计算机控制系统的控制程序具有有限状态自动机 的特征 , 可以用有限状态机理论来描
述 。 利用状态转移图和条件编码 , 可以更直观和清晰地描述程序的转移与条件的关系 。 由于使
用二进制编码描述程序的转移条件 , 使得复杂的程序结构都变成了一 种规则的结构 , 因此基于
该方法的程序结构更简单 , 编写程序更容易 , 程序的调试 、 修改与功能扩展更方便 。 该方法已
经成功应用于电火花多维数控系统的程序设计过程 。
关链词 计算机控制 有限状态机 程序设计
中图分类号 文献标识码 文章编号 一 门 一 一
行
一 , 一 ,
, , ,
,
朽
,
们
有限状 态 自动机 , 简称 是
一种具 有离散输入 、 输 出状态的系统 的数学描述 ,
它以 “ 事件驱动 ” 的方式工作 ’一 , 通过 离散事件驱
动下 系统状态间的转移关 系来描述一个系统的行为 。
计算机控制 系统是一种离散 系统 , 它通过执 行程序
实现控制功能 , 控制程序 由若干功能模块和分支组
成 , 程序的执行实际上就是依据不 同的条件 , 在这
些程序分支和模块 间的转移 。 控制程序具有有限状
态机的特征 , 可 以将有限状态机原理和状 态转移 图
应用于程序设计 。 本文给 出了一种利用状态机原理
进行程序设计 的方法 。
, 有限状态 自动机的基本原理
有限状态 自动机是一个描述离散 系统的数学模
型 , 它假设 系统具 有有限个状 态 状 态
转换的条件是有限 的 状 态的转变是对输入事
件的响应 , 状态转换所需要 的时 间为 系统在
任何时刻总是处 于 某一确定的状态上 , 且其行为是
确定的 。 有限状态 自动机 可 以用一 个五 元组来描
述 ,
, , , , 入
其 中 , 是 的输人 字母 集 , 是 的状 态集 ,
是输 出集 , 它们都是 非 空的有穷集合 描 述
的状 态 转 换 关 系 , 在 时 序上 可 以表 示 为 卜
, , 它表示对 伪 , 。 , 当在时刻 满
足输入 条件 或者说转换条件为 为 时 , 发
生 从状 态 到 二 的状态转换 。 入描述 的
输 出 与 和 的关 系 , 与 类似 。 状 态的转移关 系
状 态转移 函数 可 以用状 态转移表 , 或者状 态转
移 图来描述 。
控制程序的典型结构及状态机原理
的应用
收稿日翔 一 一
基金项目 精密成型磨削设备数控技术研发 桂工科 一 多维数控系统 桂工 科 一
作者简介 陈小琴 一 , 女 , 浙江杭州 , 讲师 , 主要从事电子信息 、 单片机技术的教学与研究 。
第 卷 第 期 一
辛 连沙叼妙 化
控制程序的典型结构
对于计算机控制 系统 , 它可能按规定的顺序执
行某些操作 , 也可能依据操作者的命令 、 传感器的
状态输入信号 、 或内部程序执行的不同结果转移到
不 同的功能程序去执行 。 与这些过程相对 应 , 控制
程序典型 结构为 顺序结构 、 循环结构 、 二 分支或
多分支结构 , 如 图 所示 。 子程序 、 中断服务程序
也可 由这 些典型 结构组成 。
赋值为 声 使 的状态从 转移到 , 否则给
赋值为 任 , 使 计维持在 不变 。
对于 图 , 功能 执行完毕后 , 依据 内部程序
执行结果和外部状态 , 给转移控制条件分别赋值
或 使状态转移到 或 , 如图 。
功功能
顺序结构
功功能
循循环体体
对对育片
灰认龟百
一 一
循环 结构 多分支结构
图 典型 的控制程序结构
如果将程序的不同功能模块和分支看作是状态
机 的不 同状态 , 则程序的执 行过程实际上就是
程序在不同状态之 间的转移 , 而转移控制条件 是
三类信号的组合 操作输人命令 、 传感器的状态输
人信号 、 内部功能程序执行结果 的有限种状态分类
值 。 对于特定的控制 系统 , 其 、 是有限 的 , 对于
每一个确定的状态 和条件 , 程序的转移和控制输
出是唯一 确定的 , 它具有有限状态机的特征 。 因此
我们可 以用有限状态 自动机 , , , 沐 来描述 。
、 使用二 进制编码表示 。
自动机原理的应用
典型结构的状态转移描述
图 所示 的典型程序结构可 以用 图 的状态转
移图来 等效表示 。
对于 图 的顺 序过 程 , 执行完毕直 接给条
件 、 赋值 声 , 程序转移 到下一状态 。 如 图 所
不 。
对于 图 可 以转换成图 。 循环结束 , 给
图 典型结构的状态转换
对于 图 可 以分为两种情况处理 。
分支条件只 由内部程序运行结果确定 , 则如
图 , 在 直接给 赋值
“ 毛, , ?, 一
下次依据 转移到状态 , ? 。
如果除 了内部运行结果外 , 还与外部状态有
关 比如传感器状态 , 则添加一状态叽 , 如图 一 ,
在 保存好内部条件位 , 并赋值 转移到
测试传感器状态 , 并将条件编码为 , 将 与
组 合构成 二 。 , 下次依据 转移到状态 叽
, ? 。
状态与条件编码
为 了成描述 与程序设计 的方便 , 我们对状态
和条件 进行编码 。 状态 的编码方法比较简单 , 对
于 所有可 能的状态 , 分配给它们一个唯一确定的编
号 。
条件 输人字母 集 ‘的编码 比较复杂 , 方法也
有多种 。 一种 比较方便的方法 是将条件字 分为 多
个字段 几 、 、 凡 , , 每一 字段 占用一 定的二 进制位
数 。 不 同的字段表示不 同的条件类型 , 例如儿 , 表示
操作命令编码 , 几 表示 内部执行结 果分类编码 ,
表示传感器状 态编码 , 由这三 部分共 同构成 。
第 卷 第 期 一
荆注沙甸妙‘
与 勺 任
当程序比较复杂 , 状态和条件数量较 多时 , 可
以采用 多级分级状态机方法 , 使每一级状态机的状
态转移关 系变得简单 。
控制程 序设计 中有限状态 自动机原 理 的
应用
计算机控制 系统的控制程序是由有限个功能模
块和分支构成 。 每一个功能模块或分支作为一 个状
态用 ‘来表示 , 有限个状态 ‘就构成了 的状态集
合 , , ? ? , 将可能发生转移的两
个状态之 间用一 条有向弧线连接起来 , 并在该弧线
上标注转移条件 气 , 就得到状态转移 图 。 全部 就
构成了 的输人 字母 集 , , , ? ? , , 。 依
据状态转移 图列 出状态转移表 , 并对状 态进 行编
码 详细列 出每一个状态转移所对应的条件 , 确定
的编码方法和字长 , 得到各条件字段编码 , ,
。 将状态和条件编码填人状态图或状态表 , 就获
得 了具有编码的状态转移图和状态转移表 。 依据这
个编码 的状态转移 图 表 , 就可 以很方便的进行程
序设计 。 在控制程序比较复杂时 , 使用分级的多级
状态机结构 , 这样每一级就是一 个简单的状态机 。
如 图 所示 。
图 的状 态转移关 系 比较复杂 , 使用 多级分
级状态机结构 , 可 以使结构得到简化 。 如图 为
一级状态集 , 将 到 、 之 间作为第二 级状态机
。, 如 图 所示 , 。, , , ? , , , ?, 十 ,
分别是 。 的状态集和输人 集 。 , 。 若 还
是 较 复杂 , 它 的状 态 尸 还 可 以 用 第 三 级 状 态机
二叽 ‘来描述 。 这样每一级都是一 个简单状态机 ,
用代码 来实现就变得容易 。 对于 图 的第一级
状态机 , 是它的启动条件 , 上 电和按下 复位按钮
条件 得到满足 , 系统进人 初始化状 态 。。 。 执 行
完毕 , 直接赋值 , 转移 , , 在 , 启动下一级状态机
峡 。
为 了便于软件的功能扩展 , 确定状态 和条件
的编码 时 , 应适 当预 留一 部分编码作为的扩展编
码 。
状态机原理在电火花机床用多维数
控系统控制程序设计中的应用
电火花机床用 “ 多维数控 系统 ” , 采用 嵌入
式执行控制器 的结构 , 主要实现 图形化人机交互
环境 , 专家型工艺数据库的处理 , 并 向执行控制器
传送操作命令 、 加 工程序代码 、 工艺 控制参数 。 嵌
入式执 行控制器 采用高速单片机 系统 , 执 行 送来
的命令与加工程序 , 并将执行结果送 显示 。 单片
机控制程序利用 有限状态机原理设计 。
, 主程序的状态转移图
控 制程 序使 用 汇 编 语 言编 写 。 该 控 制 系统 有
“ 手 动方式 ” 、 “ 自动方 式 ” 、 “ 单程序段工 作 ” 、 “ 手动
方式 、 “ 模拟工作方式 ” 分 别用 叮 、 叮, 、 叮,、 、 叮, 、
。 表示 。 主程序的状态转移图如 图 所示 。
飞“ 二 二犯 份二 , ‘ 代一
十沉一
。
。叉
一里址
落
沐
图 主程序的状 态机状态转移图
牡
‘
夔夕 图 中转移 条件 , 。 由 位运 行状 态编
码 二 。。 和 位二 进制命令编码
二 , 。 两部分构 成 , 使用 内部存储单元 一
图 控制程序的状态图描述
第 卷 第 期 一
荆注公甸妙‘
的 , 。 表示 。 。 。初始化 一 , 。,一 。 执
行完毕由于 ,一 转移 叽 在 。, 一 。使 卜 ,
将工作模式命令编码赋给 从 而达到按命令转移
到 叽 、 宁卜 、 仔卜 、 、 , 、 叮卜。 五个工作模式分支之一
的 目的 。 每一功能分支执行完毕 , 赋值 二 转
移到 , 一
执行公共服务 , 之后赋值 , 转回到
一
多级状态机的应用
图 所示程序 , 【 一 具有较复杂的功能 , 采
用一级状态机实现太 复杂 , 因此 采用两级分级状态
机结构 , , 一 】 分别用 个第二级状态机实现 , 这
样整个程 序的状态转移关 系 比较简单 , 而且 清晰 。
现 以 为例进行说明 。 为 自动工作方式 , 其状
态转移关 系如 图 。 图中为 了阅读方便 , 状态 、 转移
条件用 文字说 明 。 实 际使 用 中 , ‘ 一 二 ·
用
一 “ 高半字节的四位二 进制编码 、 表
示 。 嵌入式执行控制器通过 串行接 口 接收指令执 行 。
第一级 自动机的 自动运 行命令启动该级 , 加工程序
与启动命令 由串 口 中断程序处理并设置 条件 , 其它
状态间的转移条件由程序的运行直 接进行设置 , 从
而 完成状态间的转移 。
代码 的实现
利用状态机原理描述程序的执行过 程 与结构 ,
由于状态转移条件 , 〔 是一组二进制编码 , 因此
无论一个多么复杂的多条件多分支程序 , 都转变成
了图 所示的依据 的值进行转移的程序结构 , 使
程序的代码 变得规则 , 一 汇编语言使用
指令 , 语 言使用 一 语句可 以
很 容易实现 。 具体的程序代 码略 。
当预 留扩展 条件 编码时 , 程序功能的修 改与
扩充也变得非常容易 。
结论
有限状态机原理 和方法可 以应用于控制 系统程
序设计 。 利用状态机原理描述程序的转移关 系比流
程框图 更直 观 , 而且包含了更 多的信息 , 由于 将转
移条件用一组二 进制编码来描述 , 可 以将一个复杂
的程序转化为按条件的二进制编码值进行转移的多
分支程序结构 , 使程序结构简单 、 清晰 , 便于实现 ,
同时使得程序的调试 、 功能的修改与扩充更加容易 。
该方法 已 经 成功 应用 于 电火 化机 床 “ 多维数控 系
统 ” 、 “ 粉状物料运输车卸料控制 系统 ” 、 “ 异型 罐体
自动焊接设备 自动控制 系统 ” 的控制程序设计 。
参考文献
【 熊振云 , 阮俊波 , 金惠华 嵌人 式软件中状态机的抽象与
实现 」计算机应用 , , 一
【 刘宝 旨 基 于事件驱 动状态机的多线语音应用程序设计
」计算机应用 , 一
【 蒋宗礼 , 姜守旭 形式语言与 自动机理论 北京 清华大
学出版社 , , 一
管纪文 线性 自动机 「 北京 科学 出版社 , 一
【 何成武 自动机理论及应用 「 北京 科学 出版社 ,
卜
魏先 民 有限状态机在嵌入式软件中的应用 潍坊学院
学报 , , 一
职燕 , 蒋存波 基于消息传递机制的单片机程序设计方法
」桂林工学院学报 , , 一
? ?
图 自动执行分支 状态转移图 又又迎 订 阅
【 第 卷 第 期 一
状态机原理在控制程序设计中的应用.pdf