基于LabWindows/CVI高速并行数据采集系统USB4814的设计

2015-03-31 19:16孙茂一赵普俊崔荃
现代电子技术 2015年5期
关键词:虚拟仪器数据采集

孙茂一 赵普俊 崔荃

摘 要: 基于LabWindows/CVI软件开发平台,利用USB4814数据采集卡设计了高精度并行数据采集系统。该系统的特点是选用高采样率高精度的14位A/D转换芯片进行A/D转换电路设计,并行采集卡每一路都应用独立的A/D转换器。采用同步并行设计,通道间串扰极小,无相位差,具有极高的测量精度和相位一致性。系统运用USB 3.0传输接口技术,发挥了USB 3.0接口的优势,提高了数据传输速度,满足了高数据吞吐量要求。对系统的设计可达到高性价比、多功能、低功耗等特点的数据采集的目的。

关键词: 虚拟仪器; LabWindows/CVI; USB4814; 数据采集

中图分类号: TN911?34; TP29 文献标识码: A 文章编号: 1004?373X(2015)05?0120?03

Design of high?speed parallel data acquisition system based on LabWindows/CVI

SUN Mao?yi, ZHAO Pu?jun, CUI Quan

(China National Institute of Measurement and Testing Technology, Chengdu 610021, China)

Abstract:A high?speed parallel data acquisition system was designed on LabWindows/CVI software development platform by using the USB4814 data acquisition card. As for the characteristic of this system, 14?bit A/D conversion chip with sampling rate and high accuracy was selected in A/D converter circuit design. An independent A/D converter is used in each channel of the parallel acquisition card. Since the synchronous parallel design is adopted, the crosstalk between the channels is very weak and there is no phase difference. It has a very high accuracy and consistency phase. The system uses USB3.0 transmission interface technology, and takes advantage of USB3.0 interface. It improved data transfer speed, and met the high data throughput requirement. The design of this system has characteristics of high performance?price ratio, multi?function and low?power consumption.

Keywords: virtual instrument; LabWindows/CVI; USB4814; data acquisition

0 引 言

随着信息技术的迅速发展,数据采集和处理技术广泛应用于雷达、通信等领域。而在早期的计算机系统上通信必须使用串口或并口来发送数据,每个接口都需要占用计算机很多资源,传统的接口一般都用PCI总线或RS 232串行总线。PCI总线有较高的传输速率,可达132 Mb/s,也可以即插即用,但是其扩充槽有限且插拔不方便;RS 232串行总线虽然连接比较方便,但是传输速率太慢,不易用于高速传送数据以及传送大量数据。USB(通用串行总线)集中了PCI和RS 232串行总线的优点,具有方便的即插即用和热插拔特性以及较高的传输速率,因此,将USB技术应用于数据采集是非常合适的,可以达到数据采集系统的高速率处理[1?2]。本文设计了一套基于USB 3.0的便携式高精度数据采集系统,相对于USB以前版本,USB 3.0最突出的优点就是在数据传输率上有了很大的提高,在原来低速率1.5 Mb/s和全速的12 Mb/s两种模式基础上,USB 3.0极大地提高了带宽——高达5 Gb/s全双工[3]。同时本文介绍了用LabWindows/CVI开发数据采集系统的方法和步骤。

1 硬件简介

该系统是基于USB 3.0的高速并行数据采集卡,有4个通道,单通道的采样率最高可达100 MS/s。采集卡的硬件主要由阻抗匹配电路、A/D转换电路、存储电路、FPGA控制电路、USB接口电路组成。其中A/D转换电路采用的是一款专门对高频、宽动态范围信号进行数字化处理的14位80 MS/s、低功率3 V A/D转换器,用以完成极为苛刻的成像和通信应用的要求。FPGA控制电路选用的是CycloneIII系列EP3C55F484C8芯片,该芯片具有成本低、功耗小的优点。USB接口电路采用存储器直接访问(DMA)技术,它是一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,即不通过CPU,也不需要CPU干预,整个数据传输操作在DMA控制器下进行,CPU除了在数据传输开始和结束时作一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处在并行操作。因此,使整个计算机系统的效率大大提高,USB4814硬件原理如图1所示。

2 软件设计

该系统的应用程序开发选用了LabWindows/CVI,它是在Windows环境下面向计算机测控领域的虚拟仪器软件开发平台。该程序以ANSI C为核心,将功能强大的C语言与测控专业工具有机地结合起来,在编程过程中直接调用用户界面函数和高级分析库函数,能方便地进行频谱分析、信号滤波、功率谱分析、微积分等数据处理功能[4?5]。

2.1 动态链接库

动态链接库(DLL)是微软公司在微软视窗操作系统(即Windows操作系统)中实现共享函数库概念的一种方式,是一种函数或资源库。库中的函数可以被应用程序或其他DLL调用[6?7]。动态链接库提供了一种方法,使进程可以调用不属于其可执行代码的函数。

2.2 USB4814DLL.DLL函数简介

USB4814的库文件包括USB4814DLL.DLL,USB4814DLL.LIB,USB4814DLL.H三个文件。通过调用动态链接库里的函数可以完成对USB4148卡的控制。下面是函数的部分程序代码:

intUSB4814_VBSysInit(unsigned int*sn,double*BaseLine,double*GainTable); //USB4814初始化

