余凤翎 詹 彤 蔡智圣
摘 要:介绍一种基于AT89C52单片机网络的智能化考试系统设计和实现方案,该系统通过采用RS 485现场总线技术对系统底层设备的工作状态进行实时监控。阐述了系统结构及各部分的功能和实现的方案,重点介绍通信系统的设计与实现,该方案已成功应用到电子设备故障检修技能智能化考核设备,并已产品化。应用结果表明,数据传输可靠,结构简单,成本低,互换性及拓展性好,有广泛的应用价值。
关键词:AT89C52单片机;RS 485;通信网络;监控系统
中图分类号:TP368 文献标识码:B
文章编号:1004-373X(2009)01-135-04
Design and Implementation Network Monitoring System Based on AT89C52
YU Fengling,ZHAN Tong,CAI Zhisheng
(Industry Center,Guangdong Polytechnic Normal University,Guangzhou,510665,China)
Abstract:This paper presents the design and implementation of an intelligent test system which is based on network AT89C52.The system monitors the working conditions of the system basic equipment through the use of RS 485 fieldbus technology.Focusing on the design and implementation of communication system,it describes structure of the system,functions of each part and realization of the program as well.The program has been successfully applied to the intelligent examination equipment in testing electronic equipment Troubleshooting skills.And this equipment has already become products.The result shows that the data transmission,which is expandable,low cost,good interoperability and with simple structure,is reliable and has a broad application.
Keywords:AT89C52 single chip computer;RS 485;communication network;monitoring system
0 引 言
以电子设备故障检修技能考核与训练智能化系统为例,介绍由一台PC机与多台单片机组成的主从式网络通信系统,单片机控制作为下位机,负责对电子设备故障点进行数据采集和控制,通过接口将结果传给PC机;PC机作为上位机,对数据进行分析和处理,根据分析和处理的结果来控制单片机的操作。目前,应用Visual C ++开发串行通信实现智能化考核和训练系统的通信方法通常有4种[1]:
(1) 调用API(Application Program Interface)函数实现;
(2) 利用Visual C ++的标准通信函数-inp、-inpw等直接对串口进行操作;
(3) 使用Visual C ++的通信控件(MSComm);
(4) 利用第三方编写的通信类(Cserial)。
以上几种方法中第一种方法使用面较广,但由于需要许多低层设置,比较复杂,专业化程度要求较高,使用困难;第二种需要了解硬件电路结构原理,较难掌握;第三种方法看来较简单,只需要对串口进行简单配置,但使用了令人费解WARIANT类,且不能满足使用多个串口进行复杂处理的需要;第四种方法是利用一个专门针对串行通信的CSerial类,该方法功能较强,只要理解这种类的几个成员函数,就能方便使用。RS 485总线以其灵活性好、成本低、抗干扰能力强、支持节点多、传输距离远、连接简单的优势,被广泛应用于网络单片机系统。在该系统中,上位机采用Visual C ++的Cserial类通信方式;下位机采用ATMEL公司的AT89C52单片机,总线采用RS 485标准组网。
1 系统结构
整个系统是一个基于RS 485现场总线,自定义通信协议,在总线上连接各下位机和上位机,由上位机统一管理的主从式总线型的监控系统。该系统包括监控层、通信层、以及现场设备层[1]。其中,监控层由上位机(PC机)承担,负责接收底层现场设备上传的数据,进行数据的分析和存储,下位机参数的设定和修改,以及实时和历史数据的查询,实现对现场设备的监控管理;通信层通过自制定的通信协议与现场下位机设备进行实时通信,完成数据通信包的打包、拆包、检验等处理;现场设备层由多台电子设备、单片机、继电器、键盘、LCD显示器等组成的监控系统。
系统结构方框图如图1所示。
上位机为教师操作的教学控制管理系统,在微机上用Visual C ++编程实现功能。教学控制管理系统的主要功能为:
(1) 考试的技术准备工作;
(2) 考试的监考工作;
(3) 辅助完成其他考务信息管理工作。
根据功能要求,教学控制管理系统由通讯模块、代码编译模块、代码执行模块、系统管理模块、历史资料查询模块组成,这几个模块和用户界面用户接口一起构成整个系统软件。
下位机作为这个分布式控制系统的学生客户端,是一个基于AT89C52单片机的应用系统。本系统使用计算机、AT89C52单片机、光电耦合器、驱动电路、继电器、彩色电视机等组成的监控系统,通过局域网,构成一个智能化训练及鉴定系统。AT89C52单片机控制系统如图2所示。
AT89C52单片机控制系统采用计算机与AT89C52单片机所构成的多种微处理芯片混合的主从系统,教师机是系统的上位机,实现人机交互和数据交换、检索、存储、处理、更新图形的显示,对下位机(即学生机)的控制和通信等控制。学生机完成数据的采集和信号的处理。教师机作为主机,学生机作为从机。主从机间的通信方式采用串行口方式。每一个训练或鉴定工位均有独立的学生机和彩色电视机,每台学生机之间通过网线互联。学生机通过继电器控制彩色电视机故障点的状态。
AT89C52单片机控制系统需要进行软、硬件开发。与单个独立单片机系统不同,网络中单片机不仅要按预先设计的程序工作,更多时候需要根据来自上位机的控制指令适时调整工作程序。实操训练或考试时下位机主要功能如下:
(1) 作为上位机的终端;
(2) 作为电子设备控制器;
(3) 提供考生交互界面;
(4) 其他监考服务。
2 通信接口设计
通信接口是单片机控制系统的重要组成部分。单片机与计算机之间不断地进行信息交换和传输,而这种信息的交换和传输都必须通过通信接口和数据总线来实现,通信接口器件和总线的合理选择是单片机控制系统中数据交换和传输顺利进行的前提和保障。
该系统采用RS 485总线组网,上位机通过串行接口经标准RS 232总线和RS 232/RS 485转换器将 RS 232标准电平转换为RS 485标准电平与考生的下位机端通信;在下位机端SN75176将RS 485标准电平转换为TTL电平接入处理器的异步串行通信口(UART),实现RS 485网络的半双工通信。
RS 232/RS 485转换器采用市场上即插即用型的产品,本身已经实现智能控制收发使能,无须更改任何上位机硬件。上位机最多可连接32台下位机,如果在下位机端采用SN75184则上位机最多可连接64台下位机。
RS 485接口电路的设计要充分考虑线路上的各种干扰及线路特征阻抗的匹配。信号在传输过程中会产生电磁干扰和终端反射,使有用信号与干扰信号在传输线上相叠加,当干扰太大时,可导致通信无法进行。该系统选用SN75176 RS 485接口芯片,RS 485总线网络的通信介质采用带有屏蔽层的双绞线,并在传输线末端各安装120 Ω匹配电阻,以消除传输线上信号的反射,通信距离可达到1 200 m。
3 通信协议
RS 485接口的软件设计对系统联网的可靠性有很大的影响。由于RS 485总线是异步半双工的通信总线,在某一时刻总线只可能呈现一种状态,所以这种方式使用于上位机与下位机的查询方式通信,为了协调总线的分时复用,必须制定一套合理的通信协议,以保证数据通信的正常进行。本系统通信协议是:波特率约定为9 600 b/s,T1工作于方式2,初值为FDH,SMOD=0。串行口初始化为方式3。通信格式要求如下:
通信数据格式总共24 b(二进制),8 b识别码, 8 b控制指令代码,8 b故障点代码,格式如下:
规定如下:
识别码为下位机地址码,地址范围为70H~88H。
控制指令代码为:字符“1”表示故障点短接,ASCII码为“31H”;字符“0”表示故障点断开,ASCII码为“30H”。
(1) 上位机状态字:
b0:发卷指令标志1,无发卷指令标志0;
b1:开考指令标志1,无开考指令标志0;
b2:答题查询指令标志1,无答题查询指令标志0;
b3:强行中止答题指令标志1,无强行中止答题指令标志0;
b4:恢复答题指令标志1,无恢复答题指令标志0。
(2) 下位机状态字:
b0:登陆请求1,无登陆请求0;
b1:已登陆状态标志1,未登陆状态标志0;
b2:已收卷状态标志1,未收卷状态标志0;
b3:开始答题状态标志1,未开始答题状态标志0;
b4:交卷请求标志1,无交卷请求标志0;
b5:已交卷标志1,未交卷标志0;
b6:答题中止标志1,答题恢复标志0。
4 通信过程
上位机开机启动程序,上位机进入轮询过程。此时,下位机开机登陆,在轮询到自己时,发出登陆信息,上位机收到后,进行必要的登陆处理。在所有下位机登陆完毕后或监考老师认为收到所有考生的登陆信息后,按下发卷按钮,对每一个登陆下位机依次发卷。发卷完毕后,由监考老师按下开考按钮,以广播方式发出考试开始指令,下位机显示考试题目,系统开始计时。在考试进行过程中,监考老师可查询任一个下位机的状态(包括考生考试情况);甚至可以启动自动巡考指令,自动巡视每个考生的答题情况。考试过程中考生答题完毕可交卷,在考生按下交卷按钮后交卷,发出交卷信息,上位机接收,并发出正确接收的回复信息。考试过程中,监考老师发现有学生作弊,可随时按下中止考试按钮,中止此下位机的运行,考试记零分。考试时间到,系统自动判断是否仍有考生没有交卷,中止考生答卷,并取回相应下位机的答题信息。上下位机基本轮询及通信动作示意图如图3所示。
上下位机通信动作过程如下:
① 上位机作为网络主控端,以一定时间间隔dt1进行轮询。轮询过程是这样的:首先上位机查询上位机状态字,判断是否存在通讯请求,如果没有,就对轮询到的下位机发出通讯授权标志,若在延迟短暂时间后下位机无应答,置此地址下位机不在线标志,并中止此次轮询;若有应答则置与此下位机通讯的通道标志。
② 下位机发出指令:表明下位机回复查询指令,根据状态字判断下位机状态。
③ 上位机发出指令:表明上位机根据下位机的状态字及上位机状态字,按上位机有优先原则,发出上位机准备接收信息。
④ 下位机发出指令:上位机根据功能指令解析数据,完成相应的显示及确认回复。
⑤ 上位机发出指令:在从下位机向上位机传输信息过程中出现错误时,上位机将向下位机发出重发功能指令,重发次数确定根据调试过程确定。
在设计RS 485通信软件时,要注意对RS 485控制端的软件编程。为了保证数据收发可靠,在RS 485总线状态切换时需要加适当的延时,延时一般控制在 1 ms左右,再进行数据的收发。经过这样处理后,使总线在状态切换时有一个稳定的工作过程。
5 上位机通信软件的设计
上位机通信是采用一个专门针对串行通信的CSerial类进行程序设计的,该方法功能较强,只要理解这种类的几个成员函数,就能方便使用。以下是几个常用的成员函数[2]:
class CSerial
{
public:
CSerial()
~CSerial();
BOOL Open(int nPort=2,int nBaud=9600);
BOOL Close(void);
int ReadData(void *,int);
int SendData(const char *,int);
int ReadDataWaiting(void);
BOOL IsOpened(void){return(m_bOpened);}
protected:
BOOL WriteCommByte(unsigned char);
HANDLE m_hIDComDev;
OVERLAPPED m_OverlappedRead,m_OverlappedWrite;
BOOL m_bOpened;
具体程序代码如下:
Void Ccom m Dlg::On Send()
{
Cse rial Serial;//构造串口类,初始化串行口
If(Se rial.Open(2,9600));//打开串行口2,波特率为9600bps
{
static chat szMessage[ ]="0";// 命令码(可定义各种命令码)
int nBytesSent;
int count=0;
resend:
nBytesSent=Serial.SendData(szMessage,strlen(szMessage));//发送命令码
char rdMessage[20];
if(Se rial.ReadDataWaiting())
{Se rial.ReadData(rdMessage,88);//rdMessage定义接收字节存储区,为全局变量
If((rdMessage[0]!=0*7f)&&(count<3))
{
unt++;
goto resend
}
If(count>=3)
MessageBox(“发送命令字失败”);
}
Else
MessageBox(“接收数据错误”);
}
Else MessageBox(“串行口打开失败”);
}
6 结 语
提出了一种基于AT89C52单片机网络通信系统的软硬件设计,该方案已成功应用在电子产品故障检修技能智能化考核系统中,并将其产品化,经一年多来的使用,运行可靠。此外,由于系统采用模块化设计,灵活性强,可根据用户的实际需要,实现对不同型号、不同品牌、不同功能的终端设备进行控制。因此具有较高的应用价值和推广价值。
参考文献
[1]黄志辉,张利,龙赛琼.基于RS 485现场总线的机床监测系统设计[J].控制与检测,2005(10):39-43.
[2]立现勇.Visual C ++ 串口通信技术与工程实践[M].北京:人民邮电出版社,2003.
[3]穆斌.RS 485总线网络应用中的安全与可靠性[J].光学精密工程,2003,11(2):193-197.
[4]吴秋明,和卫星,陈晓平,等.基于RS 485总线的PC与多台单片机间的串行通信[J].微计算机信息,2006,22(23): 2-8.
[5]钟立,王深茂.一种基于单片机控制的智能型应变仪设计[J].自动化技术与应用,2006,25(3):36-38.
[6]梁建立,李志斌.单片机应用系统的抗干扰设计[J].山西电子技术,2006(1):37-38.
[7]吴允平,蔡声镇,苏伟达,等.51单片机系统扩展多串口设计及应用[J].福建师范大学学报,2006,22(2):29-33.
[8]冯立杰,傅民全,李文波.多CPU嵌入式系统的设计方法[J].现代电子技术,2006,29(6):54-55.
[9]余凤翎,詹彤,陈忠,等.网络控制线路检修训练与考核系统的开发[J].现代电子技术,2006,29(4):138-140.
[10]胡蓉.基于单片机定时器PWM的DTMF远程通信[J].浙江师范大学学报,2006,29(1):66-69.
[11]邹彩虹,姚传安,宋寅卯.远程供水测控终端系统的设计[J].仪表技术与传感器,2006(5):32-34.
作者简介
余凤翎 女,广东潮州人,硕士,教授。主要研究方向为计算机控制、电子技术。
詹 彤 男,广州人,硕士,实验师。主要研究方向为电子技术。