撰文/江苏徐州工程机械研究院 陈新春 闫乃晴 齐伟 王灿
基于Visual Basic与RS 232串行通信的数据采集系统
撰文/江苏徐州工程机械研究院 陈新春 闫乃晴 齐伟 王灿
目前,诸如液压缸缸筒、活塞杆和振动轮等工程机械核心零部件精度要求越来越高。在生产过程中,检测工序已经不可忽视。遗憾的是,许多关键工序涉及的待检测形面复杂,尚无检测手段。随着技术的进步,基于激光位移传感器,开发专有检测仪器是实现工程机械核心零部件关键工序质量监控的有效途径。
激光位移传感器由激光器、激光检测器和测量电路组成,能够精确非接触测量被测物体的位置、位移等变化。在开发激光检测装置时,如何准确有效地获得激光位移传感器检测值是关键的研究内容。
针对该问题,本文结合串行端口技术,提出一种基于Visual Basic与RS 232串行通信的数据采集系统。通过Visual Basic通信控件MSComm与串行端口RS 232,建立激光位移传感器与工控机的通信渠道。采用Visual Basic开发激光位移传感器数据采集软件界面和算法。应用Excel工具建立存储检测数据的数据库。与激光位移传感器测试软件比较,验证上述研究的有效性。
VB6.0是一种功能强大的程序设计语言,适用于设计程序界面。它不仅保留了Basic语言的全部功能,还增加了面向对象程序设计功能,相较于VC,其操作简单,运行速度较快。
MSComm是VB与激光位移传感器之间实现通信的的ActiveX控件。利用MSComm控件,设计串口通信程序主要涉及表1所示属性。
表1 MSComm控件的主要属性
在本研究中,主要的属性参数设置为:(1)InputMode=0,取回文本数据。(2)InputLen=0表示一次接收完缓冲区中的所有数据,其他参数可根据其含义进行相应设置。
为了简化数据采集系统,项目组采用的RS 232是目前广泛应用的一种9芯接口。具体如图1与表2所示。
图1 RS 232接线端子排序图
表2 9芯RS 232接口
数据采集系统是激光检测装置中非常关键的一部分,其主要包括硬件系统和软件系统两大部分。根据检测现场要求,搭建硬件系统;在此基础上,采用VB6.0,设计数据采集软件系统。
1.硬件系统设计
数据采集硬件系统由工控机Visual Basic模块、串行通信模块、位移传感器模块3部分组成,电路系统框图如图2所示。
图2 电路系统框图
硬件系统连接:激光位移传感器通过信号线与工控机连接,信号线一端与激光位移传感器连接,另一端带有RS 232串口,与工控机的RS 232串口连接;激光位移传感器电源线红线为电源正,棕线为电源负,与电源连接。
在实验中,硬件系统应用流程为:启动工控机-接通传感器电源-数据采集与存储-断开传感器电源-关闭工控机-完成数据采集与存储。
2.软件系统设计
实时数据采集系统软件设计包括界面设计及算法开发。界面设计根据需要放置按钮控件,包括数据采集、数据存储及其他需要的控件,如图3所示。其中,MSComm控件用于从激光位移传感器采集数据到工控机上。
图3 软件界面图
基于上述软件界面,串口软件操作流程图如图4所示,首先要对串口进行初始化,设定通信参数和通信协议,然后打开端口后才能进行数据采集、存储的操作,最后要关闭端口。
数据采集的流程图如图5所示:工控机与激光位移传感器通信之前,工控机先检查是否与激光位移传感器连接成功,若已连接,则工控机进行端口初始化,包括对传输速度、传输的数据位数等参数的初始化。接着工控机向激光位移传感器发送命令,激光位移传感器响应命令发送其参数,若响应超时,则工控机再要求重发。当工控机接收到设备参数时,对激光位移传感器检测的数据进行采集,并将已接收的数据存入到数据库中。
MSComm提供了两种处理通信问题的方法,一种是查询法,一种是事件驱动法。
(1)查询法。查询法适合较小的应用程序,在这种情况下,每当应用程序执行完某一串行口操作后,将不断检查MSComm控件的CommEvent属性,以检查执行结果或检查某一事件是否发生。
(2)事件驱动法。在使用事件驱动法设计程序时,每当有新字符到达或端口状态改变,或发生错误时,MSComm控件将触发OnComm事件,而应用程序在捕获该事件后,通过检查MSComm控件的CommEvent属性可以获知所发生的事件或错误,从而采取相应的操作。这种方法的优点是程序响应及时,可靠性高。
图5 数据采集流程图
为了达到实时数据采集目的,数据采集程序采用MSComm事件驱动方式。
OnComm事件流程图如图6所示,当有数据传输时,触发MSComm1的OnComm事件,OnComm的事件处理程序只处理comEvReceive事件,首先判断是否为接收事件,若是则关闭OnComm接收事件,然后接收数据字节,将字节进行还原转换,最后打开OnComm接收事件,等待下一次OnComm事件产生。
其中,接收数据模式采用的是二进制的形式,即InputMode=comInputModeBinary,但用Input属性读取数据时,不能直接赋值给Byte类型变量,只能通过先赋值给一个Variant类型变量,返回一个二进制数据的数组,再转换保存到Byte类型变量中。
图6 OnComm事件流程图
采集数据过程中,主机首先要传输给激光位移传感器一个命令,该命令带有传感器的地址。通过MSComm1的OutPut属性,把命令写入到发送缓冲区中。激光位移传感器接收到该命令后,通过MSComm1的InPut属性从接收缓冲区移走字符,把缓冲区中收到的数据读入变量。发送命令后,传感器会连续不断的传输测量值,我们每4个字节组成一个值来获取测量结果。传感器传输的数据的校验位是C、D、E和F不断轮换的,只有当4个字节数的校验位一致时,该数据才有效,否则该数据不正确。所以,每个字节只取后面4位的数,组成十六进制的数,再转换成十进制,位移传感器返回来的数据是先低位再高位。
3.数据库设计
Excel是目前使用最广泛的办公软件之一,它具有强大的数学分析与计算功能,包括很多VB没有的求值数学表达式的函数和方法。由于Excel的应用程序对象是外部可创建的对象,所以能从VB应用程序内部来程序化操纵Excel。为了能从VB应用程序中访问Excel丰富的内部资源,使Excel应用程序运行的更快,需要在VB工程中添加对Excel类型库的引用。具体步骤如下:选择“工程”/ “引用”命令,在“引用”对话框中选择Excel类型库"Microsoft Excel14.0 Object Library"选项并单击确定按钮。
数据库主要按照时间顺序将采集到的数据进行存储,其主要字段包括采集的数据、采集时间、采集日期。
激光位移传感器带有一个专用的检测软件,首先用该专用软件检测出一个数值,如图7中标出部分所示。
图7 激光位移传感器检测软件测量结果
然后用所搭建的数据采集系统采集激光位移传感器数据,如图8中标出部分所示。
图8 设计程序测量结果
由检测结果对比分析可知,所搭建的数据采集系统采集的激光位移传感器的数据与激光位移传感器自带的检测软件所测量的结果误差在0.005mm以内,可以认为是一致的,证明所搭建的数据采集系统可以实现准确采集激光位移传感器的数据。
图9为数据实时存储界面,可以看出所设计的Excel数据库可以准确存储位移传感器采集的数据、采集时间及采集日期。
图9 数据实时存储界面
本研究围绕激光位移传感器数据采集系统,开展了系统硬件连接、界面设计、算法开发和测试验证等工作,得出了如下三点结论。
(1)通过RS 232实现了激光位移传感器与工控机串行通信,利用Visual Basic在工控机上编写的程序,可以实现对激光位移传感器的数据采集,采集的数据存储在Excel数据库中。
(2)与激光位移传感器测试软件采集的数据比较,所搭建的数据采集系统获得数据偏差小于0.005mm,满足实际生产需要,证明所搭建的数据采集系统是有效的。
(3)本研究为开发工程机械检测核心零部件专有检测仪器提供了技术支持。