LabWindows/CVI在风洞数据采集中的应用
扫描二维码
随时随地手机看文章
如今在测控领域用于开发软件系统的开发平台主要有:LabVIEW、C++、VB、Agilent VEE、LabWindows/CVI。而LabWindows/CVI由于提供了丰富的函数库和各种方便功能得到了不少使用者的青睐。LabWindows/CVI是National Instrument公司开发的一种基于ANSI C的开发平台,它集成了编译器、连接器和高级编辑、调试工具。内建强大的仪器库,从仪器控制、数据采集到数据分析和图像显示。LabWindows/CVI自带代码生成、交互式函数面板、函数提示、快速控件查找等功能,可以帮助开发者进行快速开发。
风洞数据采集主要包括压力、温度、天平等信号。
系统构成
在该系统中主要使用了National Instrument公司PXI-6052E数据采集卡和SCXI-1143信号调理卡的硬件产品。系统采用了工控机加远程控制模块构成,结构如图1。
图1 系统结构
软件主要功能包括硬件参数设置、采集参数设置、时域信号分析、频域信号分析、零点处理、传感器校准等。软件流程图如图2。
图2 软件流程图
软件功能实现
主界面设计
LabWindows/CVI中带有用户界面编辑器,它提供了各种控件如:数字控件、字符串控件、波形图控件、Tab、Table等。利用自动代码生成工具可以帮助开发者快速建立用户界面及对应的回调函数。该程序主界面如图3。
图3
线程考虑[!--empirenews.page--]
整个软件采用多线程模式,主线程用于管理用户界面,在主线程中创建一个单独的采集线程,用于采集和保存数据。这里主要用到了LabWindows/CVI提供的线程函数可以方便的创建、管理线程。
errorCode=CmtScheduleThreadPoolFunctionAdv(DEFAULT_THREAD_POOL_HANDLE,DAQThreadFunction, NULL, THREAD_PRIORITY_NORMAL, NULL,(unsigned int)NULL, NULL, (unsigned int)NULL, &DAQThreadID);该函数用于创建采集线程,DAQThreadFunction为自定义的线程函数,该函数用于实现数据采集及数据存储。
errorCode = CmtReleaseThreadPoolFunctionID (DEFAULT_THREAD_POOL_HANDLE, DAQThreadID);该函数用于释放线程。
数据采集
基于PXI+SCXI这种系统构架,在数据采集时,使用了PXI-6052E的一个通道来控制SCXI所有通道。考虑到通道数多,设置参数多,需要等待足够的时间采集等特点,这样在硬件初始化时会比较花时间,所以在采集程序中把初始化硬件没有放到线程函数里面,专门将该功能列出。这样保证了在点击开始采集后能在要求等待的时间后得到所需要的试验数据。
在该软件中使用了NI早期的数据采集卡驱动程序Traditional DAQ。使用了缓冲技术实现连续数据采集。
a. errorCode = DAQ_DB_Config (config.daq[0].iDevice, 1);配置缓冲模式;
b. errorCode =DAQ_DB_HalfReady (gHardwareConfig.daq[0].iDevice, &halfReady, &DAQStop);检查缓冲是否满,缓冲区满后开始读取数据;
c. if((halfReady == 1) && (DAQStop == 0)) {
errorCode = DAQ_DB_Transfer (gHardwareConfig.daq[0].iDevice, pdsVoltBuffer, &points, &DAQStop);
if(errorCode != 0)
goto error;
}读取缓冲区数据。
数据库功能
数据库功能主要使用了LabWindows/CVI提供的数据库连接工具包。该工具包提供了丰富的数据库操作函数,给开发带来了方便和快捷。LabWindows/CVI和数据库连接的链路图如图4。
图4
a) hdbc=DBConnect (MD_DATABSE_NAME);和数据库建立连接,参数为数据库名称、用户ID及密码构成的字符串。[!--empirenews.page--]
b) hstmt=DBActivateSQL (hdbc, string);激活SQL语句。
c) DBPutRecord (hstmt);刷新数据库。
d) DBDeactivateSQL (hstmt);解除活动SQL语句。
e) DBDisconnect (hdbc);断开数据库连接。
2.5信号分析
在LabWindows/CVI里面自带了常用的信号分析处理函数,可以进行常用的时域信号、频域信号处理以及数字滤波处理等。
在该程序中时域信号处理主要使用了卷积(Convolve)、积分(Integrate)、微分(Difference)。频域信号处理使用了FFT。数字信号处提供了一个可设置的对话框,方便使用者配置滤波参数。
图5
常规的数学处理函数在这个程序中也有用到,都是利用了LabWindows/CVI自带的数学函数如:波形数据的基本算术运算,Add1D、Sub1D、Mul1D、Div1D。
试验报告
在完成试验后,根据试验的要求生成Word或Excel报告,不用再手动编辑报告了,节约了大量时间。这里也是使用LabWidnwos/CVI提供的报告生成工具包,该工具包包含了很多简单实用的函数,可以自动生成柱状图、饼图等,也可以将面板上显示的波形图自动插入到指定位置。
结语
通过利用LabWindows/CVI提供的各种控件快速构建好用户界面,又利用各种提供的丰富函数以及工具包功能函数完美、快速完成了整个程序的开发。在短时间保证开发顺利按照既定计划执行,圆满完成了开发任务。