基于LabVIEW的USB实时数据采集处理系统的实现

发布者:tnzph488最新更新时间:2013-11-08 来源: dzsc关键字:LabVIEW  USB  实时数据  采集处理系统 手机看文章 扫描二维码
随时随地手机看文章

  通用串行总线USB(Universal Serial Bus)作为一种新型的数据通信接口在越来越广阔的领域得到应用。而基于USB接口的数据采集卡与传统的PCI卡及ISA卡相比具有即插即用、热插拔、传输速度快、通用性强、易扩展和性价比高等优点。

  USB 的应用程序一般用Visual C++编写,较为复杂,LabVIEW语言是一种基于图形程序的编程语言,内含丰富的数据采集、数据信号分析分析以及控制等子程序,用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,易于调试、理解和维护,而且程序编程简单、直观。因此它特别适用于数据采集处理系统。利用它编制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转换器和EPROM、 SRAM等。为了扩展其用途,还可以加上多路模拟开关和数字I/O端口。系统的A/D、数字I/O的设计可沿用传统的设计方法,根据采集的精度、速率、通道数等诸元素选择合适的芯片,设计时应充分注意抗干扰性,尤其对A/D采集更是如此。在微控制器和USB接口的选择上有两种方式:一种是采用普通单片机加上专用的USB通信芯片;另一种是采用具备USB通信功能的单片机。USB的另一大优点是可以总线供电,在数据采集设备中耗电量通道不大,因此可以设计成总线供电。

  一个USB设备的软件一般包括主机的驱动程序、应用程序和写进ROM里面的Firmware。Windows98提供了多种USB设备的驱动程序,但还没有一种专门针对数据采集系统,所以必须针对特定的设备编制驱动程序。尽管系统已经提供了很多标准接口函数,但编制驱动程序仍然是USB开发中最困难的一件事。通常采用Windows DDK实现,但现在有许多第三方软件厂商提供了各种各样的生成工具,如Compuware的Driver Works、Blue Waters的Driver Wizard等软件能够轻易地生成高质量的USB驱动程序。单片机程序的编制也同样困难,而且没有任何一家厂商提供了自动生成的工具。编制一个稳定、完善的单片机程序直接关系到设备性能,必须给予充分的重视。以上两个程序是开发者所关心的,而用户却不太关心。用户关心的是如何高效地通过鼠标操作设备,如何处理和分析采集进来的大量数据。因此还必须有高质量的用户软件。用户软件必须有友好的界面、强大的数据分析和处理能力以及提供给用户进行再开发的接口。

  2、 LabVIEW及其外部动态链接库的调用

  LabVIEW 是美国国家仪器(NI)公司开发的一种基于图形程序的虚拟仪表编程语言,其在测试与测量、数据采集、仪器控制、数字信号分析、工厂自动化等领域获得了广泛的应用。LabVIEW程序称为虚拟仪器程序(简称VI),主要包括两部分:前面板(即人机界面)和方框图程序。前面板用于模拟真实仪器的面板操作,可设置输入数值、观察输出值以及实现图表、文本等显示。框图程序应用图形编程语言编写,相当于传统程序的源代码。其用于传送前面板输入的命令参数到仪器以执行相应的操作。LabVIEW的强大功能在于层次化结构,用户可以把创建的VI程序当作子程序调用,以创建更复杂的程序,而且,调用阶数可以是任意的。 LabVIEW这种创建和调用子程序的方法使创建的程序模块化,易于调试、理解和维护。LabVIEW编程方法与传统的程序设计方法不同,它拥有流程图程序设计语言的特点,摆脱了传统程序语言线形结构的束缚。LabVIEW的执行顺序依方块图间数据的流向决定,而不像一般通用的编程语言逐行执行。在编写方框图程序时,只需从功能模块中选用不同的函数图标,然后再以线条相互连接,即可实现数据的传输。

  LabVIEW虽有接口卡的驱动和管理程序,但主要是针对NI公司自己生产的卡。对于普通的I/O卡,还不能直接被LabVIEW所应用,必须采取其他方法。其中可以用LabVIEW的 PortIn和PortOut功能,但此法应用简单,无法实现较复杂的接口功能。而采用动态链接库,可以根据具体需要编写适当的程序,灵活利用 LabVIEW的各项功能。用户可以自己编写DLLs实现LabVIEW与硬件的链接。用VC++6.0编制动态链接库,首先生成DLL框架, AppWizard将自动生成项目文件,但不产生任何代码,所有代码均需用户自己键入。DLL需要的文件有:①h函数声明文件;②c源文件;③def定义文件。H文件的作用是声明DLL要实现的函数原型,供DLL编译使用,同时还提供应用程序编译使用。C文件是实现具体文件的源文件,它有一个入口点函数, 在DLL被初次调用的运行,做一些初始化工作。一般情况下,用户无须做什么初始化工作,只需保留入口点函数框架即可。def文件是DLL项目中比较特殊的文件,它用来定义该DLL项目将输出哪些函数,只有该文件列出的函数才能被应用函数调用。要输出的函数名列在该文件EXPORTS关键字下面。

  3、 基于AN2131Q的单光子采集系统

  该采集系统由笔者自行开发并用于单光子计数种子活性快速检测仪中。它主要由将光子信号转为电信号的光电倍增管(PMT)及其辅助电路和基于AN2131Q的 USB采集卡组成。PMT及其前置放大器、放大器、甄别器等辅助电路能将微弱的光子信号转换为15ns的标准TTL脉冲信号,脉冲信号经过分频处理后再被 USB采集,USB将采集的结果实时地传给主机处理。

  3.1 USB采集卡的硬件组成

  该采集卡由微控制器、USB通信接口、主机以及数字I/O端口组成,如图1所示。

