微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > LabVIEW的数据存储实践

LabVIEW的数据存储实践

时间:10-02 整理:3721RD 点击:
做多通道数据采集时,把数据保存到电脑磁盘上供离线分析之用,这是不可缺少的环节。LabVIEW提供了丰富的文件I/O函数,如图1所示,通过这些函数可编写程序满足不同测试系统的数据存储需求。




LabVIEW基于二进制(binary)流或文本(ASCII)流来存储数据。二进制(binary)流以存储速度快、所产生的文件占用硬盘空间小而称著,但是这种二进制文件一般只能由机器读取。因此,用户需要开发相应的程序,才能把二进制文件中的数据读取出来,而数据通过文本字节流保存则可以克服这个缺点,其最大好处是方便其他软件,如字处理文件或电子表格文件等来访问数据。为使用这种方式保存数据,需要将所有的数据转换为ASCII字符串。LabVIEW支持多种文件类型,在其8.2版本中,支持的文件类型已经达到10种之多,包括文本文件、表单文件、二进制文件、数据记录文件、XML文件、配置文件、波形文件、LVM文件、TDM文件以及TDMS文件等,虽然这些文件类型的操作方法不同,但是它们都是基于二进制流或文本流技术进行数据存储的。而到具体的项目上,就需要合理的选择文件存储类型。一般来说,系统的一些初始化信息可以写在配置文件中,而复杂格式的配置数据则适合使用二进制文件或XML文件;采集到的数据若数据量不大而且通道数较少则可以采用LVM文件,若数据量庞大或通道数较多并需要很好地管理,则TDM或TDMS文件更加合适;对于日志文件,最好直接以字符串形式存储为文本文件;而对于报表,则可以选择直接打印或采用HTML格式输出,LabVIEW也提供了专门的VI。




例子:有四个通道采集数据,采样率为10S/s,采样数为3S/次,现要求以文本文件类型实时保存数据,其中,第一列为采样时间,第二、三、四、五列为参数列,分别记录0、1、2、3四个通道的采样值。

图2为实现题目目标的程序代码。


图2  数据保存程序框图

提示:图2的程序代码是有点复杂罗嗦,其实,可以用下图所示的代码代替,它的实现功能与图2的一样。



最左边的波形数组包含四个成员,每个成员对应一个通道的波形数据,而一个通道的波形数据又包括采样开始时间t0,采样间隔dt和数据数组Y。(注:采样间隔dt等于采样率的倒数;数据数组Y的大小等于采样数。四个通道波形数据的t0、dt相等。)当“使能”布尔控件为真时,波形数组的数据流入case“真”分支中,该分支主要由3个for循环(分别用for 1、for 2和for 3标注)和一些数组、字符串、时间节点组成,通过调用这些功能节点,即可达到题目的要求。下面将详细介绍波形数组在case“真”分支中的执行过程。

一维波形数组通过自动索引隧道进入for 1中(共有四个通道,即自动索引4次,循环次数为4),由“获取波形成分”函数分别提取波形数据的成分,之后,dt、t0流入上面的红色虚线框图中,四个通道的数组Y流向下面的红色虚线框图。上面的框图与获取采样时间有关,下面的红色框图用于处理数组Y,先把二维数组转换为一维数组方便后续处理,再通过两次转换变为一维字符串数组输出,由for 3把一维字符串数组转为二维字符串数组输出(注:此循环的次数由最左边的一维波形数组的元素个数决定,最后输出的二维字符串数组,其行数等于一维波形数组的元素个数,列数等于数组Y的大小,即采样数),然后通过“连接字符串”把上下框图流出的数据组合成一个新的二维字符串数组,其中第一行为采样时间,第二、三、四、五行依次对应第0通道至第3通道的采样数据,再由“二维数组转置”节点把二维数组转置,这时第一列就是采样时间,其他列依次为各通道的采样数据,然后通过“数组至电子表格字符串转换”转换为ASCII字符串直接写入文本文件中。强调地,在上面的红色虚线框图中,有一个“格式化日期/时间字符串”节点,这个节点右边端子产生的时间字符串,其格式由该节点左上角的输入端子所设置的时间格式决定,图中设置的格式为%H:%M:%S%?u,字符u表示时间精度为秒的小数位,?为常量,指小数的位数,例子中由于采样率是10S/s,则0.1s采集一个数据点,那么采样时间的精度应该为0.1s,所以应在?处写上1,这时整个时间格式写成%H:%M:%S%1u,即产生的时间字符串格式为小时:分钟:秒:秒.小数位,具体见图3。

