搜索
您的当前位置:首页正文

基于LabVIEW的数据保存

来源:尚车旅游网


基于Labview的数据保存

The date consersation based on LabVIEW

杨建伟 郑琼华 沈昱明

(上海理工大学,上海 200093)

摘 要:在单片机—PC机的串口通信中, 以LABVIEW为开发平台,根据PC侧对串口采集到数据的显示、保存、回读的不同需要,提出了相应的解决办法,编写了PC侧的程序。 关键词:虚拟仪器 串口通信 数据保存

Abstract:Microcontroller communicate with computer based on LabVIEW platform,according to the different need of display、conservasion and review of data.Give the relevant way to solve the problem , and compile the programme of computer.

Keywords:LabVIEW RS232 Data conservasion

0 引言

LabVIEW是一种基于图形编程语言的开发环境。它与传统编程语言有着诸多相似之处,如相似的数据类型、数据流控制结构、程序调试工具等。但二者最大的区别在于: 传统编程语言是用文本语言编程, 而LabVIEW 用图形语言( 即各种图标、图形符号、连线等) 编程 ,

编程简单方便, 界面形象直观, 具有强大的数据可视化分析和仪器控制能力。

Labview有丰富的文件操作函数库,可以方便地进行文件的读写。Labview可以读写文本文件、数据报表文件、二进制文件和测试文件。主程序中从VISA read的read buffer端读上来的数据需要转换成表格数据进行保存,数据的保存分为两个阶段。第一阶段,通过表单形式(带时间头)显示在主程序界面,方便用户直观查看测试参数是否已满足要求。第二阶段,把表单数据保存到Excel文件中,可供用户打印查询。如果数据不需直观显示在主程序界面上,也可保存到TXT(可以用Excel打开)文件中。

在工程中,有一个用户需求值得注意,即在测试开始时,由于只需要观测系统的测试状态,而无需进行数据存储;当系统测试状态达到要求后,再进行实时测试数据的相应存储。也就是说,无论何时都可以对数据进行选择性存储,以实现数据存储的动态控制。

1 工程背景

1.1 labview里的数据存储文件形式

数据的存储就是将采集的数据保存在某种介质中,常见的就是硬盘。

ASCII字节流——一种常用的数据文件格式。许多其他软件(如字处理程序或者电子表格程序)都可以访问ASCII格式文件,因此如果测试数据需要用其他软件来处理的话,可以先把所有数据都转换成ASCII字符串,然后存储至文件中。

数据日志文件——这种文件采用的是只有G语言可以访问的二进制格式。数据日志文件类似于数据库文件,因为可以把不同的数据类型存储到同一个文件记录中。

二进制字节流——这种文件的格式是最紧凑的、最快速的存储文件格式。必须把数据转换成二进制字符串的格式,还必须清楚的知道在对文件读写数据时采用的是哪种数据。

Labview测试数据文件——一种特定格式的文本文件,以.lvm为扩展名。数据测试文件除了数据以外,还保存数据产生的日期时间等信息。

TDM文件格式——NI测试数据交换文件格式。 ActiveX方式——调用Word生产测试报表文件。 1.2 基本文件I/O功能函数

在测控程序设计中,总要涉及到测量数据信息的交互,文件I/O是非常重要的。保存测试数据,或回放存储的数据就要使用文件I/O操作。这些操作包括:打开和关闭文件、读写文件、读写文件格式的文件、移动和重命名目录及文件、改变文件属性文件,以及创建、更改和读写特定格式文件。

工程中利用VISA实现通信。VISA是虚拟仪器软件体系结构的缩写,即Virtualln Strument Software Architecture,是应用于仪器编程的标准I/O应用程序接口(API)。VISA本身并不具有仪器编程能力,VISA是调用低层驱动器的高层API。VISA可以和VXI、GPIB及串口仪器按照所使用的仪器调用相应的设备驱动器,具体的使用方法可参考Labview的用户手册。

大多数的文件I/O操作都包括3个基本的步骤:打开一个已有的文件或者新建一个文件;对文件进行读写,关闭文件。Labview 在Function>File I/中提供了很多有用的工具VI。 1.2.1 Write File VI

用于数据写入一个新建文件或已有文件。写入数据在文件中的位置由pos mode及pos offset决定。如图1所示。

图1

1.2.2 Read File

用于从一个已打开的文件读出数据。读数据的起始位置由pos mode及pos offset决定。如图2所示。