USB采集卡的硬件组成

  笔者设计了一种同步传输方式的单片方案,应用了内置微处理器的USB设计——EZ-USB AN2131Q。它是Cypress公司的一种内嵌微控制器的80脚USB芯片,包含三个8位多功能口,8位数据端口,16位地址端口,二个USB数据端口,二个可定义16位的定时/计数器和其他输入输出端口。其采用一种基于内部RAM的解决方案,允许客户随时不断地设置和升级,不受端口数、缓冲大小和传输速度及传输方式的限制。片内嵌有一个增强型8051微控制器,其4个时钟的循环周期使它比标准8051的速度快3倍。采用同步传输方式将单片机的计数值实时传送给主机,而主机对计数器的控制信号则采用块传输方式传送。EZ-USB是Cypress公司推出的USB开发系统,它为USB外设提供了一种很好的集成化解决方案。EZ-USB在其内核已做了大量繁琐的、重复性的工作,这样就简化了开发代码,进而缩短了开发周期。此外,开发商还提供了配套的开发软件(包括编译软件uVision 51、调试软件dScope 51、控制软件EZUSB Controll Panel)以及驱动程序GPD(General Purpose Driver)接口,以便于用户进行开发使用。[page]

  3.2 USB采集卡的软件构成

  在USB 的Firmware中,采取同步传输(Isochronous Transactions)和块传输(Bulk Transactions)两种传输方式。同步方式用来实时传送采集的数据,块传输主要用来传输主机命令信号和USB的状态信息。块传输中利用端点(Endpoint)2。两种传输方式的核心中断程序如下:

  void ISR_Sutok(void)interrupt 0 //块传输方式

  {

  //initialize the couters in the 8051

  TMOD=0x05;

  TCON=0x10;

  TH0=0;

  TL0=0;

  Thb=0,

  TH0=0;

  TL0=0;

  thb=0;

  EZUSB_IRQ_CLEAR();

  USBIRQ=bmSUTOK; //Clear SUTOK IRQ

  }

  void ISR_Sof(void)interrupt 0 //同步传输方式

  {

  if(TCON&0x21){ //Deal with the counter overflow

  TH0=0;

  Tl0=0;

  THB++;

  TCON&=0xdf;}

  IN8DATA=TH0; //3 Bytes counter result

  IN8DATA=TL0;

  IN8DATA=THB;

  EZUSB_IRQ_CLEAR();

  USBIRQ=bmSOF; //Clear SOF IRQ

  }

  在LabVIEW 应用程序中设计了一Usb.dll文件作为LabVIEW与USB的驱动程序。由于EZ-USB开发系统中已经提供了底层驱动程序(GPD)接口函数,用户只需调用这些函数即可与USB设备连接。因此在DLL的编制中只需调用它提供的函数,大大节约了开发时间,提高了开发速度。创建的Usb.dll文件中包含了如下五个输出函数,功能说明如表1所示。

  表1 Usb.dll包含函数的功能说明

