LabVIEW中测试测量数据的存储(7)

发布者:czl55555最新更新时间:2015-09-16 来源: eefocus关键字:LabVIEW  测试测量数据  存储 手机看文章 扫描二维码
随时随地手机看文章
      终于写到TDMS了,千呼万唤始出来啊,其实所有前面的相关文章都是为了TDMS作铺垫。正是由于用户提出的种种需求以及其他种种文件格式的缺点,才有了TDMS的出现。

      1. TDMS文件的逻辑格式

      TDMS文件的逻辑格式遵循TDM三层结构,仍然是文件、通道组、通道三层。用户在使用时只需要关心这三层就行了。

      2. TDMS文件API

      TDMS文件格式基本上可以称为NI用在测试测量领域的通用数据文件格式,LabVIEW, CVI/LabWindows, Signal Express, DIAdem中都可以使用,也常看到在Excel, MatLab被中调用。TDMS最核心的内容都在一个dll中,用户如果安装了LabVIEW,就会发现在Program FilesNational InstrumentsSharedTDMS文件夹中有个tdms.dll的文件。其他软件正是通过调用这个dll的API来操作TDMS文件的。

      在LabVIEW中操作TDMS文件其实相当方便,有专门的TDMS面板,提供了TDMS绝大多数的功能。虽然我们一直说Write/Read Measurement Files, Storage VIs, TDMS分别面向初级、中级、高级的用户,但是我个人觉得LabVIEW中的TDMS用起来十分方便,即便是初级用户,也能很容易的上手。在面板上一共就10个SubVI,无论是什么样的数据类型,都可以用这样同一套SubVI,无需大量额外的编程工作。

1   

      这里可以简单介绍一下TDMS面板上的两个SubVI,我个人觉得十分有用。一个是“TDMS File Viewer”,当用户写完某个TDMS文件之后,就可以用这个SubVI来方便的查看文件的内容,只要输入TDMS文件的路径即可,运行VI就会跳出一个Viewer的界面,可以查看数据、属性,并且可以根据数据简单的绘制出一些波形图。另外一个是“TDMS Defragment”,通常用户写完TDMS文件之后,可能会发现这个文件非常大,那么这时就可以使用这个SubVI,可以大幅度的减小文件的size。

      3. TDMS二进制文件

      TDMS从设计之初就确定它必须是二进制的。二进制文件带来两个优点:第一,与一般的文本式文件相比,二进制文件通常比较小;第二,二进制文件读写通常比较快。这两个都是其他二进制文件都具备的优点,就不再多说了。

      4. TDMS头文件

      用户写完TDMS文件之后,会发现硬盘上其实有两个TDMS文件,一个是.tdms,另一个是.tdms_index文件,我们通常把前者称为主文件或者数据文件,而把后者称为头文件或者索引文件。头文件与主文件相比,最大的区别就是把主文件中的raw data都去掉了,只留下属性等信息。这样做,有两个目的,第一,可以使得读文件加快速度,并且支持随机读取文件数据,这个稍后再解释,用户看完后面的内容就可以理解。第二,可以使得某些软件的搜索TDMS文件功能加快。比如在DIAdem中搜索TDMS文件,可以根据文件名、通道组名、通道名(其实这些也是属性),或者其他某些属性进行搜索,这个时候,仅将TDMS的头文件载入进行搜索,其速度远远比将TDMS主文件载入搜索快得多。

      5. TDMS的内部结构

      TDMS文件的内部结构,也就是物理结构,可以在这里找到原文。一般的用户并不需要了解这方面的知识就可以方便的使用TDMS文件。在这里介绍这个内部结构,是为了更好的解释TDMS文件格式的优点。

      TDMS内部结构的核心概念是segment,如下图。为了避免混淆,在这里必须澄清的是,这个segment的概念与TDM的三层结构(即逻辑结构)没有任何对应的关系,也就是说,一个通道可能对应着多个segment,一个segment中也可能有多个通道。segment是什么意思?我们在写TDMS文件的时候,数据本来可能存放在内存中,那么总要往硬盘上写这些数据的,每次往硬盘上写(flush to disk)就会产生这样一个segment。同样,我们在读TDMS文件的时候,也是一个segment一个segment的把内容读出来。

