基于LabVIEW的JFUVR2011光谱仪信号采集系统设计
2015-12-31武力,赵飞,赵晖等
基于LabVIEW的JFUVR2011光谱仪信号采集系统设计
武力1,赵飞1,赵晖2,曾宪东2,张冰洋3,*
(1 中南民族大学 生物医学工程学院,武汉 430074;2 湖北出入境检验检疫局 检验检疫技术中心,武汉 430050;3 中南民族大学 创新创业中心,武汉 430074)
摘要针对JFUVR2011 UV-VIS-NIR光谱仪光谱分析软件扩展性差的缺点,设计了光谱仪信号采集软件.软件采用虚拟仪器语言LabVIEW编写,利用LabVIEW提供的调用库函数节点CLF调用JFUVR2011光谱仪动态链接库,与光谱仪的USB接口连接,对所测得的光谱信号进行采集和数据处理.结果表明:所设计的光谱分析软件,实现了参数设定、光谱测量、数据保存等功能,可准确实现对可见光和近红外光谱数据的测量分析.
关键词光谱仪;LabVIEW语言;动态链接库;数据采集
收稿日期2014-06-02*
作者简介武力(1978-),男,副教授,博士,研究方向:医疗仪器设备的研发与设计、医学影像处理、三维建模及可视化,Email:Wulixmy2002@yahoo.com.cn
基金项目国家自然科学基金资助项目(81101080);国家质检总局科技计划项目资助项目(2011IK203);武汉市科技晨光计划资助项目(201050231021)
中图分类号TH744.1;TP274.2文献标识码A
Design of Signal Acquisition Software for JFUVR2011
Spectrometer Based on LabVIEW
WuLi1,ZhaoFei1,Zhaohui2,Zengxiandong2,ZhangBingyang3
(1 College of Biomedical Engineering, South-Central University for Nationalities, Wuhan 430074, China;
2 Technology Center of Hubei Entry-Exit Inspection and Quarantine Bureau, Wuhan 430050,China;
3 Students’ Innovation and Entrepreneurship Center, South-Central University for Nationalities, Wuhan 430074, China)
AbstractConsidering the poor extensibility of spectral analysis software of JFUVR2011 JV-VIS-NIR spectormeter, this paper designs a spectrometer signal acquisition software, which acquire and processes the spectral data of spectrometer. The software is written by virtual instrument language LabVIEW which calls the JFUVR2011 spectormeter dynamic link library by LabVIEW CLF library function node and connects the USB interface of spectrometer. The functions of parameters setting, spectral measurement and data saving are achieved and the spectral analysis software can measure and analysis the visible and near-infrared spectrum accurately.
Keywordsspectrometer; LabVIEW; DLL; data acquisition
近年来,人们对光谱分析系统的光谱测量范围、分辨率、精度都提出了越来越高的要求,光谱仪向微型化、自动化和高精度化的方向发展.JFUVR2011光谱仪作为一种微型光谱仪,在有机化学、生物化学、药品分析、食品检验、医药卫生、环境保护、生命科学等多个领域的科研、生产中都得到了极其广泛地应用.但由于其自身所配备的软件能够进行的功能具有局限性,不能进行光谱数据的后期处理,需要通过第三方软件对其界面和功能进行扩展.随着计算机软件技术的发展,越来越多的仪器功能可以借助于计算机及相关软件来实现,形成了“虚拟仪器”技术[1].目前已有不少学者利用这一技术进行研究,如生物医学[2,3]、检验测试[4-8]等.用软件代替传统仪器,用软件代替硬件,充分利用了资源并且节约了成本.本文采用LabVIEW虚拟仪器语言,通过LabVIEW调用光谱仪自身的动态链接库,设计了一个基于LabVIEW的光谱仪信号采集系统,比传统开发语言开发周期短、时效性高,所开发的软件在光学检测与分析领域已得到应用.
1LabVIEW和动态链接库
LabVIEW是美国NI公司开发的一种高性能的图形化虚拟仪器编程软件,其代码不采用传统的文本语言,而是使用图形化的G语言编写.开发人员可以利用所熟悉的术语、图形来组成功能模块.LabVIEW广泛应用于数据监测、数据采集测量和数据分析领域.动态链接库提供了一种模块化应用方式,动态链接库在应用程序运行期间被链接,是包含函数采集和数据的一些模块.它提供了一群函数供Windows应用程序或其他动态链接库函数调用,既不接受任何消息,也不能直接运行,由调用它的模块在实时运行的同时进行加载.本文利用LabVIEW提供的CLF(Call Library Function)节点对DLL调用,完成了对光谱仪的数据采集,实现了代码和资源的共享,达到了良好的移植、兼容效果.
2光谱仪信号采集系统结构
光谱仪信号采集系统结构如图1所示.系统中所采用光谱仪为天津津飞光谱分析仪器公司的JFUVR2011 UV-VIS-NIR微型光纤光谱仪.JFUVR2011微型紫外-可见-近红外波段光纤光谱仪采用微型平面光栅、高像素的CCD探测器,利用Czerny-Turner对称交叉光路的原理,结合CCD成像探测器,通过各种光的衍射特性条件来获得不同的特征曲线.被测信号通过入射光纤被采集到微型光谱仪中进行初步处理,并通过A/D转换为数字信号,然后通过光谱仪的USB接口传输到便携式计算机.便携式计算机上基于LabVIEW开发的数据采集软件对光谱仪的数据进行采集,选择合适的滤波算法进行光谱信号处理并显示光谱信号波形.
图1 光谱仪信号采集系统结构 Fig.1 The structure of spectrometer signal acquisition system
3光谱仪信号采集软件设计
基于LabVIEW开发的信号采集程序由前面板和程序框图组成.前面板用来设置控制部件和显示部件,程序框图用于编写和显示程序源代码.由于NI没有提供DAQ对JFUVR2011的数据直接进行采集,这里通过调用JFUVR2011提供的动态链接库对光谱仪进行二次开发.
3.1动态链接库的调用
系统采用LabVIEW提供的调用库函数节点CLF对JFUVR2011的动态链接库进行调用.LabVIEW调用的动态链接库为Sdll.dll,通过调用函数节点CLF对其调用,LabVIEW的调用库函数节点函数如图2所示.
图2 调用库函数节点函数 Fig.2 Call library function node function
其中,path in确定要调用的共享库的名称或路径.error in(no error)表明节点运行前发生的错误.param1…n是库函数的范例输入函数,路径输出返回调用DLL或共享库的路径.error out包含错误信息,return value是库函数的范例返回值,param1…n output时库函数的范例输出函数.
这里以“ccd_init_board”函数的调用为例说明如何在LabVIEW2013环境下调用动态链接库.该函数初始化CCD 板,在程序运行初始必须调用,进行USB端口初始化.函数原型为int32_t ccd_init_board(void ),返回值位0时候表示初始化正常,1表示驱动程序打开错误,2表示USB端口配置错误.步骤如下.
1) 在程序框图中,选择“Functions”模板中的“Connectivity”选项,在“Library & Executable”中选择“Call Library Function Node”,鼠标右击该图标,在弹出的对话框中选择“配置”选项,会弹出“调用库函数”对话框,共有“Function”、“Parameters”、“Callbacks”、“Error checking”4个对话框.
2) 在“Function”窗口中,首先选择DLL所在的路径,在“Function name”选项选择“ccd_init_board”.在“Thread”一栏中选择“Run in UI thread”,这样该动态链接库只用户界面下运行,“Calling convention”选择为C语言.
3) 由于该函数输入参数为空,“Parameters”窗口,只包含“返回类型”,这里选择“Numeric”,数据类型为“Signed 32-bit Integer”.
4) “Callbacks”窗口用于设置回调函数,这里不需要设置;“Error Checking”用来反馈在调用库函数过程中出现的异常状况,这里选择“Default”.
通过上面的步骤完成了“Call Library Function”的设定,在使用ccd_init_board函数时,只需连线该节点的端口就可以实现CCD Board的初始化.
3.2信号采集
Sdll.dll 文件是控制光谱仪工作的二次开发函数库,内部共有6个函数.函数名和函数原型如表1所示.
表1 动态链接库内部函数名和函数原型
光谱信号采集流程图如图3所示.
图3 光谱信号采集流程图 Fig.3 Flow chart of spectrum signal acquisition
首先调用ccd_init_board 函数初始化CCD Board,进行USB端口初始化,完成信号采集初始配置.接着调用ccd_setting_integration_time 函数设定CCD积分时间,然后调用ccd_read_data函数读取CCD数据,获取CCD像元,这里一共有3694个像元,即为CCD所采集的数据.为了输出像元与波长的对应关系,可以调用ccd_wavelength_cal 函数,此函数根据像元的位置计算出此像元对应的波长,程序退出时候,调用ccd_close_board 退出系统,释放相关资源.在LabVIEW中采用层叠式顺序结构作为主框架对光谱信号进行采集,信号采集程序如图4所示.
图4 信号采集程序 Fig.4 Signal acquisition program
3.3信号处理
程序通过CLF获得CCD采集到的原始数据.由于数据采集过程中存在内在噪声、光路噪声,会影响系统的信噪比,所以要对得到的光谱信息进行滤噪处理.系统采用多次测量对测量结果累加取平均的方法对原始数据滤波.在LabVIEW中通过For循环结构对CCD的3694个像元数据分别读取100次,然后取平均值,将平均值存放在数组中,这个数组中的值为经过滤波处理的CCD数据.滤波程序如图5所示.
图5 滤波程序 Fig.5 Filter program
3.4图像显示
光谱图的显示采用波形图控件,将最终获得的光谱数据的一维数组接入显示控件即可.
4光谱测量结果
采用白光LED作为光源,分别用JFUVR2011自身光谱采集软件和所设计的采集系统对其光谱曲线进行测量,测量结果如图6、图7所示.从测量结果可以看出,所设计的采集系统测量的波长范围和峰值与光谱仪自身采集软件一致.
图6 JFUVR2011光谱采集软件测量结果 Fig.6 Measurement result of JFUVR2011spectrum acquisition software
图7 采集系统测量结果 Fig.7 Measurement result of signal acquisition system
5结束语
本文基于LabVIEW设计了JFUVR2011光谱仪的信号采集系统,详细介绍了利用LabVIEW调用动态链接库的方法实现光谱信号采集.可采用微型光谱仪和便携式计算机作为硬件设备,在采集系统基础上开发应用软件,和其他功能模块结合来构建医疗、卫生、环境、检验检疫领域的光电测量分析系统,具有一定的实用价值.
参考文献
[1]杨乐平,李海涛,肖相声,等. LabVIEW程序设计与应用[M].北京:电子工业出版社,2001.
[2]胡志强,欧阳黎,张永林. 基于虚拟仪器的人体皮肤组织吸收光谱检测平台[J]. 光子学报,2002,31(11):1330-1333.
[3]蔡声镇,李步洪,蔡坚勇,等. 鼻咽癌光谱诊断系统中的荧光光谱信号处理[J]. 光子学报,2003,32(11):1375-1377.
[4]桂小琰,仲顺安,陈越洋. 稳像平台准确测试系统的研究和设计[J]. 光子学报,2004,33(12):1497-1499.
[5]赵永,胡涛.传感器与探测技术[M].北京:机械工业出版社,2010.
[6]叶昀,林君,周志恒,等.USB设备在光谱仪中的应用研究[J].仪器仪表学报,2003,24(3):157-159.
[7]杨春勇,徐杰.基于光纤传感器的投影图像梯形失真校正系统[J].中南民族大学学报:自然科学版,2011,30(4):77-81.
[8]杨春勇,牛磊.基于ZigBee的设施农业环境监测系统的设计与实现[J].中南民族大学学报:自然科学版,2012,31(1):88-92.