您的位置 首页 动态

用DLL完成自动测试存储数据的纠错处理

光纤光栅传感器具有波长编码特性,不受光源功率波动和系统损耗的影响,因而在传感领域得到了广泛的应用[1,2]。多波长计是一种能对光纤光栅反射波长进行测试的仪器,可以实现对光栅传感阵列的一次性测量,但其测

光纤光栅传感器具有波长编码特性,不受光源功率动摇和体系损耗的影响,因此在传感范畴得到了广泛的运用[1,2]。多波长计是一种能对光纤光反射波长进行测验的仪器,能够完成对光栅传感阵列的一次性丈量,但其丈量数据靠人工读取,不便于实践运用。选用LabVIEW仪器操控技能对多波长计串口进行了开发,经过在软件中履行长途指令操控仪器进行丈量,并将丈量成果主动存入指定的EXCEL文件中。

在进行文件存储的进程中,因为某些要素或许会导致单个传感器没有回来信号,此刻直接存储必然会导致丈量成果文件的数据紊乱。为处理此问题,本文提出经过调用DLL对丈量成果的合理性进行查验和处理。该研讨能够有用防止产生大数据量下丈量成果文件中的数据错位现象,使得测验体系在取得传感信号一起,还具有辨认过错信号并进行主动处理的功用,进步了体系的可靠性。

2 LabVIEW与DLL接口技能

美国NI公司开发的LabVIEW是一种功用强壮的图形化编程言语[3,4],用之来完成计算机对可编程仪器的操控[5],能够很大程度地进步编程功率。此外,因为LabVIEW所供给的图标功用是有限的,实践体系中依然有某些功用是无法或难以完成的。针对此问题,LabVIEW供给了调用Windows动态链接库(DLL)函数的功用。然后能够补偿其本身的缺乏,完成更多、更强壮的功用。

动态链接库(Dynamic Link Library, DLL)是依据Windows程序设计的一个非常重要的组成部分。当运用程序被装入内存并开端运行时,在Windows的办理下,在运用程序与相应的DLL之间树立链接联系。当要履行DLL中的函数时,依据链接产生重定位信息,Windows转去履行DLL中相应的函数代码。因此,DLL是一个坐落运用程序外部的进程库,它能够从运用程序中调用,在运行时被动态链接,。DLL的编制与详细的编程言语及编译器无关,只需恪守DLL的开发标准和编程战略,并组织正确的调用接口,不管用何种编程言语编制的DLL都具有调用性。

3 丈量回来成果的存储和错位问题

经过在LabVIEW中开发测验操控软件,能够操控光纤光栅丈量仪器按预订程序主动履行丈量作业。在计算机操控软件中宣布长途丈量指令“:MEAS:ARR:POW:WAV?”[6]后,仪器回来的成果如图1所示,其间的第一个值为回来波长的个数,后边为相应的光纤光栅反射波长值。在一切光栅传感器都无缺且能回来传感数据的状况下,能够直接将丈量成果保存剖析。丈量成果文件如图2所示,每行丈量成果包括进行丈量的日期、时刻,峰值波长个数及各个回来峰值波长值。




在保存的EXCEL文件中,每次丈量成果存为一行,履行一次丈量,存入一行数据,每列数据对应一个光栅传感器。但在实践工程运用中,因为某些要素或许使得其间某个光栅传感器没有回来传感信号,此刻若将丈量回来成果直接写入EXCEL文件的一行中,就会使该光栅之后的数据错位,不能对应其应该所在的列,尤其在数据量很多的状况下,更会形成丈量成果的紊乱,如图3所示。为处理此问题,需对每次回来的丈量成果进行剖析,若呈现上述状况,则在无信号光栅方位数据补零。



4 运用DLL完成对回来数据的合理性查验和主动处理

为完成对丈量数据的查验和处理,在VC++6.0编程环境下开发Win32 DLL。一个无缺的DLL项目需求模块界说文件,用户程序头文件和C++源程序文件。模板界说文件名后缀为def,是由一个或多个用于描绘DLL特点的句子组成的文本文件。在模板界说文件中,LIBRARY声明库文件名check;EXPORTS声明中列出了DLL中输出函数的称号modifyResult,如下所示:



头文件中包括用户所要输出的一切函数,每个输出函数前都要有关键字_declspec (dllexport)。头文件是可选的,若用户把其内容放在源程序文件中,作为源程序的一部分,则可省去头文件。



源程序文件对modifyResult函数进行完成。该函数的三个参数的意义分别是:previousData数组寄存每个光纤光栅传感器的前次丈量成果;maxDifference数组寄存每个传感器本次丈量成果与其前次丈量成果答应的最大差值;currentData寄存本次丈量成果。关于第i个数据,假如|currentData-previousData|>maxDifference,则以为其是第i+1个传感器回来的数据,第i个传感器没有回来数据,应该在该方位补0,首要算法如下:





在LabVIEW中,用户对DLL的调用,可经过LabVIEW供给的调用库函数[7](Call Library Function)来完成。对CLF节点的装备状况如图4所示,在所显现的对话框中输入库文件名、所调用函数名、调用规程以及函数的回来类型、一切输入参数及其数据类型。

在装备好CLF节点后,即可在LabVIEW程序中进行直接运用。图5所示为由测验仪器串口通讯→字符串转化→调用CLF节点处理数据→文件存储的丈量成果的无缺处理进程。在一切光纤光栅传感器都无缺的状况下,由串口通讯模块读出的成果在转化为数值型数据后能够直接存储或显现。但是若回来波长数N小于初始个数N0,则阐明有传感器无回来数据,此刻能够经过调用库函数CLF节点调用包括有处理函数的DLL,对回来数据进行查验处理,在无回来信号光栅相应方位补零,然后确保后续数据与其正确方位的对应,然后再进入文件存储或显现模块。



5定论

本文的立异点在于经过CLF节点调用DLL,对经过LabVIEW获取的多波长计丈量成果进行剖析处理,防止产生大数据量下丈量成果文件中的数据错位现象。因为DLL只需在程序履行时才将代码载入内存,而且多个程序运用相同的DLL时,内存中只装载一次,所以在LabVIEW开发中运用DLL,能够使代码更简练,内存资源的运用更经济。用户只需编写一次DLL,就能够屡次调用。试验证明:这种办法简略、便利、可满意测验要求。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/206018.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部