tdmssegorder

      再稍微深入介绍一下这个segment中的内容。一开始有一些头信息,比如这个segment中是否含有meta data,是否含有raw data,version是多少。下面的东西就很重要了,有个“next segment offset”的信息,指向下一个segment的起始位置,这个有什么用呢?比如我要读某个通道的数据,发现这个segment中并不包含这个通道的内容,就可以使用这样的信息直接跳到下个segment中看下个segment是否有要找的信息。同样,还有一个“raw data offset”的信息,比如用户只想读raw data,并不关心属性之类的信息,那么这个“raw data offset”的信息就派上用场了。说到这里,就可以明白,TDMS是怎样支持Random access,怎样支持独立的读属性信息和raw data的信息。

      此外,这个segment还有一个极为重要的特点。我们每次写数据,每次往TDMS文件中flush to disk的时候就在文件的后面添加这样一个segment,而不去关心之前的segment中包含了什么样的信息。这个特点非常关键,这就可以使得我们写文件的速度非常快,我们并不关心之前文件中包含了什么信息,也就使得我们写TDMS文件的速度并不和TDMS文件的大小成正比或者有任何关系。

      6. TDMS文件格式的优点

      我在以前的文章中提到几个数据文件格式的技术要求,我们现在再来回顾一下,看看TDMS文件是如何实现这些技术要求的,这样也就能看出TDMS文件的优点来。

      1)写文件速度必须要快——通过segment实现以及二进制。 

      2)向文件追加(append)数据的时候,速度要快——segment。

      3)写文件的速度不能与文件大小成正比——segment。 

      4)支持随机的读取——segment以及头文件。

      5)支持分别读写描述性信息和原始数据——segment以及头文件。

      6)对读文件的速度也有一定的要求——segment以及头文件。

      7)文件不能太大——二进制。

      7. 其他

      TDMS文件格式目前(LabVIEW 8.5)只支持Windows和PharLap(一种实时操作系统)平台上。不过我还看到一个基于VI的TDMS API,这个完全基于LabVIEW,既然LabVIEW能在其他平台上工作,那么这个小工具也能在其他平台上工作。当然,效率、性能的会差很多了。

      通常总有人拿TDMS文件格式和一般的基于Windows API文件流操作比较,然后会说TDMS比那样的Win32 streaming API慢嘛,是不是TDMS不行?比如在某些磁盘阵列的配置下,Win32 streaming API可以达到650MB/S,而TDMS只能600MB/S左右。我在这里需要澄清的是,TDMS在保持着数据良好逻辑结构(TDM的三层结构)、良好的数据管理的前提下,还能保持着这样高速的性能,这才是TDMS最大的优点。Win32 streaming API只是纯粹的追求速度(也仅比TDMS快5-10%左右),并不能将测试测量的数据良好的组织好、管理好,用户如果片面的追求速度而不管写入文件的数据如何保存如何管理,那就有点得不偿失了。

      当然,TDMS文件也并不完美,同样存在着种种缺点。比如不能支持方便的删除某个通道的功能,目前还不支持其他操作系统等等。相信将来都会有改善的。

 

      最后,用一个不是很恰当的例子来结束这篇文章。测试测量数据的文件格式,有很多种,文件格式就像我们中午带饭的饭盒一样。其他的数据文件格式就是把饭菜都放在一起,吃起来不方便(速度慢),而且味道都混杂在一起(组织不好);而TDMS文件格式就像是内部有分隔的饭盒,不同的饭菜分开存放,吃起来又方便(速度快)味道又好(组织良好)。

关键字:LabVIEW  测试测量数据  存储 引用地址:LabVIEW中测试测量数据的存储(7)

上一篇:LabVIEW软件常用中英文词汇对照表
下一篇:LabVIEW中测试测量数据的存储(1)

推荐阅读最新更新时间:2024-03-30 23:04

S3C2410 MMU(存储器管理单元)详述
  MMU,全称Memory Manage Unit, 中文名——存储器管理单元。   许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相
[单片机]
S3C2410 MMU(<font color='red'>存储</font>器管理单元)详述
FPGA在语音存储与回放系统中的应用
1 引言 随着数字信号处理器、超大规模集成电路的高速发展,语音记录技术已从模拟录音阶段过渡到数字录音阶段。在数字化录音技术中,压缩后的语音数据有些存储在硬盘中,有些存储在带有掉电保护功能的RAM或FLASH存储器中。笔者介绍的语音存储与回放系统,未使用专用的语音处理芯片,不需要扩展接口电路,只利用FPGA作为核心控制器,就能完成语音信号的数字化处理,即实现语音的存储与回放。 2 系统总体结构 数字化语音存储与回放系统的基本工作原理是将模拟语音信号通过模数转换器(A/D)转换成数字信号,再通过控制器控制存储在存储器中;回放时,由FPGA控制将数据从存储器中读出,然后通过数模转换器(D/A)转换成模拟信号,经放大后由扬声器输出。
[应用]
基于FPGA的USB2.0虚拟逻辑分析仪
  引言   传统的逻辑分析仪体积庞大、价格昂贵、通道数目有限,并且在数据采集、传输、存储、显示等方面存在诸多限制,在很大程度上影响了其在实际中的应用。选用高性能的FPGA芯片进行数据处理,充分利用PC的强大处理功能,配合LabView图形化语言开发的虚拟逻辑分析仪,其数据处理和传输速率大大提高,适用性极大增强,其显示、操作界面和低廉的成本较之传统的逻辑分析仪具有极大的优势和发展前景。   工作原理   本设计选用Altera公司的Cyclone系列FPGA器件EP1C3进行数据采集和处理,外接SRAM,用于数据的存储。系统通过高性能的PIC单片机PIC18F6620完成与PC的通信,接收PC发出的触发、配置信息并控制系统将
[测试测量]
Marvell、鸿佰科技、智邦科技、铠侠联手加快以太网存储应用
Marvell (NASDAQ: MRVL) 近日宣布与业内领先的SSD供应商铠侠(KIOXIA)、原始设计制造商富士康旗下鸿佰科技(Foxconn-Ingrasys)、智邦科技 (Accton)合作,将突破性的以太网连接闪存簇(EBOF)技术解决方案推向市场。随着数据持续呈现指数级增长,数据中心面临更大的存储带宽、容量以及更低延迟需求带来的挑战。EBOF架构通过以太网结构来扩展闪存,并以最优的方式将存储从计算中分离出来,为应对这些挑战提供了一种创新思路,大幅提升了边缘、企业和云数据中心的性能,同时降低总体拥有成本 (TCO)。 此次合作标志着EBOF平台的加速应用迎来了一个重
[嵌入式]
Marvell、鸿佰科技、智邦科技、铠侠联手加快以太网<font color='red'>存储</font>应用
为何说LDPC码不适合工业存储
LDPC 码被认为是当今 3D TLC 和 QLC 存储器中提高错误率的解决方案。然而它们并不适合每个市场。 低密度奇偶校验(LDPC)码是一种纠错码,渐增性用于需要通过信道进行高效信息传输的应用,存在来自卫星或地球发射机的视频广播等破坏性噪声。在过去十年中,LDPC 码在闪存领域也越来越受到关注。广泛用于 SLC 和 MLC 闪存技术的 BCH 代码无法提供令人满意的性能,因为当今的 3D TLC 和 3D QLC 闪存的备用区域有限,因而被其他具有使用软解码能力的代码取代,例如 LDPC 码。尽管这些代码适用于某些应用,但它们却有两个主要缺点。 图 1:目前可用的不同类型的闪存。每个单元存储的位越多,数据保留越低,
[嵌入式]
为何说LDPC码不适合工业<font color='red'>存储</font>?
基于LabVIEW的数控机床网络测控系统——总体设计 (一)
  2 数控机床网络测控系统的总体设计   2.1 数控机床网络测控系统的设计思路和目标   随着测控网络与信息网络的融合,一方面,人们希望更广泛的使用Internet,试图接入更多的设备,以便在扩充其应用模式的同时享受其带来的更多便利;另一方面,工业化程度的加剧也给测控网络系统的发展提出了新的问题:如何方便地组建一个高效率的、智能化的、能够和其他高层网络互联的测控网络系统。以便于统一集中监控和提高管理决策水平。为了达到这些目的,需要测控网络和信息网络在一定程度上能够共享资源,并且以有效的方式交换信息。所以,从测控网络和信息网络各自的发展来看,它们均已表现出走向对方并相互融合的进步趋势。为了实现这种融合,十分必要研究如何保证它
[测试测量]
基于<font color='red'>LabVIEW</font>的数控机床网络测控系统——总体设计 (一)
51单片机的存储组织
MCS-51单片机的存储器组织结构 特点:哈佛结构,程序存储器与数据存储器分开,两者各有一个相互独立的64K(0x0000 ~ 0xFFFF)的寻址空间(准确地说,内部数据存储器与外部数据存储器不是一回事)。 程序存储器: ① 用于存放程序(可执行的二进制代码映像文件,包括程序中的数据信息),还包括初始化代码等固件。 ② 为只读存储器。注意,这里的 只读 ,是指单片机(CPU)在正常工作时对其的访问方式是只读的;而现在大多数单片机的程序存储器(不管是内部还是外部)都采用了FLASH ROM,来取代以前所用的ROM、E2PROM等,可方便地进行在线编程(ISP)。 ③ 标准8051的内部程序存储器大小为4KB(0x0000
[单片机]
TI推出DDR终端稳压器满足低功耗存储器要求
日前,德州仪器(TI)宣布推出一款可满足DDR、DDR2、DDR3与DDR4等各种低功耗存储器终端电源管理要求的汲极/源极双数据速率(DDR)终端稳压器TPS51200。该简便易用的新型稳压器的陶瓷输出电容仅为 20 μF,比同类竞争解决方案的电容降低了近80%。这样,设计人员可利用该器件实现更低成本、更小型化的DDR存储器终端解决方案,以满足数字电视、机顶盒、VGA卡、电信、数据通信、笔记本以及台式机电脑等现代大容量存储器电子产品以及日益丰富的消费类电子产品的需求。 高宽带内部跨导,Gm放大器与积分动态电压定位均可支持超快瞬态响应,而且外部输出电容极小。在负载变动幅度为 -1.5A ~+1.5A的典型应用中,输出电
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved