关键词:RS232;监控系统;串口通讯;MSComm控件
Abstract:The paper deals with the serial communication that uses the VB ActiveX MSComm to realize the data communication between an industrial contral computer and multi-communication protocol monitoring devices along with the common communication protocol format and composite structure.The whol e communicational system architecture and optimal management mechanism are prese nted whith an instance of concrete hardware design,This paper also analyzes two modes of serial communication and gives out a corresponding example of the soft ware design. The practical application shows that the syetem has many features, such as simple structure,high reliability and good effectiveness.
Key words:RS232;monitoring system;serial communication;MSComm control
0引言
伴随着现代化生产过程中智能化、自动化程度的提高,越来越多的综合过程系统需要开发自身的数据采集与监控平台[1],利用Windows编程技术开发这样的实时测控应用程序时,关键而且经常要面临与外围监控设备通讯的问题[2,3]。由于串行通讯是在一根传输线上一位一位的传送信息,避免了多条线路特性的不一致,所以现在大量的智能仪器或数据采集模块都带有RS232/485串行通讯接口,通过相应的通讯协议和串口通讯程序,可以将测试、采集的数据传输到上位工控机,以满足各种形式后续数据处理的要求。同时整 个监控系统会根据系统运行情况通过串口向监控设备发送指令,调节设备的运行参数等使得 生产过程平稳进行。该文就是对大型数据采集及监控系统中针对多个设备仪表串口通讯如何实现优化管理和控制做一些探讨。
1系统硬件及信号线的连接
在某大型物理模拟监控系统中共有4个设备利用串口[4,5]进行控制,图1所示系统硬件连接图中,每个设备都通过工控机RS232(<12 m)串口进行远程实时数据采集和控制管理。
系统中工控机与终端的接口只需3根信号线,即发送数据线(TXD)、接收数据线(RXD)和信号地线(SG),便可以直接对终端进行数据的接收和发送,不需对信号线 的状态进行判断或设置。
2多通讯协议与通讯格式
通讯协议是指通讯双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通讯双方必须共同遵守。它属于ISO‘ S OSI 7层参考模型中的数据链路层。当有多个串口检测设备需要与上位机通讯时[6],正确的理解通讯协议是串口通讯的关键和难点。实际上由于各厂家自行定制格式,因此控制、参数设置、参数读取、状态读取指 令相差甚远,没有形成统一的协议标准。表1分别以ISCO注塞泵的Dasnet通讯格式和恒温箱先锋温控仪的Normal通讯格式两个典型为例进行说明,对读者快速、正确理解串口协议起到抛砖引玉的作用。
2.1Dasnet发送命令代码说明
(1)从接收命令的终端设备地址(目的地址)开始,地址是一个数字位(0~9),多个设备连接时,设定地址号不能重叠;
(2)应答方式标识,具体有3种意思:E-错误,B-繁忙,C-接收;
(3)命令源地址:发命令设备的初始地址,一般为0;
(4)长度:表示了所要发送命令的长度,以ASCⅡ码表示;
(5)命令:单独的读命令或写命令(其后带或不带参数)组成;
(6)校验码:是两位十六进制数,它从起始位置到命令结束全部字符的和然后 求补所得结果的单字节校验码(和以256为模等于0);
(7)回车CR符(0DH):表示全命令的结束。
如发送命令:R304STOPD1[CR]
其文本方式发送为:R304STOPD1[CR]
其二进制发送方式为:
计算校验码的方法有:模数的十六进制、模数的十进制、非模数的十六进制、非模数的十进制。现以模数的十六进制方法为例说明校验码的计算:
(1)22FH=52H+33H+30H+34H+53H+54H+4FH+50H;
(2)2F=22FH÷100H;
(3)D1H=100H-2FH;
(4)把D1H用16进制两个ASCⅡ码表示,并加到命令结尾;
(5)把“CR”(0DH)加到最后表示整个命令的结束。
2.2Normal发送全文件和返回全文件通讯格式代码说明
(1)起始符以“ @”(40H),表示文件的开始;
(2)地址:调节器设定的地址号00~31,多调节器时,设定地址号不能重叠;
(3)文件:文件是由单独的读命令或写命令(其后带或不带参数)组成;
(4)文件是以ASC Ⅱ码字符冒号“:”(3AH)作为结束;
(5)BCC校验码:从起始字符“@”后到文件的结束符“:”(含结束符)全部字符的异或运算(XOR),所得结果的双字节校验码;
(6)回车CR符(0DH)表示全文件的结束。
举例说明:
二进制异或30H XOR 31H XOR 44H XOR 31H XOR 3AH=4EH
其文本方式为:@01D1∶4E CR
其二进制方式为
?40H30H31H44H31H3AH34H45H0DH
2.3多串口通讯协议特点
通过以上两种通讯格式的对比可以看出,一般都具有如下的组织结构和特点:
(1)开始、结束标志字符所有信息传输必须以一个标志字符开始,且以同一个字符结束。这个标志字符是[CR],称标志场(F)。从开始标志到结束标志之间构成一个完整的信息单位,称为一帧(Frame)。所有的信息是以帧的形式传输的,而标志字符提供了每一帧的边界。接收端可以通过这些信息来探知帧的开头和结束,以此建立帧同步。
(2)地址场和控制场在标志场之后,可以有一个地址场A(Address)和一个控制场C(Control)。地址场用来规定与之通讯的次站的地址。控制场可规定若干个命令。其宽度可为8位或16位。
(3)信息场跟在控制场之后的是信息场I(Information),也叫数据场,包含有要传送的数据。并不是每一帧都必须有信息场,即数据场可以省略,当它省略时,则这一帧主要是控制命令。
(4)帧校验信息紧跟在信息场之后的是两字节的校验信息,帧校验场称为FC(Frame Che ck)场或称为帧校验序列FCS(Frame Check Squence)。校验码可以为纵横奇偶校验或16位循环冗余校验CRC(Cyclie Redundancy Code )。正确理解校验码的计算是实际串口通讯的难点和关键。?
3管理体系结构
基于多协议的串口通讯系统在大型系统的开发过程中,扮演着极其重要的角色,它具备完整的体系结构,在实践中形成了一套完整的优化管理方案,具有很清晰的层次性。从功能上讲,它的涵盖面很广,从硬件设备的驱动程序到开发整套系统所需的各个开发环节在内,具体结构如图2所示。
设备硬件层:主要包括基于RS232串行接口的物理测量设备,它是完成整个系统自动化的底层硬件基础。
资源管理层:是软件设计平台和设备之间连接的桥梁,主要由接口驱动和接口软件、控件组成。VB提供的通讯控件提供了标准的事件处理函数、过程,并通过属性的方法提供了串行通讯口参数的设置,可以较容易地解决串口通讯,实现对仪器和设备的远程计算机控制。这部分还包括Windows串口驱动程序和拓展的串口驱动程序,完成Windows底层封装和接口链接[7]。?
开发应用层:是一个集成软件开发和程序执行平台,实现对串口检测仪器模块进行初始化和 各种配置并实现设备的远程监控,对数据进行保存,方便后期试验数据处理。
多协议串口管理介于开发应用层和资源管理层之间,包括了各种的串口管理机制,主要包括端口分配、通讯协议及通讯格式设置、数据校验处理机制、通讯错误处理机制、紧急故障处 理机制(主要硬件故障等)、测试及调试机制、优先级机制、优化协调机制、进出口数据存储机制。这些协议共同保障了多协议串口通讯系统的安全、有效运行。?
4串口通讯程序的编制
4.1编程环境
虽然Windows提供了完备的开放式通用增强的W32API(应用程序接口)函数,它把对串口和其他通讯设备的支持和基本输入驱动程序集于一体,其优点是可实现的功能更丰富、应用面 更广泛、更适合于编写较为复杂的低层通讯程序,但是利用API函数编写串口通讯程序较 为复杂,需要掌握大量通讯知识。另一种方式是采用其通讯控件MSComm来实现[2],该控件“隐藏”了大部分串口通讯的低层运行过程和许多繁琐的过程,提供了标准的事件 处理函数、过程。并通过属性的方法提供了串行通讯口参数的设置。所以只需编写少量的代 码来实现主要应用功能和界面的设计,就可以完成软件的开发过程[8]。
MSComm控件提供了事件驱动、查询两种控制串口的方法。查询方式就是在用户程序中设计定时或不定时查询MSComm控件的某些属性是否发生变化(一般查询InBufferCount接收缓冲区 中等待计算机接收的字符数是否满足要求),当程序较小,实时性不高时应用这种方 法,在该程序中恒温箱和恒流恒压注塞泵的管理用这种方法。而事件驱动方式即中断方式,当有数据到达端口或端口状态发生改变或有通讯错误产生时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件并检查CommEvent属性的值来查询事件和错误并进行相应处理,采用这种方法程序响应及时,可靠性高。在程序中回压阀和饱和度测试仪应用这种方式通讯。
4.2程序代码
在测控系统串口通讯过程中有多个设备同时通讯时,特别是同时有多个任务需要处理时,互相冲突,容易受到外界干扰,为防止通讯错误,需要在集成处理软件中进行抗干扰处理。文中采用两种方法来进行纠错、检错处理:
(1)启动错误定时器,扫描错误数据传输中的错误,如果有错误则重新启动通讯线程;
(2)对接收的数据进行校验,若超过通讯设定时间要求或者接收数据误码时重发。
运行证明,以上两种方法的应用大大提高了通讯可靠性,减小了误码率。下面是其通讯部分程序的片段。
/打开串口,启动通讯模块
/关闭串口,通讯结束模块
5结束语
利用VB6.0的MSComm通讯控件建立了多个协议设备和工控机的串口通讯系统,并将该系统运用于实际的某大型三维物理模拟装置。从实际运行的情况看,由于在通讯系统中采用了先进的多串口优化管理机制,所以基于这种方式所构成的计算机数据采集及监控系统,对于传输距离比较近的实验室或者现场控制,是一种性价比很高的系统解决方案,而且该系统具有结 构简单、可靠性高、测量精确、控制灵活的特点,对以后建设此类基于通讯协议设备的串口通讯监控系统具有很高的参考价值。
参考文献
[1]郑彪,汪秉文.串口通讯在工业控制中的应用[J].自动化仪表,2002,23(4)∶58-59.
[2]汪明建,汪明武,加油站计算机监控系统串口通讯设计[J].自动化与仪表,1999,14(3)∶57-59.
[3]柯文,华静.微机与多台加工中心串行通讯的实现[J].工业仪表与自动化装置,2003,(3)∶17-19.
[4]李英顺,伦淑娴. PC机和检测仪器串口通讯的实现[J].沈阳航空工业学院学报,2003,20(2)∶26-28.
[5]柯伯乐,池江,汤天浩.基于MOXA多串口卡的多串口通讯的实现[J].工业控制计算机,2004,17(1)∶46-47.
[6]阙江,孙苓生,张明.用VB6.0实现工控软件和下位机的串口通讯[J].电力自动化设备,2002,22(9)∶34-36.
[7]莫卫东,白鹏.Visual Basic6.0高级编程技巧-控制篇[M].西安:西安交通大学出版社,1999.
[8]刘炳文.精通Visual Basic6.0中文版[M].北京:电子工业出版社,1999.