《电子技术应用》
您所在的位置:首页 > 测试测量 > 业界动态 > 基于虚拟仪器技术的USB接口仪器通信软件设计

基于虚拟仪器技术的USB接口仪器通信软件设计

2008-04-11
作者:叶文生, 王思华

  摘 要: 以北京普源公司生产的RIGOL DS5000系列数字存储示波器" title="数字存储示波器">数字存储示波器为例,介绍一种通过USB总线接口实现PC机与仪器通信的编程方法,并且给出一个通信应用实例。
  关键词: 电子仪器 USB接口 虚拟仪器 LabVIEW 动态链接库


  随着现代化科学技术的发展,电子仪器在各行各业中得到广泛的应用,成为不可缺少的工具。自1928年峰值电子电压表在美国商品化到现在,电子仪器的发展大致经历了模拟式→数字式→智能式与程控式三个阶段。与传统仪器相比,智能式与程控式仪器具有自测功能和数据处理功能以及操作自动化、人机界面友好和可程控操作等特点。现代智能仪器大多数都配备有标准的通信接口" title="通信接口">通信接口,为PC机与仪器的连接提供了极大的方便。虚拟仪器是基于PC机的测控设备或系统,PC机与仪器组成的自动测量系统是虚拟仪器的常用结构之一。该结构的特点是能将电子仪器的长处(例如测量高频信号的能力强)与PC机在信号处理、存储和表达以及测试自动化方面的优势结合起来,组成功能更强、性能更优和用途更广的自动化测量系统。
1 常见仪器通信接口的比较
  目前,集成在智能仪器上的标准通信接口主要有RS232C接口、RS485接口、GPIB接口和USB总线接口等。四种通信接口的性能比较如表1所示。从表中可看出RS485具有长距离传输的优点,而USB则具有传输速率" title="传输速率">传输速率最高的优点。USB接口除了传输速率高外,还具有支持热插拔、即插即用和高性价比等优点。因此,现在越来越多的仪器配置了USB接口,而PC通常更是配置了多个USB接口。


2 USB总线简介
  通用串行总线(USB)Universal Serial Bus是由Compaq、IntelMicrosoftNECHewlett-Packard、Lucent和Philips等七家公司于1994年底联合开发的一种通信接口标准,当时推出的版本是0.7版,而直到1998年底推出1.1版之后,USB总线接口才得到广泛的应用。现在最新的版本是2.0版,其传输速率已经从1.1版的12Mbps提高到480Mbps,整整提高了40倍。
3 USB总线仪器通信的实现
3.1 USB总线通信的方法
  美国国家仪器(NI)公司的虚拟仪器应用软件开发平台LabVIEW已成为测试测量和自动化领域的主要软件工具之一,本文所讨论的通信软件设计即是基于LabVIEW完成的。在LabVIEW中,PC机与电子仪器通过USB接口进行通信的方式主要有以下两种:
  (1)通过调用电子仪器厂商提供的二次开发包里面的通信动态链接库" title="动态链接库">动态链接库(DLL)来实现。
  (2)通过VISA(Virtual Instrument Software Architecture)提供的USB控制函数节点来实现。
  本文只对第一种方法展开讨论和研究。
3.2 动态链接库的调用
  在LabVIEW中可通过调用DLL的方式实现对其他公司硬件产品(如数据采集卡、图像采集卡和USB接口设备等)的驱动,并在此基础上可实现PC机与仪器的通信。下面以调用北京普源公司提供的RIGOL DS5000系列数字存储示波器(以下简称DS5000示波器)的DLL为例来说明具体的编程方法。
  在LabVIEW中调用DLL的函数必须知道DLL接口函数的原型,才能正确地设置相关的参数。普源公司提供的DS5000示波器的DLL(DS5000USB_UI.dll)中有两个接口函数:USB写函数(Write_USB)和USB读函数(Read_USB),它们的函数原型分别是bool Read_USB(int nType, int nLength,unsigned char* pBuffer)和bool Write_USB(unsigned char* cCmd)。LabVIEW 7.1的调用DLL(Call Library Function)节点位于功能模板(Functions)→All Functions→Advanced中,把它调出到LabVIEW的程序框图后,双击它就可以见到如图1所示的设置对话框。然后经过输入正确的DLL路径与函数名称、调用规程、函数参数及其类型等步骤,便完成了调用DLL节点的设置。调用Write_USB函数的方法与Read_USB相似。
  为了便于对仪器发送控制命令,笔者将USB接口的写和读制作成子程序" title="子程序">子程序,其程序框图如图2所示。要注意的是,DS5000示波器在进行USB通信时每次只能接收和发送单个ASCII码,故子程序中含有把字符串转换成ASCII码数值数组和把ASCII码数值数组转换回字符串的功能。

 