图2

1.2.3 Close File

用于关闭一个已打开的文件。如图3所示。

图3

2 数据显示模块的设计

工程中充分考虑动态实时性,显示的每一帧数据都对应不同的时刻,并且对于数据显示、存储功能可以进行时间大小、时间间隔设定,以满足不同测试时刻的数据要求。图4为显示子程序显示的动态数据表格。

考虑到读串口的频繁性,我们提出两种可能:① 上位机需要周期性的对串口进行读操作,这样一来串口上来的数据最好也能周期行性地显示、保存;② 上位机对串口的读操作是非周期性的,而且间隔时间有时较长,这样串口数据上来时显示,没有数据上来就不显示。

对于第一种情况图5给出了具体的子程序代码。主程序中上来的一串串口数据经过String Subset这一功能模块各个参数被依次分割开来。再经过Merge Signals和Build Table最终实现为图4中的Table3。从图4中我们看到了数据被以3s的间隔周期性的保存在表单中。怎么来实现这种周期性呢?这就需要在While循环中用到Combo box控件,预设好各种需要的保存周期以供选择。值得注意的是图4中子程序显示的数据是模拟输入的固定值。

对于第二种情况需要在源程序(图5)的基础上稍加改动,在原程序中去掉Combo box控件。为了实现数据上来才显示,没数据上来就不显示的功能,可以考虑增加一个Case框,设置一个局部变量(串口是否有数据读上来)来决定执行显示操作还是执行不显示操作。具体的程序读者可自行编写。

图4

图5

工程中因为要直观实时显示各个测试参数,把每个参数数据都接到了各自的Waveform Chart(实时趋势图控件),这样各个参数的波形变化就能被趋势图实时显示了。用户就能直

观地从PC上判断测试参数是否满足要求了。

3 数据保存模块的设计

3.1 把主程序显示的表单记录保存到文件

程序中串口数据可以直观的显示在前面板上并保存下来,但是为了对实验结果进行精确分析,数据存储也很重要。好的数据保存有利于数据的后期处理和分析。

在实时测试主程序的界面图中,继上个模块数据显示在主程序表单中后,测试设置按钮用一个Boolean类型按钮“保存数据”,它就是用来设置数据是否保存的设置按钮。当它为True时,表单中所显示的所有实时测试数据即可保存到指定的测试文件中;当它为False时,实时测试数据将不被保存。其实质是用户通过保存设置按钮的状态有选择地决定数据是否保存。在LabVIEW 7.1/help/find example自带的例子中就有这样的程序,所需要改动的就是把其中的Table换成所需要保存的Table,创建相应的属性节点,并分别选中Row headers[],Columu headers[]有效。这样⑴中的表单文件就可以连同行表头和列表头一并保存到文件中。

3.2 串口数据保存到能用Exce打开的TXT文件

如果串口数据只需要暂时性地用Indicator显示,而不需要每次累加式的放到表单中,但日后又要查询,数据也可以直接保存到能用Excel打开的文件中。

图6子程序中用到了labview功能模板上的Open/Create/Replace File子VI。该子VI的功能是生成(打开或替换一个现存文件)一个新文件。该VI的data端的子VI的功能是产生文件的列表头。图7是保存效果。

由于在程序代码中采用了Tab键的特殊处理,使得TXT文件可以用Excel打开,而且格式和表单文件中一样工整。

图6

图7

在以上数据显示、保存的基础上,用户就可以调出保存数据选择性地显示。

4 结束语

总之,在上位机上能够以文本或波形的形式动态地显示串口采集到的测试数据,并可以根据需要将采集到的数据以电子表格、文本、波形等形式保存下来,还可以调出保存的数据进行有选择性地显示,达到了设计的要求。

参考文献

1 杨乐平,李海涛,赵勇,等.LabVIEW高级程序设计[M].北京:清华大学出版社,2003年4月第1版. 2 雷振山.LabVIEW 7 Express.北京:中国铁道出版社,2004年4月第1版.

3 侯国屏,王坤,叶齐鑫.LabVIEW7.1编程与虚拟仪器设计.北京:清华大学出版社,2005年2月第1版. 4 戴鹏飞,王胜开,王格芳,等.测试工程与LabVIEW应用[M].北京:电子工业出版社,2006年5月第一次印刷.

因篇幅问题不能全部显示,请点此查看更多更全内容

Top