unsigned int _stdcall USB4814_VBSetHardWare(unsignedintSampleIdx; //采样率序号

unsigned int RangeIdx0;unsigned int RangeIdx1;unsigned int RangeIdx2;

unsigned int RangeIdx3;

unsigned int TrigMode;

unsigned int TrigEdge; //触发边沿

unsigned int TrigSource; //触发源

unsigned int SampleLengthIdx; //采样长度

unsigned int TrigPreIdx;

//预触发;double TrigLevel;//触发电平)

unsigned int USB4814_Acq(void); //启动采集

unsigned int USB4814_Idle(void); //暂停采集

unsigned int USB4814_Exit(void); //退出采集

unsigned int USB4814_PackData(int Dots,double *WaveData1,double *WaveData2) //读取数据

2.3 函数编程步骤

函数编程步骤如图2所示。

3 应用程序设计

3.1 程序设计分析

按照软件实现的功能, 把应用程序需要处理的任务分为用户界面控制、数据采集、数据显示、数据分析和处理等[8]。软件中以用户界面为主线程,其他为次线程。数据采集系统主要完成的任务有实时采集波形,对输入信号的波形进行直观的显示,对幅值、频率等进行谱分析,完成对分析结果的存盘和调用[9?10]。用户界面如图3所示。

图4为对某一信号的FFT频谱分析。

3.2 部分源程序

部分源程序如下:

//USB4814卡初始化;

ackstatus=USB4814_Init(&pSysInfo.Idnumber,pSysInfo.BaseLine,pSysInfo.GainTable);

if(ackstatus){ MessagePopup("info","USB4814 initialization is successful!");

ackstatus=DEVICE_SUCCESSFULLY_OPENED; }

//设置采样控制参数;

void *callbackData, int eventData1, int eventData2)

{ switch (event)

{ case EVENT_COMMIT:SetCtrlStatus(DISABLE);

mFlag.RunStatus=1;

mFlag.flagread=0;

CreatFile_IFSave(); //如果存盘,创建存盘文件

PackSampleSettingParameter(); //获取面板的参数设置

mFlag.mSampleDotsPerCh=HALFFIFOPERCH*mNINTTIMESAGROUP;SetAxisRange(panel_Handle,PANEL_WAVE,VAL_MANUAL,0,mFlag.mSampleDotsPerCh-1,VAL_MANUAL,myscale*(-1.0),myscale); if(ackstatus==DEVICE_SUCCESSFULLY_OPENED)

{USB4814_VBSetHardWare(pSysInfo.ClkMode,……)//设置采集参数USB4814_Acq();

//启动采集}SetCtrlVal(panel_Handle,PANEL_LED,1)

SetCursorMode(HIDE);

//创建一个新线程来处理波形数据

[CmtScheduleThreadPoolFunction(DEFAULT_THREAD_POOL_]HANDLE,DaqThreadFunction, NULL,&threadFunctionId1);[DaqThreadStatus=RUNING;][CmtSetCurrentThreadPriority(THREAD_]PRIORITY_HIGHEST);break;}return 0;

//数据采集线程

static int CVICALLBACK DaqThreadFunction (void *functionData)

……

{if(USB4814_PackFifoData(4096*mNINTTIMESAGROUP,iadcdata[0],iadcdata[1],iadcdata[2],iadcdata[3],iadcdata[4],iadcdata[5],iadcdata[6],iadcdata[7]))

……}

//释放驱动程序,退出软件

{{……

CmtWaitForThreadPoolFunctionCompletion

(DEFAULT_THREAD_POOL_HANDLE,threadFunctionId1,

OPT_TP_PROCESS_EVENTS_WHILE_WAITING);

CmtReleaseThreadPoolFunctionID

(DEFAULT_THREAD_POOL_HANDLE,

threadFunctionId1);……;QuitUserInterface (0);

break;}

return 0;}

4 结 语

本文基于 LabWindows/ CVI这一软件开发平台,设计了一种高速并行USB4814数据采集系统。利用多线程、DLL技术极大地提高了系统性能,使采集系统具有实时性、可扩展性等特点。经过测试该系统可以实现并行数据采集,每通道最高采样率达80 MS/s。并能实现1 MS/s连续采样不丢数据,完全符合设计要求。

参考文献

[1] 刘君华,白鹏.虚拟仪器编程语言LabWindows/CVI教程[M].北京:电子工业出版社,2001.

[2] 王建新,杨世凤,隋美丽.LabWindows/CVI测试技术及工程应用[M].北京:化学工业出版社,2006.

[3] Compaq. Universal serial bus specification, revision 3. 0 [R]. USA: Compaq, 2004.

[4] Anon. CY7C68013data sheet [EB/OL]. [2014?08?04]. http:// www.alldatasheet.com/datas.

[5] National Instrument Corporation. LabWindows/CVI user manuel [M].USA: National Instrument Corporation, 2002.

[6] 李兴.虚拟仪器的软件开发[J].原子能科学技术,1999,33(2):125?128.

[7] 周永强.虚拟仪器数据采集系统的研制[J].长江科学院学报,1999(2):43?46.

[8] 王志强,孙书鹰,孙世宇.USB设备驱动程序开发技术研究[J].微计算机信息,2006(2):265?268.

[9] 师黎.虚拟仪器技术在实验室建设中的应用研究[J].郑州工业大学学报,1999(2):98?99.

[10] 王兰省.虚拟仪器系统开放技术[J].测控技术,1999(4):64?65.

猜你喜欢
虚拟仪器数据采集
PCB 刻制机功能开发及在虚拟仪器实验室建设中的应用
虚拟仪器及其在电工电子实验中的应用
一种基于虚拟仪器的电控柴油机实验台的设计
虚拟仪器技术在农业装备测控中的应用
CS5463在植栽用电子镇流器老化监控系统中的应用
大数据时代高校数据管理的思考
基于广播模式的数据实时采集与处理系统
通用Web表单数据采集系统的设计与实现
基于开源系统的综合业务数据采集系统的开发研究
基于虚拟仪器的DMFC实时监控系统