功能表图在单片机编程中的应用方法 下载本文

内容发布更新时间 : 2024/6/26 12:06:30星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

功能表图在单片机编程中的应用方法

作者:陈红

来源:《硅谷》2013年第05期

摘 要 介绍功能表图中典型序列结构在C语言中的表达方法、软件定时器的用法及其功能表图的表达、基于状态机思想的单片机主程序架构以及应用实例。使用该文方法编程可使程序更易于模块化和更便于修改,可提高单片机运行效率和系统的实时性。 关键词 功能表图;单片机;编程;程序设计

中图分类号:TP313 文献标识码:A 文章编号:1671—7597(2013)031-114-03

功能表图也称顺序功能表图或称状态转移图,它是描述控制系统过程、功能和特征的一种图形。功能表图作为一种控制系统的设计工具包含了状态机的思想。它在较复杂的PLC程序设计中的应用已充分显示出优越性。利用功能表图设计PLC程序不仅明显提高设计效率,而且设计的程序可读性好、便于调试和修改。笔者在单片机编程中使用功能表图法同样获得很好的效果。

该文的程序例均用Keil C51语言编写。 1 概念说明

为了实际使用的便利我们对功能表图的某些概念做更具体的说明。

1)关于“步”:步是控制系统中一个相对不变的状态。这里所指的系统状态在物理上通常是由控制器的输出所决定。所以“步”总是与特定的输出联系在一起的。在以单片机为中心的控制器中,从广义角度看,“输出”可以是对单片机端口的赋值,可以是对一个标志变量的赋值,也可以是调用一个数据处理子程序。如果一个步不涉及端口赋值,那么这个步是一个虚拟意义上的步,我们称之为虚步。

2)关于“转换条件”:当转换条件由多个条件组成时,我们可以将它们划分为预备条件和触发条件。预备条件即预先需准备好的条件。触发条件即为转换发生的“点火”条件。在编程时我们将预备条件放在内层判断,将触发条件放在外层判断。这样安排的好处是:当触发条件不成立时不需要对预备条件进行无效的重复判断,以节约单片机的程序执行时间。

3)关于“路”的定义:如果一个序列中最多只有一个步活动则这个序列称为一路。同一路中不同的步不能同时活动。不同路的步可以同时活动。只有一个步的序列,称为单步路。我们可以设计多路结构的程序以完成多任务操作。在C语言程序中我们用一个无符号单字节型变量表示同一路各步的进展,这样从形式上保证同一路不会出现二个以上步同时活动。

龙源期刊网 http://www.qikan.com.cn

2 功能表图的C语言表达 2.1 单序列的C语言表达

图1为第1路第i步到第m步单序列的功能表图。 4 基于状态机思想的单片机主程序架构

图6显示的主程序流程图是一种基于状态机思想的主程序架构。其的特点是单大循环、模块化、按步无等待轮询。

输入查询模块将端口值输入到内存变量,后续要引用的端口输入改为引用对应的内存变量。这样安排是保证同一扫描周期内的输入变量值保持不变。前公共处理模块用于处理预先要处理的非步内事务,以及来自中断服务程序的消息(标志)所触发的事务。后公共处理模块用于处理下一扫描周期开始前需要处理的非步内事务,如保存本次扫描的端口输入值,以便检测该输入的跳变情况。各路模块是指各路序列对应的程序模块。各种中断服务程序处理强实时性事务。中断服务中如有耗时长且实时性要求不高的事务,应该使用标志,将此类事务引到主程序中处理。 5 应用实例

举一个简单的实例来进一步说明功能表图的使用方法。图7为一个单车道车辆闯红灯抓拍的功能表图。本例不考虑两车紧跟闯红灯、车辆检测器误动作及红灯故障等情况。停车线两侧埋有2个车辆检测器的地感线圈。车辆先进入线圈1再进入线圈2。对闯红灯的车辆需要抓拍3张照片作为违章证据。

上述代码中,Capture()为抓拍子程序。TM1的定义及相关代码见3。51单片机定时器0做时标定时器,TM1计时单位为10ms。biSen1与biSen2分别为车辆检测器1和2的状态变量,=0为有车。biSen10为前一扫描周期的biSen1值。语句biSen10==1&& biSen1==0表示车辆检测器1输出为下降沿,即车辆进入线圈1时的车辆检测器1输出状态的变化。 6 结束语

该文探讨了功能表图在单片机编程中的应用方法。该方法已应用于产品开发的单片机编程中,实践表明使用该方法具有以下优点:1)可更清晰地描述编程思路,便于交流,减少疏漏。2)使程序更易于模块化,便于修改。3)可提高单片机的运行效率,增加系统的实时性。 参考文献

[1]GB/T 21654-2008顺序功能表图用GRAFCET规范语言.

龙源期刊网 http://www.qikan.com.cn

[2]GB/T 6988.6-93控制系统功能表图的绘制.

[3]张惠生.控制系统功能表图在PLC程序设计中的应用研究[J].北京建筑工程学院学报,2003(12).

[3]张俊.状态机思路在单片机程序设计中的应用[J].今日电子,2009(2). [4]贺海峰.基于消息的单片机编程方法[J].广西大学梧州分校学报,2005(01). 作者简介

陈红(1960-),男,汉族,硕士,工程师,研究方向:道路车辆抓拍系统、自动控制。