王宗省 翟亚楠 康树强 苏金娣 董淑冷
摘 要:在LabVIEW虚拟平台下设计了一种用USB接口实现的高速数据采集系统。提出了自动分文件存储的方法解决了使用Excel文件存储数据产生的大文件问题。提出了一次最多读取两个文件依次读取的方法,解决了用波形显示多个文件的大量数据时占用大量内存甚至导致无法显示的问题。实验证明文中所用方法效果明显。该系统支持8条通道32位数据的同时采集、存储、波形回放,系统界面简洁、操作简单、可添加模块以拓展功能。
关键词:数据采集 高速 波形回放 表格文件 占内存
中图分类号:TP274+.2 文献标识码:A 文章编号:1672-3791(2016)05(a)-0001-02系统一次存入8个通道的数据,每通道200个32位的数,共存1 000次,即8 000行200列为一个Excel文件。程序中先设定一个循环次数i,当i=0时,用Create File函数新建文件并写入电子表格文件,当i=1~998时,直接写入电子表格文件;当i=999时,写入电子表格文件并用Close File函数关闭文件;当i>999时,令i=0。程序中用移位寄存器来保存上一次的循环次数、文件路径、文件句柄、文件状态。文件句柄用来做Close File函数的输入。文件状态为真(T)表明正在写入文件,文件状态为假(F)表明文件已关闭。用文件状态主要是确定在文件不再写入时,关闭文件以节省内存。
1.2 波形回放模块
回放模块程序一直在检测输入框的变化并更新,直到用户点击开始后就进入波形显示,若要改变输入的条件,需先停止显示波形。以下是实现回放时根据滚动条的位置自动更换读取的数据文件的分文件读取方法。
一个Excel文件存储的数据有限,要查看的是多个文件的数据,如果先打开多个Excel文件读到一个数组中,数组太大导致内存占用大,运行速度慢甚至会提示内存占满而不能运行。该系统的设计是先判断滚动条的位置,根据滚动条的位置判断要打开哪个文件,读取要打开的文件及下一个文件的数据存入二维数组,显示到波形图表。以上为一个循环,如果判断要打开的文件跟上一循环的文件相同,则直接用上一循环读取的数据,无需再重新读取。这样能保证每次循环只读取两个文件的数据。程序中用移位寄存器来保存上一次循环的数据。
在显示波形时,用事件结构检测滚动条的值变化。滚动条滚动一次,采用平铺顺序结构先用波形图表的历史数据属性节点接入空数组来清空图表,然后以滚动条的位置乘200为原点,读取16 000个数为波形图表的一个画面。
2 测试结果
程序中USB属性设置为高速批量传输,测试时硬件设置为高速的64字节批量传输端点进行数据传输,考虑协议开销计算在理论上最高传输速度为6.656 MB/s(53.248 Mb/s)。经对系统测试,8个通道同时采集得到每个通道的数据传输速率为400 kB/s。在实际应用中,采样频率跟采集系统的硬件程序中的USB传输设置有关。现比较在波形回放时一次性全部读取文件数据进行波形显示和使用该文提出的分文件读取方法的内存占用情况。该文使用应用程序性能检测器V3.0软件检测,得到占内存的记录情况用Excel画散点图,得到如下LabVIEW运行时内存占用曲线。每个Excel文件大小为12 706 kB,分别读取10个文件(约120 MB)和20个文件(约240 MB)。
由图1、2可看出读取10个文件时相对于一次性读取文件,该文提出的分文件读取方法使内存使用减少了约180 MB。由图3、图4在读取20个文件时,一次性读取文件方法由于内存不足而无法运行,而分文件读取法所占内存并没有随着文件的增多而改变。充分说明了分文件读取法的实用效果。图1、图3中曲线波动是由于文件的关闭打开导致的内存变化。
3 结语
在LabVIEW虚拟仪器开发平台下设计了一种基于USB的高速数据采集系统,该系统能实现数据存储、实时显示及波形回放的功能,提出了分文件存储法解决了使用Excel文件存储数据产生的大文件问题,并针对回放时占用大量内存的问题提出了分文件读取法,经实际测试证明了所提方法的实用性。系统还可添加函数模块对数据处理以完善功能,且系统的性能随USB的性能提升而提升。
参考文献
[1] 罗伟林.基于USB2.0的高速数据采集系统[D].哈尔滨:哈尔滨工业大学,2008.
[2] 郭迎福,罗晓莉,毛征宇.基于LabVIEW虚拟高速数据流盘与波形再现仪[J].仪器仪表学报,2006(S3):1788-1789.
[3] 黄琦,崔文佳.基于LabVIEW的波形文件回放分析系统设计[J].广西电力,2013,36(5):16-18.
[4] 向科峰.基于LabVIEW的数据采集系统设计与实现[J].机械管理开发,2011(4):191-192.
[5] 苏兰兰,施伟峰.基于VISA技术的高速USB数据采集系统[J].机电设备,2007(4):36-39.
[6] 孙文.多通道数据采集系统的设计与实现[D].湖南大学,2013.
[7] 余志荣,杨莉.基于NI_VISA与LabVIEW的USB接口应用设计[J].单片机与嵌入式系统应用,2007(1):66-69.
[8] 侯国屏,王坤,叶齐鑫.LabVIEW7.1编程与虚拟仪器设计[M].北京:清华大学出版社,2007.