《基于RS232_485协议的多机通信系统的设计.pdf》由会员分享,可在线阅读,更多相关《基于RS232_485协议的多机通信系统的设计.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、收稿日期:2008-08-27基金项目:南昌工程学院青年基金项目(2006K J017)作者简介:刘萍先(1974-),男,硕士,讲师.文章编号:1674-0076(2008)06-0016-04基于RS232/485协议的多机通信系统的设计刘萍先1,曹清华1,赵筱媛2(1.南昌工程学院 机械与动力工程系,江西 南昌330099;2.江西财经大学 职业技术学院,江西 南昌330013)摘 要:基于RS232/RS485协议,利用MCS51系列单片机和VB6.0及WinAPI函数,完成一对多的数据通信系统设计,同时对多机通讯编程问题进行了讨论,指出了使用WinAPI函数解决MSCOMM通信控件无
2、法实现的多机通讯问题的关键点,并提供了一个实现了该方案的电镀槽数据采集与控制系统的实例.关键词:RS485;VB6.0;多机通讯;串口通讯;MSComm中图分类号:TN91 文献标识码:ADesign of multi2machine communication system based on RS232/485 protocolLIU Ping2xian1,CAO Qing2hua1,ZHAO Xiao2yuan2(1.Department of Mechanical and Dynamic Engineering,Nanchang Institute of T echnology,Nanc
3、hang 330099,China;2.School of Professional T echnique,Jiangxi University of Finance&Economics,Nanchang 330013,China)Abstract:This paper introduces a design based on RS232/RS485 protocol,which has implemented the one2to2many(1N)communication by applying MCS51 single chip,Visual Basic 6.0 and WinAPIfu
4、nction.Mean2while,the paper analyzes the problem of multi2machine communication,points out the key to the problem thatMSCommfails to solve by using the WinAPI function,and presents an example of plating bath data gatheringand control system.Key words:RS485;VB6.0;multi2machine communication;serial co
5、mmunication;MSComm0 前 言在工业领域,主从式的设备监控管理模式应用越来越来广泛.一台上位机同时监控多台下位机(1N),相比一台上位机监控一台下位机(11)的模式,更具有经济性、方便性和时效性.在一对多的通信模式中,由于下位机与上位机、下位机与下位机之间的物理位置相距较远,运行环境复杂、干扰大,使用RS232串口通讯(最长15 m)完全不能达到要求,而通讯距离远(最长1 200 m)、抗干扰能力强的RS485串口通讯协议完全能够胜任工业中复杂的电磁环境.RS232总线只能实现一对一的通信,RS485总线可挂接32台设备,可进行1N的通信1.而PC机具有较强的数据分析处理能力,
6、良好的人机界面及大容量数据存储空间,可充当上位机,用来监控下位机的运行状况.但是,通常PC机上只有RS232C串口,要使用RS485来进行实现1N通信,必须将RS232通信协议与RS485通信协议进行双向转换.下位机通常采用单片机来实现,也可用可编程序控制器(PLC).MCS51系列单片机具有价格低,功能强,抗干扰能力好、温限宽和面向控制等特点.Visual Basic6.0以其强大的功能、使用简单、能在短时间内开发出高效的通信程序而成为Windows系统开发的主要编程语言.VB可直接使用用户自定义控件VBX或OCX文件;VB可通过调用动态链接库(DLL,dynamic link librar
7、y)或Win32 API函数来加快应用程序关键部件的执行第27卷 第6期2008年12月南昌工程学院学报Journal of Nanchang Institute of TechnologyVol.27 No.6Dec.2008速度;VB支持面向对象编程,支持链表存储数据对象,在编程过程中,程序更具结构化,模块化.1 系统设计图1为典型的一对多的主从通信控制模式,PC机充当主机,多台下位机充当从机.由于RS232串口逻辑电平为-15-3 V(逻辑1)和+3+15 V(逻辑0),传送距离最大为15 m,而RS485采用RS422A的通信电平,为 2 6 V,当速率为9 600 BPS时,传送距离
8、可达1 500 m2.因此,这两种总线必须通过一个电平转换装置来进行互联.同时,由于下位机使用单片机如AT89S52芯片,只有串行接收(RXD)、发送(TXD)引脚,图1 系统结构图只支持TT L电平,与RS485总线电平不匹配,因此不能直接与RS485总线相连,在电路设计中需增加一MAX487转换芯片来驱动.与RS422不同,RS485总线只能处于半双工模式,“收”和“发”不能同时进行,系统的工作模式只能是一种“应答”工作模式.系统结构如图1所示.2 系统通信软件设计整个多机通信系统设计的关键在于系统通信模块的实现.一对多的通信模式有别于单一的一对一通信,它采用主从工作模式.由于通信总线上并
9、挂着多台下位机,每一台下位机都是平等的.上位机为了能识别下位机,需要对每一台下位机进行编址,即一个类似于以太网卡MAC地址的十六进制编号.这个地址编号在该RS485总线上是独一无二的.当上位机需要监控目标下位机时,首先发出具有编号的地址帧于RS485总线上,此时总线上的每一台下位机都将接收到这个地址帧,并进行判断.若目标地址与自身相符,说明该下位机被选中,要求接收发送监控数据,即收发数据帧信息,否则,退出并回到接收地址帧状态.数据的交换过程(包括建立连接和交换数据)采用一问一答的方式,上位机询问了下位机,下位机才给予应答,收到应答后,数据交换才继续进行下去.这样的方式可以避免多个下位机间没有次
10、序的数据通信,扰乱整个网络上数据的传输.为了让下位机能够识别地址帧和数据帧,那么在帧结构构成上需要进行单独设计.串行数据以高低电平来区分0或者1,以一个字节(Byte)为最小单位进行发送,一个Byte为8个二进制位(Bit),另外附加3个位作为起始位、停止位和奇偶校验位.在选择不使用奇偶校验的情况下,串口一次最小传送10个Bit,如果需要奇偶校验,则是11个Bit,排列为起始位数据位1到8奇偶校验位停止位.起始位和停止位是必不可少的,可利用的只有奇偶校验位,即习惯中的最9位.令第9位为1,代表该数据为地址帧,令第9位为0代表数据帧.MCS51系列的单片机中的串行通信模式2、3都支持区分地址帧和
11、数据帧,Microsoft Windows操作系统同样支持这项功能.2.1 下位机通信程序设计下位机采用AT89S52芯片,通信程序采用主从工作模式,下位机被动地接收上位机的指令.其程序流程如图2所示.该程序的关键点在于判断查询地址是否是已方.若是,一是发回确定数据,二是紧接进行相应的数据接收和发送;否则再次回到接收地址帧状态.下位机通信中断程序如下:RS232INT:PUSH ACCPUSH PSWCLR RIACALL SCONDELAYMOV A,SBUF/读串口数据CJNE A,01H,OUTRS232/判断地址编号是否与该机编号相符否CLR SM271第6期刘萍先,等:基于RS232
12、/485协议的多机通信系统的设计MOV A,#055H/相符,则返回一个55H数据回,说明查到设备ACALL SENDDATAACALL RECIVEDATAJB 2FH.6,OUTRS232MOV 40H,A图2 下位机通信中断处理流程图ACALL RECIVEDATA/接收数据JB 2FH.6,OUTRS232MOV 41H,AACALL RECIVEDATAJB 2FH.6,OUTRS232MOV 2DH,AMOV A,42HACALL SENDDATAMOV A,43HACALL SENDDATA/发送数据MOV A,44HACALL SENDDATAMOV A,45HACALL SE
13、NDDATAMOV A,2EHACALL SENDDATASETB SM2OUTRS232:SETB SM2POP PSWPOP ACCRETI2.2 上位机通信程序设计上位机通信程序作为整个系统中的主机,肩负着系统数据采集、指令下达,同时提供信息系统管理功能的多重任务.其中通信模块是系统中的核心部件.通信模块的实现方法有多种,在VB6.0中,可用:(1)MSCOMM控件;(2)直接调用动态链接库(DLL,Dynamic Link Library);(3)调用API函数的方式.MSCOMM是微软提供的标准通信控件.利用该控件可对串行通信的数据发送和接收进行设置,还可对串口状态及串行通信的信息格
14、式和协议进行设置.在通信过程中可以通过触发OnComm事件来追踪、处理通信和错误事件的发生.或通过查询的方式,在每个重要的程序功能之后检查CommEvent属性值来检测事件和通信错误.程序设计简单方便,快捷3.但是MSCOMM控件中关于通信的很多参数的设置没有提供,致使特殊情况下,如多机通信,无法成功通信握手.调用动态链接库与调用MSCOMM控件相似.第三种方法通过调用Windows底层通信API函数,如WriteFile和ReadFile函数,来发送和接收数据.程序中对串口通信的操作,与文件操作类似.同时,通信中,可利用DCB(device control block)串口设备控制块,来配置
15、串口参数和串行通信驱动程序,从而灵活地实现多机通信.在VB6中,作者专门设计了一个通信类,并定义它的属性和方法,如表1所示.在类的定义中,按照要求将系统API函数进行包装,对外提供统一的接口.调用时,可按如下步骤进行:(1)首先将类进行实类化,创建一个通信类(Comm)对象:在Dim AComm as New Comm(2)打开一串行端口,如打开COM1,runResult=ACmOpenPort(1)(3)调用初始化方法,如:runRe281南昌工程学院学报2008年sult=ACmInit()(4)设置参数,如runResult=ACmSetPara(“9600,M,8,1”),这是设置通
16、信波特率9600,标志位M(置串行通信数据格式中的第9位为1,表示地址帧),数据长度8位,停止位1位.若要发送数据帧时,参数设置方法调用时,实参应为“9600,S,8,1”,S表示空位,即第9位设置为0.(5)发送或接收数据.在发送和接收之前,首先将要发送的数据存放在一个数组中或定义一个空的数组单元以用于存放接收到的数据.如:runResult=ACmSendData(data)(6)结束通信.ACmClose()通过实验,在通信初始化方法commInit()中,串口设备控制块的参数设置如下参数值时可以成功进行多机通信连接,而采用系统默认的参数则不能成功连接.flag=GetCommState
17、(HCF,typDCB)=typDCB.BaudRate=9600typDCB.ByteSize=8typDCB.DCBlength=28typDCB.EofChar=0typDCB.ErrorChar=0typDCB.EvtChar=0typDCB.fBitFields=4113typDCB.Parity=4typDCB.StopBits=0typDCB.wReserved=0表1 通信类项目名称:类型属性方法-HCF:long-typDCB:DCB+commOpenPort(comPort:byte):Boolean+commInit():Boolean+clearBuffer():Boo
18、lean+commSetPara(strSettings:String):Boolean+commSendData(data():Byte):Boolean+commReceiveData(Buffer():Byte):Boolean+commClose()typDCB.XoffChar=19typDCB.wReserved1=0typDCB.XoffLim=512typDCB.XonChar=17typDCB.XonLim=2048typDCB.XonLim=2048=图3 电镀槽数据采集与控制信息管理系统软件主界面flag=SetCommState(HCF,typDCB)设置DCB块.其中
19、,typDCB为设备控制块,HCF为通信控制句柄.3 实现实例基于上述系统结构,实现了电镀槽数据采集与控制信息管理系统软件,如图3所示.上位机系统采用VB6.0编写,程序大量使用了面向对象的编程思想,并利用数据链表来存放和遍历数据对象(clsDataofObject)和参数设置对象(clsSetValueofObject).系统每隔10 s,上位机依次向下位机发送一条查询指令.下位机接收到指令,返回成功应答数据55H,表明主机与从机之间已经成功建立连接,交换数据开始.最终各个下位机传送来的电压电流数据及工作状态信息都显示在表格中.(下转第28页)91第6期刘萍先,等:基于RS232/485协议
20、的多机通信系统的设计1.5 算 例已知参数:冷媒水的进口温度14,加热水进口温度为90 时,得出的两级吸收式制冷循环变工况运行的性能曲线.图3所示为冷凝温度变化引起的制冷量的增加(以冷凝温度为32 的制冷量为基准),从图中可以看出,随着冷凝温度的降低,两级吸收式制冷循环的制冷量是提高的,在冷凝温度为30 时,制冷量增加了11.6%.这是符合基本原理的,因为降低了冷却水温度,就提高了吸收器中溴化锂溶液的吸收能力,可图3 冷却水温度与制冷量的关系以降低吸收器中的出口溶液浓度,提高了系统的放气范围,减少了循环溶液的流量,制冷量也就相应增加.2 结束语本文根据两级吸收式制冷循环的循环流程特点,建立了循
21、环中各个部件的数学模型,编制了溴化锂溶液以及水的热物性参数的通用计算模块和整个系统的仿真软件,模拟了冷却水温度变化对两级系统制冷量的影响.该仿真软件能够有效的模拟各种变工况运行,得出影响系统的一些重要的参数,从而可以对系统进行最优方案的设计,优化系统的运行工况,减小系统的不可逆损失,提高热效率,为太阳能空调的商品化提供了分析手段.参考文献:1 Rivera W,Xicale A.Heat transfer coefficients in two phase flowfor the water/lithium bromide mixture used in solar absorption re
22、frigerationsystemsJ.Solar Energy Materials&Solar Cells,2001,70:309-320.2陈 滢,朱玉群,耿 玮,等.低温热源驱动的单效/双级(SE/DL)吸收式制冷循环J.太阳能学报,2002,(1):102-107.3高田秋一.吸收式制冷机M.北京:机械工业出版社,1987.4 McNeely LA.Thermodynamic properties of aqueous solutions of lithium bromideJ.ASHRAE Transactions,1979,85:413-427.5戴永庆,郑玉清.溴化锂吸收式制冷机
23、M.北京:国防工业出版社,1996.(上接第19页)4 结束语系统硬件采用AT89S52单片机和RS2485驱动芯片MAX487组网,通过转换器,将RS485总线与RS232串口对接.软件采用主从通信协议,下位机采用通信模式2,上位机利用第9位奇偶校验位区分成地址帧和数据帧,利用VB6.0和WinAPI函数设计上位机软件.通过软件硬件的结合,成功实现了一对多通信.在给出的信息系统实例中,可以对下位机进行管理,包括删除、添加和修改下位机的参数信息.主机根据这些信息来与地址匹配的从机通信,完成对整个网络中所有设备的监控.参考文献:1王 琦,秦娟英,周 伟.用RS2485构成总线型多点数据采集系统J.计算机自动测量与控制,2000,8(6):45-47.2张筠莉,刘书智.Visual C+实践与提高:串口通信与工程应用篇M.北京:中国铁道出版社,2006.3张红兵,张宁达,郑云萍.VB6.0环境下利用Mscomm控件实现串行通信J.微计算机信息,2002,18(12):67-68.4李 华.MCS-51系列单片机实用接口技术M.北京:航空航天大学出版社,1993.82南昌工程学院学报2008年
限制150内