用该程序保存的文本文件的数据格式如图3所示。


图3  四通道数据存储(采样率为10S/s)


图三存储的格式非常好,类似的程序能给发一个学习么    erdongdedao@163.com  谢谢

有没有例程 有没有例程

谢谢分享。。

赞。

不错,感谢小编分享

我想做一个多路数据存储的程序,求大神指点!,我的QQ1280966100,谢谢

第三张图片可以发张清楚的吗  刚需要这块知识  谢谢啦

多谢小编,学习了 有类似的程序发个呗 htdong_he@163.com

小编,现在我急需这样的数据存储程序!您能发个到我的邮箱吗?975009914@qq.com,多谢了!

小编,能把您的这个程序发给我吗?现在我继续帮助,谢了!

很不错的资料学习中

正在学习中,特别棒,能不能给发一个,顺便交朋友一起学习1060173881@qq.com

正需要,例程能发下吗?感激不尽   fivegui@126.com

小编可不可以发个程序看仔细一下

http://bbs.elecfans.com/jishu_460511_1_1.html

谢谢楼组 学习了

谢谢,学习了。

小编,能不能把你的源程序上传一下啊,谢啦,感觉对于我这初学者非常有用,拜托啦

小编,可不可以把源程序发给我一下啊,谢啦,958890448@qq.com

你收到小编发的源程序了吗?或者你找到类似的源程序了吗?能给我发一下吗?谢啦958890448@qq.com

你有这方面的源程序吗?能给我发一下吗?958890448@qq.com,谢啦

小编给你发程序了吗?或者你有这种多通道采集的这方面的程序吗?能发给我一份源程序吗?958890448@qq.com,非常感谢

感觉对于我这初学者非常有用

1111111111111111111111111111111111

谢谢分享。。

多谢小编分享,小编好人

有没有例程 有没有例程

不错,学习了,,,,,,

可以看看学习哈

照猫画虎总有错误,能不能发上来之前的程序源码啊

很不错

来个历程看看

求个例程或者类似程序,349418492@qq.com,谢谢小编

学习一下,谢谢小编分享

发个例程看看         

小编类似的程序也发我一下吧  careeryao@126.com

感觉对于我这初学者非常有用

求大神发程序啊,QQ975803256


谢谢分享

能不能把你的源程序分享一下啊?

小编有源程序吗?624817959@qq.com

怎么没有例子文件呢~~~

666666666666666666666666666666666

感谢小编分享

多谢大神的分享,努力学习中

多谢大神的分享,努力学习中

正在学习中,特别棒,

正在学习中,特别棒,

谢谢分享。。

谢谢分享。。

能发一下 源程序吗?谢谢。不方便的话,能不能发一个清楚的图作为参考。非常感谢您。

能发一下 源程序吗zqsong33@126.com?谢谢。不方便的话,能不能发一个清楚的图作为参考。非常感谢您。

现遇到一个项目就是需要采集数据后存储并加算法分析,小编方便的话请把这个程序发我邮箱吧,谢谢啦! 邮箱:350193835@qq.com

小编我也想要一下图3的例程,可以给我发一份吗?图上看不清,谢谢了!qlb@semi.ac.cn

小编大神,果然是骨灰级的。刚用labview不久,感觉这个开发工具除了提供的接口方便以外,学习就相当于学汉字,每一个字都要认识才行,看图不看程序是不行的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top