基于基于LabVIEW的的USB实时数据采集处理系统实现实时数据采集处理系统实现
USB总线可以实现对外部数据实时高速的采集,把采集的数据传送到主机后再通过LabVIEW的功能模
块顺利实现数据的显示、分析和存储。
通用串行总线USB(Universal Serial Bus)作为一种新型的数据通信接口在越来越广阔的领域得到应
用。而基于USB接口的数据采集卡与传统的PCI卡及ISA卡相比具有即插即用、热插拔、传输速度快、通用性强、易扩
展和性价比高等优点。
USB的应用程序一般用Visual C++编写,较为复杂,花费的时间较长。由美国国家仪器(NI)公司开发的LabV
IEW语言是一种基于图形程序的编程语言,内含丰富的数据采集、数字信号分析以及控制等子程序,用户利用创建和调用子
程序的方法编写程序,使创建的程序模块化,易于调试、理解和维护,而且程序编制简单、直观。因此它特别适用于数据采集
处理系统。利用它编制USB应用程序,把LabVIEW 语言和USB总线紧密结合起来的数据采集系统将集成两者的优
点。USB总线可以实现对外部数据实时高速的采集,把采集的数据传送到主机后再通过LabVIEW的功能模块顺利实现
数据的显示、分析和存储。
1 USB及其在数据采集设备中的应用
USB自1995年在Comdex上亮相以来已广泛地为各PC厂家所支持。现在生产的PC几乎都配备了USB接口,
Microsoft的Windows 98、NT以及Mac OS、Linux等流行操作系统都增加了对USB的支持。
USB具有速度快、设备安装和配置容易、 易于扩展、能够采用总线供电、使用灵活等主要优点,应用越来越广泛。
一个实用的USB数据采集系统硬件一般包括微控制器、USB通信接口以及根据系统需要添加的A/D转换器和EPRO
M、SRAM等。为了扩展其用途,还可以加上多路模拟开关和数字I/O端口。系统的A/D、数字I/O的设计可沿用传
统的设计方法,根据采集的精度、速率、通道数等诸元素选择合适的芯片,设计时应充分注意抗干扰性,尤其对A/D采集更
是如此。在微控制器和USB接口的选择上有两种方式:一种是采用普通单片机加上专用的USB通信芯片;另一种是采用具
备USB通信功能的单片机。USB的另一大优点是可以总线供电,在数据采集设备中耗电量通常不大,因此可以设计成总线
供电。 一个USB设备的软件一般包括主机的驱动程序、应用程序和写进ROM里面的Firmware。Windows
98提供了多种USB设备的驱动程序,但还没有一种专门针对数据采集系统,所以必须针对特定的设备编制驱动程序。尽管
系统已经提供了很多标准接口函数,但编制驱动程序仍然是USB开发中最困难的一件事。通常采用Windows DDK
实现,但现在有许多第三方软件厂商提供了各种各样的生成工具,如Compuware的Driver Works、Bl
ue Waters的Driver Wizard等软件能够轻易地生成高质量的USB驱动程序。单片机程序的编制也同样
困难,而且没有任何一家厂商提供了自动生成的工具。编制一个稳定、完善的单片机程序直接关系到设备性能,必须给予充分
的重视。以上两个程序是开发者所关心的,而用户却不大关心。用户关心的是如何高效地通过鼠标操作设备,如何处理和分析
采集进来的大量数据。因此还必须有高质量的用户软件。用户软件必须有友好的界面、强大的数据分析和处理能力以及提供给
用户进行再开发的接口。
2 LabVIEW及其外部动态链接库的调用
LabVIEW 是美国国家仪器(NI)公司开发的一种基于图形程序的虚拟仪表编程语言,其在测试与测量、数据采集、仪器
控制、数字信号分析、工厂自动化等领域获得了广泛的应用。LabVIEW程序称为虚拟仪器程序(简称VI),主要包括两
部分:前面板即人机界面和方框图程序。前面板用于模拟真实仪器的面板操作,可设置输入数值、观察输出值以及实现图
表、文本等显示。框图程序应用图形编程语言编写,相当于传统程序的源代码。其用于传送前面板输入的命令参数到仪器以执
行相应的操作。LabVIEW的强大功能在于层次化结构,用户可以把创建的VI程序当作子程序调用,以创建更复杂的程
序,而且,调用阶数可以是任意的。LabVIEW这种创建和调用子程序的方法使创建的程序模块化,易于调试、理解和维
护。LabVIEW编程方法与传统的程序设计方法不同,它拥有流程图程序设计语言的特点,摆脱了传统程序语言线形结构
的束缚。LabVIEW的执行顺序依方块图间数据的流向决定,而不像一般通用的编程语言逐行执行。在编写方块图程序
时,只需从功能模块中选用不同的函数图标,然后再以线条相互连接,即可实现数据的传输。 LabVIEW虽有接口卡的
驱动和管理程序,但主要是针对NI公司自己生产的卡。对于普通的I/O卡,还不能直接被LabVIEW所应用,必须采
取其他方法。其中可以用LabVIEW的PortIn和PortOut功能,但此法应用简单,无法实现较复杂的接口功
能。而采用动态链接库,可以根据具体需要编写适当的程序,灵活利用LabVIEW的各项功能。用户可以自己编写DLL
s实现LabVIEW与硬件的链接。用VC++6.0编制动态链接库,首先生成DLL框架,AppWizard将自动
生成项目文件,但不产生任何代码,所有代码均需用户自己键入。DLL需要的文件有:①h函数声明文件;②c源文件;③
def定义文件。h文件的作用是声明DLL要实现的函数原型,供DLL编译使用,同时还提供应用程序编译使用。c文件
是实现具体文件的源文件,它有一个入口点函数,在DLL被初次调用时运行,做一些初始化工作。一般情况下,用户无须做
什么初始化工作,只需保留入口点函数框架即可。def文件是DLL项目中比较特殊的文件,它用来定义该DLL项目将输
出哪些函数,只有该文件列出的函数才能被应用函数调用。要输出的函数名列在该文件EXPORTS关键字下面。
3 基于AN2131Q的单光子采集系统
该采集系统由笔者自行开发并用于单光子计数种子活性快速检测仪中。它主要由将光子信号转为电信号的光电倍增管(PM
T)及其辅助电路和基于AN2131Q的USB 采集卡组成。PMT及其前置放大器、放大器、甄别器等辅助电路能将微
弱的光子信号转换为15ns的标准TTL脉冲信号,脉冲信号经过分频处理后再被USB采集,USB将采集的结果实时地
传给主机处理。
3.1 USB采集卡的硬件组成
该采集卡由微控制器、USB通信接口、主机以及数字I/O端口组成,如图1所示。