Control  主机对USB设备的控制
ReadResult  获取USB发送到主机的数据
StartIsoStream  启动设备的同步传输流
StartThread  得到标准设备的设备描述符
StopThread  关闭设备的同步传输流

  其定义如下:

  LPSTR_declspec(dllexport)_stdcall Control(int input);

  int_declspec(dllexport)_stdcall ReadResult(void);

  int_declspec(dllexport)_stdcall StartIsoStream(void);

  int_declspec(dllexport)_stdcall StartThread(void);

  int_declspec(dllexport)_stdcall StopThread(void);

  开启设备和获取采集数据的过程如图2所示。它的主要功能有:开启或关闭USB设备、检测USB设备、设置USB数据传输管道(pipe)和端点(endpoint)、实时从USB接口采集数据、显示并分析数据。[page]

开启设备和获取采集数据的流程图

  图2 开启设备和获取采集数据的流程图

  程序在VC++6.0环境下编制成功后自动生成DLL文件。调用时,在框图程序窗口打开FunctionPalette(功能模板),在Advanced模块包含有对库函数的调模块,即CallLibraryFunction。把编写好的DLLs放在当前目录或特定目录下。在功能模板放置函数调用模块,然后选Configure,出现对话框。根据LabVIEW与DLLs的参数对应关系填写好DLL文件的路径(DLL文件不在当前目录下)、被调用函数名、参数的类型及返回类型。需要注意的是,当调用多个函数时要分别填写参数的个数和对应的类型,而且在调用过程中应保持数据位的一致。填好选择OK按钮后, LabVIEW将自动生成各参数的入口及出口状态,这样就实现了LabVIEW与DLLs的调用。

  通过上述方法成功实现了 LabVIEW与USB驱动程序的数据交换,从而实现了以LabVIEW为应用程序的USB实时采集处理系统。将USB采集卡增加A/D或D/A并对电路作相应的改动后,即可实现传统采集卡的所有功能。很明显,这种集成了USB接口优点和LabVIEW图形化编程语言的采集处理系统与传统采集卡相比具有不可比拟的优势,不仅性价比高、通用性高、易于开发、数据处理简单,且可以大大缩短开发时间。

关键字:LabVIEW  USB  实时数据  采集处理系统 引用地址:基于LabVIEW的USB实时数据采集处理系统的实现

上一篇:基于Multisim和LabVIEW的虚拟电子称
下一篇:基于LabVIEW的USB实时数据采集处理系统的实现

推荐阅读最新更新时间:2024-03-30 22:40

STM32F4 开发笔记10:USB FS的枚举方法
FS是Full Speed的意思,指全速USB设备,在电路设计时,通过在DP接1.5K上拉电阻到电源的方法告知主机为全速USB设备,但是在具体使用时,还有问题存在,就是当单片机复位后,主机端虽然还能辨认当前USB设备,但是不能够直接使用,其原因在于USB设备重新启动后,需要完成一个枚举过程,以通知主机。 枚举的具体电路如下图所示,其原理很简单,系统上电后将DE引脚拉高,待USB初始化完毕后,将DE引脚拉低即可。 具体的头文件程序代码如下,建立DE引脚类,并在CUSB类中具体声明。 #ifndef USB_H_ #define USB_H_ #ifdef __cplusplus extern C { cla
[单片机]
USB3.0时代来临,你的保护电路准备好了吗?
  USB3.0标准一经推出,立刻在业界引起了强烈的反响。其10倍于USB2.0的传输速率,让许多消费者摩拳擦掌、跃跃欲试。虽说该技术存在着60GHz、1394等“劲敌”,但是在手机、便携上网终端等应用领域,其魅力还是不可阻挡的。业界普遍预测2010年年中,将是USB3.0“炫舞”消费电子市场的好时机。那么,系统厂商是否已经准备就绪了呢?      终端产品要纳入USB3.0技术,除了主芯片的支持,保护电路的设计也是一个不容忽视的环节。尤其在统一手机充电器标准呼声高涨的今天,USB端口肩负了数据传输及充电等双重责任,其可靠性更是直接关系到了成品的最终质量。      保护电路的作用有多大?泰科电子上海瑞侃电路保护部应用工程经理董湧
