摘要:计算机监控系统集成了计算机软件、硬件和信息通信系统,并广泛应用于众多领域。本文以STC89C52单片机为核心研制了一台计算机监控学习机,通过USB接口获取电源,利用RS-232接口与上位机通信,集成了模拟量输入、开关量输入与输出,设计了通信协议,妥善解决了内部通信问题,并通过了“通用多功能计算机监控系统测试软件”的测试。该计算机监控学习机可以用来实践计算机监控系统相关的软件开发技能和硬件设计技能,对培养应用型人才具有重要意义。
关键词:STC89C52;串行通信;受控机;数据采集
中图分类号:TP391.6 文献标识码:A DOI:10.3969/j.issn.1003-6970.2012.01.024
引言
软件产业和集成电路产业是国家战略性新兴产业,是国民经济和社会信息化的重要基础。计算机监控系统集成了计算机软件、硬件和信息通信系统,并广泛应用于安防、消防、军事、工业控制、航空航天、高速公路等众多领域。在计算机监控系统中,主控机程序一般采用可视化高级语言开发,例如,文献[1]利用Visual C++开发主控程序,实现了基于MOXA 卡的多串口监控系统;文献[2]则采用C#完成主控程序的开发。受控机软件采用C语言的较多,例如,文献[3]利用C语言实现了一个基于嵌入式系统的电源管理系统。
由于计算机监控系统所涉及的技术较多,如何在高校低成本地实践计算机监控系统的研发,提高学生的综合应用知识的能力,为企业和研究机构输送合适的人才,成为一个重要的研究课题。文献[4]利用软件仿真模块充当受控机并集成了软件接口转换工具,搭建了一个计算机监控系统仿真开发平台,成功用于教学实践,对提高教学质量起到了很好的效果。文献[5]利用W77E58单片机设计了车载终端图形显示系统,文献[6]设计了一个“基于MSP 430单片机的智能电池监测仪”,可以通过RS-485接口与上位机进行通信。本文将利用STC89C52单片机开发一个计算机监控学习机(下文简称学习机),通过USB接口获取电源,利用RS-232接口与上位机进行通信,集成了模拟量输入、开关量输入和输出,可以跟文献[4]一样,用来实践计算机监控系统的软件开发技能;也可以和文献[5]及[6]一样,用来实践计算机监控系统相关的硬件设计技能。
1硬件设计
学习机的硬件模型如图1所示。STC89C52单片机是一个低电压、高性能的CMOS 8位单片机,片内含8K字节的可反复擦写的Flash只读程序存储器(ROM)和256字节的随机存取数据存储器(RAM)。学习机的可执行二进制文件只有6K,所要处理的变量和其它数据不足256字节,因而,能够满足需要。
四路开关量输出(D01-D04)连接继电器,可以由主控程序控制开关的闭合或打开。两路模拟量输入(A11-A12)采用18b20温度传感器,两路开关量输入(D11-D12)可以外接红外传感器,也可以直接短接使开关闭合。无论是开关量输出还是开关量输入,都有对应的发光二极管用来指示开关的状态。
USB接口用来给学习机提供电源。RS-232用来将程序下载到学习机,主控程序也通过该接口采集数据或控制输出开关。另外,计算机监控模块一般都有地址,本学习机采用EPROM来保存地址,该地址可以通过RS-232接口进行设置。
2通信协议的设计
主控机为了对学习机进行读写控制,必须遵循一定的格式,这就是通信协议。所设计的协议用1表示开关闭合,0表示开关打开。用16进制字节作为载体,异或(XOR)校验,结尾码使用回车符CR.如果主控机发送的协议,其地址码、校验码或结尾码等不正确,学习机都不作响应。
2.1读协议
EOT ID Read XOR CR
读协议占5个字节,EOT是前导字符04,ID是地址码(范围01-FF,下文同),缺省为叭,可根据需要修改(见修改地址协议),Read是读协议标志52,XOR是前面3个字节的异或校验码,CR是固定的结尾码标志0D.
2.2读协议的响应协议
STX ID bytel byte2 byte3 byte4 XOR CR
读协议的响应协议占8个字节,STX是响应协议的前导字符02,bytel为输出开关字节(D01-D04),按顺序使用低4位(最低位对应第一个输出开关);byte2是输入开关字节(D11-D12),按顺序使用低2位;byte3为第一个温度字节(A11),byte4为第二个温度字节(A12)。
2.3控制协议
STX ID Write byte XOR CR
控制协议占6个字节,Write是写标志57,byte是输出控制信息(D01-D04),使用低4位,由此控制输出开关的状态,此协议不需要响应。
2.4修改地址协议
FF Write ID XOR CR
修改地址协议占5个字节,以16进制数FF作为前导字符,ID为需要设置的新地址,范围为01-FF.学习机收到该协议后,将原样返回,随后,将新地址保存在EPROM中。以后,主控机对学习机进行读写控制将使用新地址才有效。
3串行通信的实现
学习机采用标准的RS-232接口,管脚与PC机上的定义一致,接口参数固定为“9600,n,8,1”,且无任何握手信号,仅使用其中的RxD,TxD和GND引脚来收发数据。
学习机中的程序采用Keil C工具开发,串行通信是其中的核心技术之一。STC89C52单片机采用TI作为发送中断标志,该标志可以被查询,在一帧数据发送完成时被置位。本文设计ToCom函数用来发送一个字节,首先给SBUF寄存器赋值,等待数据发送完毕后,让TI复位。SendByteS函数建立在ToCom函数的基础之上,用来发送整条协议,只需要逐个取出协议字节然后调用ToCom发送即可。这种数据发送方法简单可靠,可以方便地移植到其它单片机系统中。
RI为接收中断标志,在接收完一帧有效数据后被置位,此时,需要读取SBUF寄存器中的数据,并将RI标志复位,以便接收下一个字节。每一条通信协议都是一个整体,因而,需要将接收到的字节组装起来。STC89C52单片机系统传输速度较慢,中断接收时,数据常常不均匀流畅,其中存在空白间隔,给数据处理带来困难。大部分监控模块都有串口初始化函数、数据发送和接收函数,如果直接使用数据接收函数来接收数据,则由于以上问题,常常接收到残缺的数据,使工作无法完成,尽管逻辑上没有任何错误。在具体实现上,应该在接收到第一批数据时,开始等待T时间片,将第一批数据与随后的第二批数据相加,如此继续循环,直到新的T时间片结束而无数据到达,再跳出循环。至于T时间片大小的选取,应该根据具体的模块或设备来调整,如果T过小,则一个数据包会被截成几个小的数据包;如果T过大,则会将两个以上数据包合并为一个数据包。数据接收算法如图2所示。
从第3节可以看到,主控机发送给学习机的协议有3条,即读协议、控制协议和修改地址协议,其中最长的占6个字节。这里的数据接收缓冲区用一个长度为9的字节数组来表示,如表1所示,其中位置0用来对接收到的字节计数,位置1开始存放有效数据。如果收到5个字节,则位置0存放5,位置1~5即是有效数据,位置6以后的数据忽略。
4测试
学习机采用通用多功能计算机监控系统测试软件进行测试。该测试软件基于RS-232接口,既可以充当主控机用来测试受控机,又能充当受控机用来测试主控机,而且,可以根据用户选择自动生成通信协议或对通信协议进行校验。测试软件与学习机通过一根RS-232交叉数据线进行连接,测试软件的串口参数、校验码与结尾码等均与学习机的一致。
测试软件能够修改学习机的地址,成功控制输出开关的状态。当向学习机发送读协议时,能够准确读取输入开关、输出开关与模拟量输入的数据。用手触摸温度传感器18b20,改变输入开关的状态,测试软件也能成功读取变化后的数据。修改学习机的地址后,测试软件使用旧地址,学习机不响应;使用新地址,学习机正常响应。连续24小时,每过5秒间隔发送读协议和控制协议,学习机正常工作不死机。测试结果表明,成品机达到了设计的预期效果。
5应用
图1所示学习机的硬件模型可抽象为图3所示的功能模型,其中学习机充当虚线框所在的受控机系统,除了与主控机通信外,还采集模拟量与开关量输入及开关量输出数据,同时对开关量输出进行控制。
计算机监控系统的软件一般分为主控机软件和受控机软件,对于主控程序的开发,可以根据I/0情况设计控制逻辑。学习机有4路输入和4路输出,可以分别用两路输出绑定两路输入.例如。如果丰控机检测到D11闭合,则奇即控制D01闭合,反之亦然,对于D12和D02也可如此配对;如果A11温度升高,则D03打开(停止加热),如果A11温度降低,则D03闭合(加热),对于A12和D04也可如此配对。这是自动控制模式,也可采用手动模式,通过点击按钮来控制输出。
主控程序可以采用C语言、汇编语言和可视化高级语言开发,随着学习的深入,可以加入数据库,用来保存监控策略和监控数据,可以将通过串口检测到的异常数据(温度超过上限或低于下限)通过因特网发送报警信息。这样,可以用来培养学生的学习兴趣,锻炼计算机思维,提高编程水平。对串行通信协议的学习,有助于学生进一步理解后续计算机网络课程中的TCP/IP协议,对串口的操作,可以让学生对串口在工程中的应用产生感性认识。由于学习机携带方便,只需要串口连接线和USB连接线,因而,可以让学生以宿舍为实验室进行实践。
利用C语言和汇编语言来监控学习机,主要让学生理解这些语言的工程应用,在工程实践中,一般使用这两种语言开发受控机程序。对于受控机程序的实践,可以修改学习机的协议,让学生重新编写学习机中的Kdl C程序。另外,在单片机课程设计中,可以让学生模仿单片机硬件系统的开发,从绘制线路板到元器件的焊接,程序编写和下载等整个过程都过一遍。
6结论
本文以STC89C52单片机为核心研制了一台计算机监控学习机,通过USB接口获取电源,利用RS-232接口与上位机通信,集成了模拟量输入、开关量输入与输出,设计了通信协议,并提出了一个通用的串行通信解决方案。该学习机通过了“通用多功能计算机监控系统测试软件”的测试,用于教学,可以从大一到大四对学生进行技能强化训练,形象直观。涉及的主要课程有:C语言程序设计、汇编语言、计算机组成原理、计算机接口、计算机网络、数据库系统原理、NET技术、Java技术、单片机原理等。同样是学习相同的课程,如果引入计算机监控学习机并以此为主线对学生进行实训,对培养掌握硬件设计和软件开发的复合型人才具有重要意义。
参考文献
[1]IJi,Ruixian.Implementation 0f serial communication based0n MOXA multiport serial boards in VC++[C].3rd International Conference 0n Information and Computing,Zibo,2010,v2,p230 232.
[2]Jing Shaohong,Li Xiaolu.Design 0f host computer monitoring configuration software based 0n C#[C].InternationalConference 0n Measuring Technology and MechatronicsAutomation,Changsha,2010,vl,p1000 1003.
[3]Su,Shiping;Liu,Guiying;Luo,xi.A new power quality monitoring and management system based 0n embeddedcomputer technique[C].Proceedings-International Confer-ence 0n Intelligent Computation Technology and Automation,Nanjing,2008,p1635 1640.
[4]Ma Yuchun,Ii Zhuang.Comprehensive Practice Researchof Professional Platform Courses Based 0n Computer Monitor Technologies[C].2011 the 13th IEEE Joint InternationalComputer Science and Information Technology Conference,Chongqing,201l,vl,p115 118.
[5]余振华,张其善,杨东凯.基于W77E58单片机的图形液晶显示的设计与应用[J].计算机工程与应用,2008,44(22):7173+76.
[6]姜印平,刘江江,李杰.基于MSP 430单片机的智能电池监测仪[J].仪器仪表学报,2008,29(5):1040 1043.
[7]马玉春.通用多功能计算机监控系统测试软件:中国,2011SR025314[P].201l-5-3.
相关热词搜索: 学习机 研制 监控 计算机 STC89C52