版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-Aft1-OmumIGroup*-Jt-1c这里说的测试测量数据是指配合NI的硬件,如PXI卡采集所得的测试测量数据。对其他的测试测量应用场景我还不熟悉。NI原先是缺乏一个比较优秀的测试测量数据存储方案的,NI后来也意识到了这个问题,于是在德国收购了一家公司,这家公司专做数据存储(也包括显示、报表等),于是NI在数据的采集、存储、显示这方面的产品线已经比较齐全了。NI现在主推的一个数据存储逻辑模型叫做TDM(TechnicalDataManagement),具体的方案可见:NITDMDataModel这个模型的特点可以简单概括为:清晰的层次结构以及支持各层次的描述性信息。具体来讲,一个TDM
2、模型的数据文件可以分为三层,分别为文件(File)、组(Group)和通道(Channel),在每个层次上,都有NI定义好的一些属性,同时,用户也可以自定义属性。这样的一种数据模型很容易被理解和接受。比较符合实际的应用需求。比如用NI的采集卡采集电压数据。一块卡上一共8个通道。每个通道每次采集的数据都可以保存为一个通道(channel)”,8个通道一次采集的数据可以组成一个组(group),每天采集一次,n天就形成n个组,每个组都有8个通道,所有的数据都写在同一个文件(file)里。其他卡采集的数据放在不同的文件中。除了直接采集到的数据(可称之为RawData)之外,总要写点其他信息的,比如采
3、集卡到底是什么型号,每次采集都是谁来完成,采集的是电压还是电流,单位是伏特还是千伏等等。这些信息就称为描述性信息(MeatData)。这些信息写在别的文件里面总不太容易管理,最好写在一个文件中。因此TDM模型也支持将这些描述性信息写在同一个文件中。注意一下,我在这里说的是TDM的逻辑”模型,并不是指他的物理存储结构。在NI,有数种文件格式都支持TDM的模型,但是他们的物理存储方式大相径庭,这个以后再写。这种TDM模型的测试测量数据文件,是NI软件平台中通用的文件,除了LabVIEW外,很多其他的NI软件产品都支持这种模型,比如DIAdem、CVI、SingalExpress等等。在LabVIE
4、W中,分别有三套API支持TDM模型的数据文件,他们分别是:MeasurementFile/StorageVIs/TDMSenXm.TOH*FcmnitWoRteIMMPv«4rbHMwwQutrMML*TiK5H5-TW5WPro.8.IlWHRd.0WW5RMFDRQMiregL.(图片采自LabVIEW8.5.1Professional)这三套API分别对应着三种应用的难易级别,由易而难。具体以后再介绍。下次写一下我对TDM数据模型的看法(优缺点),以及简单介绍相关的文件格式。在分析TDM模型的优劣势之前,我想最好先罗列一下一些数据文件格式的技术要求。NI软件平台上针对于测试测
5、量的数据,有很多不同的文件格式,其中有几种是支持TDM模型的。并不是说这些文件都能满足以下技术要求,我只是先罗列出来:1)写文件速度必须要快。很多情况下需要一边采集数据一边就把数据写到文件中,采集卡的速度已经相当快了,这时候瓶颈常常是在写文件这个步骤上相反,读文件可能并没有如此高的要求。2)向文件追加(append)数据的时候,速度要快,这个时候不能读取文件中的信息。这其实也是常用的一个usecase,采集数据写入文件的动作可能经常要进行(比如在一个循环中),往往又是往同样的文件中写入信息。3)写文件的速度不能与文件大小成正比。我们希望不管文件有多大,写文件的速度总是保持相对恒定,不能文件越大
6、就写得越慢。4)支持随机的读取。比如我想读文件中某个位置的某些内容,不能要求把这个位置之前的所有数据都先读出来(即读到内存中)。5)支持分别读写描述性信息和原始数据。这是上一条的延伸,读描述性信息(metadata)的时候不要求把原始数据(rawdata)读进来,同样,读原始数据的时候也不要求把描述性信息读进来,否则,势必影响读文件的速度。6)对读文件的速度也有一定的要求。这个要求主要来自于搜索数据。无数浩瀚的数据,怎样才能快速的找到用户需要的数据,这一直是一个难题。7)文件不能太大。存储同样的数据量,文件自然越小越好。技术要求暂时就写这么多,其实总结起来,无非两点:1)快;2)方便。我们对照
7、TDM的数据模型,对于快速”,暂时看得不明显(以后可以谈谈为什么TDMS文件可以达到快速的要求”),但是说它方便”,还是可以理解的。ChinnsL这个模型的设计完全是依照用户的应用实例。首先,它是分层次的。比如说我们需要测试汽车发动机的各个指标。我们用8个通道的采集卡采集发动机振动的数据,8个通道分别采集8个部位的振动,存到文件中,作为一个组(group),组的名字就叫做发动机振动”。我们还需要采集发动机的进气管、排气管压力,又作为一个组。还要采集发动机的温度,可能也用8个通道的采集卡采集8个部位的温度,每个部位的温度数据作为一个通道(channel)存到文件中,8个通道作为一个组,叫做发动机
8、温度”等等。我们可能会采集多次,其他参数都不变,只是数据每次都附加在文件的后面。我们有很多的测试工程师,每个工程师做的测试分别存成一个TDM模型的数据文件。可以发现,这样的三层结构还是很清晰的。这就好比用LabVIEW些程序,VI大了,就不知道怎么管理了,那就多用几层SubVI嘛。其次,它具有描述性信息。比如可能需要把测试的日期、测试者的名字、测试的环境配置等信息写下来。有些描述性信息是针对文件”这个层次的,比如测试者的姓名。有些信息可能针对组”这个层次,比如采集的是温度”,单位是摄氏度”。有些信息则可能针对通道”,比如采集的是发动机哪个部位的温度等等。描述性信息比较利于他人阅读文件,并且,在
9、搜索文件数据的时候,可以派上大用场,可以先利用这些描述性信息进行定位。当然,这些信息最好能和原始数据"(rawdata)放在一起,要是放在两个文件中,一是难以对应起来,而是不利于维护。这也好比是写LabVIEW程序,你写的程序,别人也要能看到,没太多的好办法,就多写点注释吧。这样的TDM模型也有其缺点。至少看起来有点复杂,同时有原始数据和描述性数据,还要实现那么多的技术要求,着实有点困难啊。其次,这个模型写下来就固定了,一共就3个层次,说到底在某个文件中也就2个层次,不能扩展,不像XML那样方便。我有时候就想要把数据写到一个通道”中,我还非得先造一个组”出来(其实可以不写,默认会造一
10、个出来,但是逻辑结构上不能缺少)。还有其他限制条件,比如原始数据必须写在通道”这个层次,不能写在组”这个层次等等。总体来讲,TDM数据模型利大于弊,比较适合测试测量领域的数据的存储,是一套不错的解决方案。今天谈谈如何选择合适的文件格式。在LabVIEW中可以使用的文件格式有好几种,争对于测试测量数据的文件格式也不少。每种文件格式都有自己的优缺点,很难说孰优孰劣。关键的问题在于要选择合适自己的文件格式。那么,在选择具体的文件格式时,有哪些指标可以参考?1)性能。测试测量数据的一个比较重要的usecase就是要一边采集数据一边存储数据,NI现在采集数据的速度已经非常快了,性能的瓶颈往往是在存储数据
11、到文件中去这个步骤上。当然,有些usecase对于读取数据的性能也有要求,比如要做实时的数据分析等。因此,在选择合适的文件格式时,需要考虑性能的问题。2)兼容性。采集数据、存储数据、分析数据,用的可能不是同一套软件,很有可能在不同的平台、不同的软件中完成这些不同的功能。那么就需要采用一种比较通用的文件格式。打个比方,XML就是一种比较通用的文件格式。3)支持的数据类型。并不是每种文件格式都支持所有的数据类型。有些可能不支持存储二维数组、不支持存储时间、日期等等,在选择文件格式时需要注意到这一点,以免将来带来不必要的麻烦。4)是否方便使用。有些人可能喜欢定义一套自己的文件格式,对于高手来讲也未尝
12、不可,但是对于一般的用户就需要考虑是否有这个必要。有些文件格式,在LabVIEW中已经有现成的、丰富的API,那就直接拿来用吧。5)可维护性、可移植性。写完的文件很有可能将来还会修改,还可能会拿去给别人去修改。别人是否看得懂这样的文件?别人是否方便修改这样的文件?6)文件大小。存储相同的信息量,当然文件越小越好,信息存储紧凑一点好。当然还有其他很多方面的指标可以参考。暂时先说这些,以后还会有更深入的内容介绍。针对于测试测量行业的数据存储,LabVIEW提供了数种不同的文件格式,先来介绍一下LVM格式。LVM(LabVIEWMeasurementFile)总体来说是一种比较轻量级的文件格式。它基
13、于ASCII编码,用一般的文本编辑器打开都能看懂。当然,这个特点优劣参半,非二进制代码的文件,总体来说性能较低,并且不够紧凑(即存储相同信息量,文件稍大)。所以,LVM文件格式适用于对性能、文件大小并不具有太高要求的情形。LabVlEWH士包白以1心加电力七上七号LM也广生,4:tC,92IHR44d«krV*rs-£rt1IS4pdfat6rTAbMalti_Mi&dins戈tJIXColumnsTj,me_Pr*fR414riV4Operatoryoy*2510/057B6Tim*M;。之;占芝,白33喘之白*End_of_!itacteX*channala1S
14、npies10:De之口白白03口白:ici*II;Q2:52-Q35izaK_©in)eni«itTi血中KOC.0000C>QOtfOOODGOO+9UeIta_X0.QQ100C'''End_ofHe4der"'"K_VaiueSinecomment0.OOQOD0C.0634iaG.1Z65S00.13P2330-2511J3G.312093C.3716270.J2S75S0-J861S2C.540&?30.S929S70.6427340.e900240.734S3fr0.776030左图显示的就是用
15、普通的文本编辑器打开一个LVM文件的情形。可以看到第11行文字为"*End_of_Header*",可见lvm文件具有header信息,header中的每一行都是一个键值对,表示该文件的一个属性,属性名与属性值之间目前以Tab分开。第13行开始就是文件的主体部分,LVM文件中也有类似于"segment"的概念。每次往相同的文件中写入信息都会往这个文件的末尾增加一个segment。segment也可以含有自己的header,header中自然也是存着针对于这个segment的属性信息。在segment的header之后就是真正的原始数据。比如一个波形图的数
16、据。在上图中,我们存储了一个一维数组的数据。LVM文件最多可以支持二维数组的数据,如果打开存储二维数组的LVM文件,其原始数据部分看起来会与上图稍有不同,很像一个excel中存储的数据。在LabVIEW中操作LVM文件格式的API主要是Read/WriteMeasurementFile,如下图所示:LVM文件还有一个缺点,就是header中的属性是固定的,仅通过LabVIEW的API并不能增加用户自定义的属性,这是一个限制。当然,不排除这样的情况:用户自己用文本编辑器打开LVM文件,向其中写入或者修改一些属性。世上没有完美的文件格式。LVM文件格式也有其自己的优缺点,有其独特的应用条件。并不能
17、根据某个单一的指标判断它是好是坏,使用时应先判断自己的应用要求,作出合适的选择。今天先来谈谈Datalog文件,这种文件格式也有点年代了。基本上可以认为这种文件格式是二进制的。准确的讲,如果仔细研究,可以发现这种文件的内部结构比较奇怪。举个例子:如果往这个文件中存储3个int32的数字,用二进制的文本编辑器打开,可以看到内容类似于:Adjdr。8七&(he)(charACter)GOO口口0:44544C47flCOQ000300000003DODOOOBODTLGWQQ10;QQ04。网30000ODOIQQQQCG02的MQQQ3这个还比较还理解,前面是一些头文件,后面是1、2、3
18、三个数字。但是如果写入a、b、c三个字符,情况就比较复杂了:AddressDdita(hex)Data(character3D00C0:44E44C70000000200000003000D0D14DTLG.J000100。*20300000021400D00219口。口。021EQJ00020OOGO000C00000000dCGO00000000oaooT0w»,*"JOO02O:CCOC000C00000000OODG0000000D0000300040;0000OODC000000000000000000000000)00051:£oo(iococoooo
19、ooondodooodoooooonoD"ate-3000600000000000000000OODG00D000000000300070OOOC0000QQOQ000DOCQO0000QQOQQOQOJOOO0O:000000000000口口口000000000000oooo00091)00000000000000000000000000000000d&fa(ifiBtliiiliJOOOAO:OOOU00000000OflOODODO000000000000,r-srsr!-(es-r30C0E0:OOOtl00000000OOOO0000000000000000,I-4
20、4-l>-1F4«4«<4»1j中可再省略若干行0。到文件的最后是:000150.DOOQ0000000(10000OGC0000000000000-0001F0:Q0UaoooQCOQnooooocu。口OOOGGooooril-riHifek-lhfcl-i-fiBlBQQQWQQ口00。Q阿QUQQOQOOQQQQCOOQ(JOOQOOOOi11fc"1-*if-i1-00D2L0.noononoonoonnnmtiooocoonnooa_.b.000230DOQl6300c由此可见,该文件格式对于不同的数据类型、不同的存储方法有不同的
21、内部结构。我个人看来,对于后一种结构,还是有不少的冗余信息的。这种文件使用起来也不是太复杂,有一整套的API可以调用,具体的使用方法可以参考帮助文档。一oeEMoq;x.OpenJCrsalt.国OKt*A.QttKMnbero.总体来讲,这种文件格式,性能、使用的建议度、可读性均在中等水平,仅适用于LabVIEW软件。对于性能有一点要求,但要求不是很高的用户来说,可以采用该文件格式。再介绍一种文件格式,在LabVIEW中就叫做二进制文件(binaryfile),其实很多文件格式都是二进制的,包括刚才介绍的Datalog,以及以后要介绍的TDMS。为了区别于其他二进制文件,我们有时候叫这种二进
22、制文件为“bytestream。”具体操作这种文件格式的API非常简单。这种文件格式的性能非常高,使用起来也非常方便(就两个VI,一个负责写,一个负责读),但是数据的组织,也就是内部数据的结构(在这里无法透露具体的内部结构),可以说是比较差的。如果用户对于写入文件的性能要求比较高,但是并没有太多后续维护、管理数据的需求,可以考虑采用这种文件格式。接着介绍LabVIEW中的另外两种文件格式。首先是Bytestream。ft"V这个文件格式说穿了就是二进制文件。就两个VI,分别是读和写。基本支持LabVIEW中的任何类型的数据。只要你在LabVIEW中能造出的数据,都可以用这种文件格式存
23、储。可以猜测,其实这两个VI做的事情也比较简单,直接把LabVIEW在内存中的这部分数据写到文件中就行了,当然这样做的话,效率也比较高,因为没什么运算的步骤。但是也有部分缺点,比如直接把数据写到文件中也不见得好,真正的问题是如何管理这些数据。例如,读文件的时候也需要知道究竟这些文件存储了什么类型的数据,究竟存储在文件的什么位置等等。总的来说,如果用户追求纯粹的写文件的速度,并且不在乎将来读文件是否遇到困难(其实如果一个文件只写不读那就没什么意义了),那么用这样的文件格式还是可以的。接下来介绍TDM文件格式TDM文件是指后缀名为.TDM的文件。文件的逻辑存储模型遵循NI的TDMDataModel
24、,三层结构。TDM文件主要分为两个物理文件,一个是主文件,后缀名为TDM,存储原始数据以及属性等信息;另一个是头文件,后缀名为TDX,主要存储属性信息,方便查找,作为一个索引文件。主文件是类似于XML结构的,而头文件是一个二进制文件,理由也很简单:头文件主要用来索引搜索数据,所以对读的速度有较高要求,因此作为二进制文件更合适。对于TDM文件的操作,LabVIEW中主要通过StorageVIs来完成。TDM的文件格式,我个人感觉,最大的优点在于对于数据的管理。以前介绍的文件格式,没有对数据的管理做太多的考虑。TDM文件格式分为三次结构并且可以加入用户定制的属性,使用更为方便。举个通俗易懂的例子:
25、很多人中午要带饭,放在饭盒里。普通的文件就是一个大杂除,饭、菜混合放在一起,吃起来不方便并且看上去就杂乱;而TDM文件就像是有分隔的饭盒,饭菜可以分开放置,方便整洁。随着NI在测试测量文件方面的进步,TDM的文件格式已经逐步被TDMS文件格式取代,下次专门介绍TDMSo终于写到TDMS了,千呼万唤始出来啊,其实所有前面的相关文章都是为了TDMS作铺垫。正是由于用户提出的种种需求以及其他种种文件格式的缺点,才有了TDMS的出现。1. TDMS文件的逻辑格式TDMS文件的逻辑格式遵循TDM三层结构,仍然是文件、通道组、通道三层。用户在使用时只需要关心这三层就行了。2. TDMS文件APITDMS文
26、件格式基本上可以称为NI用在测试测量领域的通用数据文件格式,LabVIEW,CVI/LabWindows,SignalExpress,DIAdem中都可以使用,也常看到在Excel,MatLab被中调用。TDMS最核心的内容都在一个dll中,用户如果安装了LabVIEW,就会发现在ProgramFilesNationalInstrumentsSharedTDMS文件夹中有个tdms.dll的文件。其他软件正是通过调用这个dll的API来操作TDMS文件的。在LabVIEW中操作TDMS文件其实相当方便,有专门的TDMS面板,提供了TDMS绝大多数的功能。虽然我们一直说Write/ReadMea
27、surementFiles,StorageVIs,TDMS分别面向初级、中级、高级的用户,但是我个人觉得LabVIEW中的TDMS用起来十分方便,即便是初级用户,也能很容易的上手。在面板上一共就10个SubVI,无论是什么样的数据类型,都可以用这样同一套SubVI,无需大量额外的编程工作。TDMSiTDriSTDMS7DMSTDMSTOMSTDMSiTDriS这里可以简单介绍一下TDMS面板上白两个SubVI,我个人觉得十分有用。一个是“TDMSFileViewer”,当用户写完某个TDMS文件之后,就可以用这个SubVI来方便的查看文件的内容,只要输入TDMS文件的路径即可,运行VI就会跳出
28、一个Viewer的界面,可以查看数据、属性,并且可以根据数据简单的绘制出一些波形图。另外一个是“TDMSDefragment,通常用户写完TDMS文件之后,可能会发现这个文件非常大,那么这时就可以使用这个SubVI,可以大幅度的减小文件的sizeo3. TDMS二进制文件TDMS从设计之初就确定它必须是二进制的。二进制文件带来两个优点:第一,与一般的文本式文件相比,二进制文件通常比较小;第二,二进制文件读写通常比较快。这两个都是其他二进制文件都具备的优点,就不再多说了。4. TDMS头文件用户写完TDMS文件之后,会发现硬盘上其实有两个TDMS文件,一个是.tdms,另一个是.tdms_ind
29、ex文件,我们通常把前者称为主文件或者数据文件,而把后者称为头文件.者索引文件。头文件与主文件相比,最大的区别就是把主文件中的rawdata都去掉了,只留下属性等信息。这样做,有两个目的,第一,可以使得读文件加快速度,并且支持随机读取文件数据,这个稍后再解释,用户看完后面的内容就可以理解。第二,可以使得某些软件的搜索TDMS文件功能加快。比如在DIAdem中搜索TDMS文件,可以根据文件名、通道组名、通道名(其实这些也是属性),或者其他某些属性进行搜索,这个时候,仅将TDMS的头文件载入进行搜索,其速度远远比将TDMS主文件载入搜索快得多。5. TDMS的内部结构TDMS文件的内部结构,也就是
30、物理结构,可以在这里找到原文。一般的用户并不需要了解这方面的知识就可以方便的使用TDMS文件。在这里介绍这个内部结构,是为了更好的解释TDMS文件格式的优点。TDMS内部结构的核心概念是segment,如下图。为了避免混淆,在这里必须澄清的是,这个segment的概念与TDM的三层结构(即逻辑结构)没有任何对应的关系,也就是说,一个通道可能对应着多个segment,一个segment中也可能有多个通道。segment是什么意思?我们在写TDMS文件的时候,数据本来可能存放在内存中,那么总要往硬盘上写这些数据的,每次往硬盘上写(flushtodisk)就会产生这样一个segment。同样,我们在
31、读TDMS文件的时候,也是一个segment一个segment的把内容读出来。chimr”-WPSVersionMetadatejToCBitmatk械加DM)He*de-rI,IMe,H(再稍微深入介绍一下这个segment中的内容。一开始有一些头信息,比如这个segment中是否含有metadata,是否含有rawdata,version是多少。下面的东西就很重要了,有个“nextsegmentoffset”的信息,指向下一个segment的起始位置,这个有什么用呢?比如我要读某个通道的数据,发现这个segment中并不包含这个通道的内容,就可以使用这样的信息直接跳到下个segment中看下个segment是否有要找的信息。同样,还有一个"rawdataoffset的信息,比如用户只想读rawdata,并不关心属性之类的信息,那么这个“rawdataoffset的信息就派上用场了。说到这里,就可以明白,TDMS是怎样支持Randomaccess,怎样支持独立的读属性信息和rawdata的信息。止匕外,这个segment还有一个极为重要的特点。我们每次写数据,每次往TDMS文件中flushtodisk的时候就在文件的后面添加这样一个segment,而不去关心之前的segme
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年医疗器械公司劳动合同范文
- 东北财经大学基础会计课件
- 建筑项目合伙协议书详解
- 房屋渗漏维修合同范本
- 终止劳动合同的规范写作
- 加工授权合同书格式
- 单位就业协议书参考范文
- 企业员工福利保险咨询服务协议
- 音响设备出租合同
- 个人开车与单位免责协议书
- 超长悬挑结构安全通道防护棚专项施工方案
- 肺结节科普宣教培训
- 高铁项目桥上救援疏散通道施工方案2019.05.25
- 学做小小理财师
- COVID-19-疫情-新冠病毒-英语作业ppt(关于抗击疫情的英雄们)
- 混凝土楼板上行走吊机时楼板承载能力计算方法
- 维克多高中英语3500词汇
- 医疗机构抗菌药物临床应用备案表
- 初中毕业证书怎么查询电子版
- 分析化学题库及答案
- 电动葫芦定期检验报告
评论
0/150
提交评论