[测试测量]
<font color='red'>USB</font>3.0时代来临,你的保护电路准备好了吗?
基于MSP430F449的数据存储和USB串行通信实现
在数据采集和测量仪器尤其是便携式设备中,数据存储和传输是不可避免的问题,近年来TI公司推出的低功耗微控制器MSP430,在仪器设计和制造领域引起巨大变革,新型控制器和大容量串行存储器的应用大大提高产品了的性能。本文主要解决两个问题 1 解决经过MSP430采集后的数据与EEPROM24C256的数据接口问题,也就是数据存储问题; 2 解决EEPROM与上位机(普通微机)的数据通信问题,也就是存储后的数据上传问题。 首先对主要的集成电路做简单介绍 MSP430F449简介 MSP430F449是MSP430系列中的一种,MSP430系列是一种具有集成度高,功能丰富、功耗低等特点的16位单片机。它的集成调试环境Em
[单片机]
基于MSP430F449的<font color='red'>数据</font>存储和<font color='red'>USB</font>串行通信实现
技术拆解:Apple苹果 Lightning与USB-C to 3.5mm转换器
苹果从新推出iPhone7系列开始,就取消了3.5mm耳机孔,用Lightning接口取代音频线路输出功能,这个看来也是趋势,安卓手机有几款也是直接用USB Type-C的接口解决音频、充电问题的。Lightning耳机的接口最大的不便不能同时听歌充电,只能转而求其次使用无线耳机或者转接头。 这也使得传统的3.5接口耳机不能直接 使用在iPhone 7和后续机型上面,但是在iPhone 7到iPhone X都随机有配送一条Lightning转3.5短线,得以使用旧款耳机,或者第三方的耳机。 在近期,苹果在新iPad Pro上取消了3.5mm耳机孔和Lightning接口,改为USB Type-C接口。这个接口既可以充电,
[手机便携]
技术拆解:Apple苹果 Lightning与<font color='red'>USB</font>-C to 3.5mm转换器
PIC18F2455/2550/4455/4550之通用串行总线USB
PIC18FX455/X550 系列器件包含全速和低速兼容的USB串行接口引擎(Serial Interface Engine,SIE),它允许在任何USB主机和PIC单片机之间进行高速通信。 可以利用内部收发器或通过外部收发器将SIE 直接连接到USB。内部的3.3V稳压器也可以在5V的应用中被用作内部收发器的电源。 USB模块还包含了某些特殊硬件以提高其工作性能。在器件的数据存储空间(USB RAM)中提供了双端口存储器,以便单片机和 SIE 之间可以直接进行存储器访问。 此外,还提供了缓冲器描述符,允许用户任意设置USB RAM 空间中供端点使用的存储区。 此外还提供了并行通信端口以方便大量数据的不间断传输,比如将数
[单片机]
PIC18F2455/2550/4455/4550之<font color='red'>通用串行总线</font><font color='red'>USB</font>
USB协议架构及驱动架构
1. USB协议 1.1 USB主机系统              在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器。USB主机控制器包含硬件、软件和固件一部分。 1.2 USB设备系统                USB设备按功能分为两部分:集线器(Hub)和功能部件。从下图可知,主机通过根集线器连接到各种外围设备(集线器和功能部件)。 1.3 主机和设备之间通信模型                                                                                              
[嵌入式]
STM32 USB学习笔记8
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:STM32F103C8T6 开发库:STM32F1Cube库和STM32_USB_Device_Library 现在分析USB器件库核心文件的最后一个文件usbd_ctlreq,该文件提供了标准请求的处理,跟USB2.0协议的第九章节紧密关联。在Setup阶段根据bmRequest字段的内容分为:设备请求、接口请求、端点请求。并根据不同的请求调用不同的函数体,USB2.0协议中定义的标清请求有以下几种 通过第一个竖栏可以看出同一个请求代码可以对应多个接收者,例如CLEAR_FEATURE请求可以是设备请求也可以是接口请求,同样也可以是端点请求。对应的各个请
[单片机]
计算机labview对示波器的远程控制技术分析
我们知道,现在的数字示波器可以准确捕获各种周期信号、非周期信号,数字示波器已成为科研实验和工程项目中各类信号采集、记录和分析的最主要设备之一。由于很多情况下,需要把数字示波器采集到的数据进行数据处理和分析,最终完成远程的自动测试和分析的需求。因此对示波器进行远程自动控制,实现对示波器的各项功能的自动操作和对数据的处理已成为很多科研实验和工程项目必需的环节。最近,我经常接到很多工程师的询问有关如何控制示波器的电话。下面就来谈谈计算机控制示波器的步骤和方法,并利用实例进行分析和讲解。 1. 系统硬件构架 图1 系统硬件构架图 计算机通过GPIB或 LAN(网口)与示波器建立连接来控制示波器,其系统的硬件构架图见图1。 2.
[工业控制]
计算机<font color='red'>labview</font>对示波器的远程控制技术分析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved