陈青贵
摘要:某项目需要在两台计算机之间传输数据。在主控计算机上由Labview编制的程序负责测试、读取数据;测试数据的记录则在另外一台计算机上由Excel完成。由于测试数据量不大、对数据传输速率要求不高,两台计算机通过RS232连接即可实现数据传输。本项目主要研究Labview、Excel的串口数据传输与接收,并成功应用于实例。
关键词:RS232;Labview;Excel;串口;数据传输
中图分类号:TP391.7 文献标识码:A 文章编号:1007-9416(2017)02-0134-03
某产品测试设备不具备自动化测试能力,该产品常温测试时需两人共同协作进行,一人负责操作设备主控计算机测试并读出产品测试数据,另一人在辅助计算机上负责记录、校验读出的数据。共同协作方式首先浪费人力资源,测试效率较低;其次人工读数会造成测试数据延误、数据偏移;人工记录数据容易出现误操作,导致测试数据记录不真实。本项目使用常用RS232接口将两台计算机连接,并通过在Labview和Excel上编写串口通信程序完成数据传输、处理以达到测试数据自动读取、记录效果。
1 总体构思
为了提高测试效率,节约人力资源。将两台电脑通过RS232串口连接通信,主控计算机通过软件自动读数并通过串口发送测试数据;辅助计算机通过Excel运行VBA程序接受数据填写到Excel上。Excel具有数据校验功能,能对数据的正确性进行判定。这样能减少工人读数时间,不再需要专用工人记录数据,能极大提高产品测试效率。总体构思如图1所示。
2 实例
2.1 RS232物理连接
RS232是美国电子工业联盟(EIA)制定的串行数据通信接口标准。它被广泛用于计算机串行接口外设连接,是计算机标配通用接口。目前计算机上基本上使用DB9作为RS232的通用接口。两台计算机如要通过RS232连接只需连接DB9的2脚(RXD,信号接收端)、3脚(TXD,信号发送端)、5脚(GND)即可。需注意的是两台计算机DB9的2、3需要交叉连接。
2.2 RS232数据传送
串口数据传输应用非常广泛,因此程序编制有很多控件直接可以使用。主控计算机的测控程序使用的Labview图形编程,串口通信有专门的子VI;辅助计算机使用的excel记录数据,excel能很好地支持宏,通过VBA使用微软的MSComm通信控件可方便进行串口通信。使用专业的控件编程不需要进行底层编程,仅需要进行控件的初始化即可。
使用通用控件编程,只能完成底层数据传输,只能保证单个字节数据传输的正确性。要完成复杂的任务需要自己设计数据传输格式,即需要自定义数据包。数据包一般分为包头、数据、包尾三部分。通过分析本任务的数据特性;数据包需要含包头、测试项目、测试数据、测试数据分割符、包尾。最终定义数据包格式如图2。
2.3 主控计算机软件实现
主控计算机主要任务是读取测试数据、发送测试数据。因此软件上的主要任务就是初始化RS232、识别测试项目、读取测试数据、打包数据、发送数据。
2.3.1 初始化RS232
初始化串口使用labview自带的子VI,初始化只需对子VI的变量进行配置即可。主要变量是端口号选择Com2;通信速率选择38400;字节数选8;奇偶校验选none;停止位选1。具体配置见图3。
2.3.2 识别测试项目
根据产品测试作业文件将测试项目进行分类并使用下拉列表列出,標记出测试内容。如图4所示,正常测试时首先默认测试第一个项目,当测试者按发送数据按钮(或者使用快捷键Esc)后,测试项目自动调至下一项。在平时测试时也可以手动点击下拉列表选择正在测试项目,然后发送测试数据。这样到达识别测试项目之目的。
2.3.3 读取、打包、发送数据
数据的读取根据当前测试项目不同而不同;数据的读取在Labview中可以通过调用控件的value属性节点完成。控件的value属性是浮点数,根据文件记录的要求需对数据格式进行调整,主要调整小数点的位数。数据打包根据预先设定格式使用Labview内部字符处理VI可进行多字符组合;最后通过串口发送VI即可将文本发送出去。具体实现方法参考图5。
2.4 辅助计算机软件实现
2.4.1 Excel使用VBA编程
以往在辅助计算机上使用excel进行随行文件记录。使用Excel记录数据可以实现数据的自动计算,随行文件模板变化时方便更改。Excel支持VBA编程扩展,因此可以使用VBA完成数据接收处理工作,在excel中使用VBA的方法如图6所示。调出Excel的Visual Basic菜单,点击控件按钮即可添加想要的控件,双击控件即可进入控件响应代码编辑窗口。
2.4.2 初始化RS232
按照2.4.1的方法在Excel中添加微软的通用通信控件MSComm。对MSComm控件的初始化代码如图7。控件初始化成功则计算机的RS232串口初始化成功。
2.4.3 数据包接收
Excel初始化串口完毕后,当主控计算机发过来数据时,MSComm控件会激发OnComm事件。在这个事件处理程序中添加数据接收程序。由于OnComm事件激发时,MSComm控件可能只是收集到了数据包的片段,因此程序需要从接收的数据中识别出包头、包尾还是中间部位。然后掐头去尾将接收的数据拼接成完成的数据包。接收到完整数据包即可调用数据包处理程序。具体实现程序如图8。
2.4.4 数据包处理
数据包处理首先需要分离出测试项目,测试项目前面是“@”符号,后面是“/”符号。通过字符查找函数既可以知道测试项目的位置。第二步就是分离出测试数据,测试数据都是通过“/”符号分隔,因此通过字符查找函数“InStr”即可找到分隔符的位置,从而将测试数据一个一个分隔下来,至到数据包结束字符“#”。分离出来的数据根据测试项目使用Sheet.Cells()对预定的excel表格位置填写数据。具体实现过程参照图9。
3 结语
本项目主要技术应用在于以下几点:
(1)涉及Labview、VBA、excel多种编程手段,需要综合利用。
(2)串口通信需要自行设计高级的通信协议,需要对数据进行打包处理。单独传输产品数据,使用MSComm控件基本上无法完整接收。
(3)excel结合VBA可以开发出强大的应用,利用excel的图形和数据处理能力能处理很多试验数据,方便打印。
(4)参考本项目,自定义更多过程可以远程操作Excel,以实现Excel的自动化。
本项目完成,使用试验件产品多次试验测试,数据传输准确、稳定。极大的提高了该产品常温测试效率。
参考文献
[1]李小遐.Excel VBA 在办公自动化中的应用[J].科技论坛,2014(22):105-107.
[2]杨峻,睢丹.VBA在Excel中的应用[J].安阳大学学报,2003,2(2):44-45.
[3]陈锡辉.LabVIEW 8.20 程序设计从入门到精通[M].北京:清华大学出版社,2007:390.
[4]张华,郑宾,武晓栋.基于LabVIEW 的温度测试系统[J].电子器件,2013(2):243-246.