3.3 DS5000的通信协议(控制命令)和使用
  在DS5000示波器的二次开发包中,包含有DS5000示波器的命令表,可以用USB写命令子程序把控制和查询命令直接发给仪器,然后再用USB读取数据子程序从仪器取回数据。例如,要读取输入信号的频率,可以在USB写命令子程序的CMD String参数中输入“:MEASURE:FREQ:?”,然后再用USB读取数据子程序取回输入信号频率的表达值“freq=***.***kHz”。表2为DS5000示波器的部分控制和查询命令。


3.4 波形的读取与显示
  在PC机与数字示波器组成的系统中,读取示波器测量的信号数据并以波形方式显示出来通常是最基本的功能。在实现该功能的过程中,笔者发现程序的设计有一定的复杂性,因此用以下的实例加以说明。
  例如,要取示波器通道1的波形。在读取通道1波形的命令“:DATA:CHANNEL1:?”发送到DS5000示波器后,示波器会把波形数据分成48块分批放到USB接口的数据缓存单元中,每批数据为256字节,并且每批数据以“00”结束,而最后一批数据(即第48批数据)以一个换行符和一个回车符作为全部数据的结束符。组成波形的每个点的数据都以十六进制字符串组成,如用“0xB0”表示十六进制数值“B0”。另外值得注意的是,DS5000示波器返回的数据是以8位补码的形式表示的,如果直接显示在Waveform Graph窗口中,则会出现Waveform Graph上的波形与原波形刚好反相的现象。为了解决此问题,可以用255减去返回的数据,然后再送到Waveform Graph中显示,这样在Waveform Graph上显示的波形才能与原波形相同。读取波形数据并显示波形曲线的VI程序段如图3所示。图中,“SendtoUSB.vi”和“ReadUSBasString.vi”分别为USB写命令子程序和USB读取数据子程序,而“StrToNumArray.vi”子程序的功能是把从示波器读回来的字符型数据转换成可以正确地在Waveform Graph上显示的数值型数据,其程序框图如图4所示。


3.5 虚拟数字存储示波器程序设计
  笔者利用此技术在PC机上开发出了一套虚拟数字存储示波器应用软件,其界面如图5所示。该虚拟示波器不仅具有普源公司的DS5022M数字存储示波器的基本功能,而且增加了自动调节量程和把波形数据文件与波形图保存到电脑等功能。如有需要,利用LabVIEW可以很容易地为该虚拟仪器增加信号滤波等功能,从而把它扩展为一种多用途的综合测试系统。
  USB总线通信接口的应用越来越多,基于USB总线的仪器通信是一种新的仪器接口通信技术。与传统的仪器接口方式相比,USB通信方式具有成本低而性能高的优点,从而使基于电子仪器与PC机的虚拟仪器系统更具竞争力并具有更好的应用前景。该技术不仅可用于仪器通信,也可以应用于其他领域,例如PC机与数码相机或其他带USB接口的电子产品的通信。因此,基于USB接口的虚拟仪器系统在自动化测试领域必将得到越来越广泛的应用。
参考文献
1 伏大山,王 勇. 电子仪器发展趋势[J]. 电子质量,2004;(10):9~11
2 林月芳,吉海彦. 智能仪器及其发展趋势[J]. 仪器技术,2003;(1):37~39
3 边海龙,贾少华. USB2.0设备的设计与开发[M]. 北京:人民邮电出版社,2004
4 杨乐平,李海涛. LabVIEW高级程序设计[M]. 北京:清华大学出版社,2003
5 National Instruments. LabVIEW help [Z], 2005
6 北京普源公司. DS5000用户手册[Z], 2003

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。