当前位置: 首页 » 技术前沿 » 创新技术 » 正文

基于VISA标准的仪器驱动器设计

字体: 放大字体  缩小字体 发布日期:2007-11-27  作者:李扬 赵葛霄 汪仁煌  浏览次数:941

关键词】VISA标准,仪器通信,驱动程序,命令参数,属性

摘要】本文以LabVIEW的VISA程序模块为例,介绍基于VISA标准的仪器驱动器设计方法。包括VISA编程语法、子VI模块、基于消息的通信编程、VISA属性和事件等内容。

1 VISA标准  
  仪器驱动器(Instrument Driver)是指使用标准化的I/O函数与一台(或几台)仪器设备进行通信的一套(一组)程序,主要用于对仪器进行程控操作,如设置参数与工作方式、读/写测量数据、触发及读回仪器工作状态等。在LabVIEW编程语言中,仪器驱动器采用VISA标准编程,从而可避开许多复杂而低级的仪器程控命令。
  VISA是虚拟仪器体系结构(Virtual Instrument Software Architecture)的简称 。1993年9月,泰克公司、惠普公司、美国国家仪器公司等35家最大的仪器仪表公司成立了VXIplug&lay系统联盟,其目的是研制出一种新的标准,确保不同厂商、不同接口标准的仪器能相互兼容、可通讯和数据交换,并且提供给用户方便易用的驱动程序。为此,联盟1996年2月推出了VISA标准,它的特点有:1)面向对象编程;2)VISA是当前所有仪器接口类型功能函数的超集,且十分简洁。GPIB有60多个函数,VXI有130多个函数,惠普的SICL有100多个函数。而VISA具有上述所有接口函数的功能 ,但只有90多个函数操作;3)VISA作为标准函数,与仪器的I/O接口类型无关;4)VISA程序与操作系统与编程语言无关,只需要很小的修改,就可以从一个平台移植到另一个平台。
  在VISA标准下的仪器驱动器的内部模型,如同一个金字塔结构,如图1—1所示。在金字塔的最底层,是VISA资源管理器,它负责管理与控制不同种类的仪器,进行标准化处理;在金字塔的上面,VISA定义了3个级别的仪器驱动资源:I/O级、仪器级和用户级。每上一个级别的程序可以调用其下面级别所有程序的功能;在金字塔的最顶端,是人机接口应用程序。它利用VISA标准的开放性、兼容性和可移植性,将不同的仪器组合集成起来,构成分布式集成控制系统。
                   

  VISA标准的推出,统一了仪器工业的软件接口标准,使得仪器驱动程序兼容性强 ,并且可适应未来软硬件的发展需要。目前,VISA正在进行IEEE1226.5的标准化工作 。 
    LabVIEW的VISA函数位于Instrument I/O>VISA模板中,如图1—2所示。VISA编程时使用VISA session参数,VISA session是每次程序操作过程的唯一逻辑标识符,它标识了与之通讯的设备名称以及进行I/O操作所必需的配置信息。VISA session的缺省类值是Instr。如果需要,可以选择如下值:GPIB Instr、Seri al Instr以及VXI、GPIB-VXIInstr。另一个重要的参数是Resorce Name,包含I/O接口类型以及设备地址等信息。其编程语法如表1—1所示。关键词GPIB用于同GPIB接口仪器建立通讯,关键词VXI通过内置式或MXI总线控制器同VXI仪器建立通讯,关键词GPIB-VXI用于GPIB-VXI控制器,关键词SERIAL用于异步串行设备通讯。
                          
                      
    VISA标准具有90多个与仪器物理接口类型无关的I/O操作函数,可分成下列的命令类型:Session的打开与关闭、VISA属性、基于字符信息操作的仪器控制与触发命令 、基于寄存器操作的仪器的程控命令、采用中断子程序调用方法的事件处理命令和采用软件查询方法的事件处理命令等。下面介绍若干常用的VISA函数:
  (1)VISA Open:打开一个指定设备(resource name)的session,返回可被用于调用的session标识符和设备的其它操作。
   (2)VISA Close:关闭一个指定设备的session或事件event。
  (3)VISA Write:将数据同步或异步地写入基于字符操作的仪器。
  (4)VISA Read:从基于字符操作的仪器中同步或异步地读出数据。
    VISA程序的基本流程图如图1—3所示。
                       
2 基于消息(message-based)的通信  
  基于消息(message-based)的通信用于向仪器读/写字符型数据。如图2—1所示,VISA程序向地址设定为1的GPIB设备读/写数据。在写入缓冲区中使用“*IDN?”命令参数,它返回仪器的标识符,该命令适用于大多数仪器(如TDS320/420数字存储示波器等)。byte count为读出字符的字节数(100个字节)。
                       
    LabVIEW的流程图如图2—2所示,VISA Open根据Resource name和VISA session与仪器建立通讯。本VISA Write模块把write buffer中的字符串写入设备,而dup VISA session向下传送相同的session值。return count返回实际传送的字节数,VISA Read读取指定设备中的字符数据。(在UNIX工作平台上,数据为同步写入/读出;在其他工作平台上,数据为异步写入/读出。)VISA Close关闭由VISA session指定的设备的通讯过程,释放相应资源。error out字串包含出错信息。
                   
   该程序运行后,应在read buffer指示框中显示仪器的标识符。如果无数据返回 ,驱动程序将接收到一个VISA出错信息,表示你的仪器不能读命令参数“*IDN?”。(查阅仪器使用手册,可找到更多的仪器操作命令。)
                  
  如图2—3所示的VI例子可对仪器进行多次读/写操作。将所有组态命令写在一个字串中,然后连接至Write.vi模块的wirte buffer输入端。这样就可避免每完成一次操作内容都要中断程序的运行,然后才能进行下次的读/写操作。  
  如果在一次操作中只需要执行一项内容,可考虑设计选择项,如使用Case结构或Select控件等,但通常使用Pick Line&Appent函数更方便。Pick Line&Append函数可与Format into String函数配合使用以建立命令串,如图2—4所示。
                   
   Pick line&Append函数的作用是从multi-linestring(多行字串)选择由lineindex指定的一行,并扩充到string中。Formatinto String函数的作用是将自变量(arguments)组合并转换为另一字串形式resul ting string,其格式由formatstring确定。
3 属性(VISA Properties)  
  具有VISA属性的仪器操作将允许寄存器访问和基于消息的通信。VISA Resource具有各种带数值的属性(attributes)。在程序中,这些属性可以被读取或进行设置 。VISA属性节点(property node)如下:
  VISA属性节点包括VISA class和一些属性(at-tributes)。设置VISA class时,可以将一个VISA Session连接至reference端子,也可以用鼠标点击图标并弹出一菜单,然后从select VISA Class子菜单中选择Instr。当在流程图中第一次放置属性节点时,它只有一个属性端子。如果需要增加属性端子,可以使用菜单中的Add element操作。各属性端子的属性定义由Selet Item选择,Selet Item中有所有可能被设置的属性列表。
    如图3—1所示的程序使用了属性在VISA读(Read)操作中设置一个终止符。(一些基于消息的设备当无数据传送时可发送一个特殊的终止符)。该VI打开GPIB仪器的一个session(地址2),然后设置VISA属性。它有3个属性:终止符(TermChar)、终止符允许(TermChar Enable)和超时值(Timeout Valu e)。其中,终止符为一个10进制数(99),超时值为10s。接着,该VI将命令“*IDN?”写入仪器,并要求返回100个字符的数据。如收到终止符(TermChar)读操作就会结束。
                 
4 事件(Events)  
  事件(Events)是设备的源(Resource)与应用程序之间的VISA通信方式。也就是说 ,源以事件(Events)的方式通知设备,告知应用程序所要求活动的一些条件已经出现。
  如图4—1所示为VISA处理GPIB服务请求(SRQ)事件的一个例子。其中,命令(*ESE0x01;SRE0x30;SOUR ;FUNCSIN;*OPC)用于通知指定的波形发生器发出正弦波 ,完成之后将产生一个服务请求SRQ。(注意:每种仪器可能使用不同的命令集,用户有必要查询有关仪器编程参考手册。)该程序执行流程如下:
  1)Open a VISAS ession:打开一个由Resourcename指定的设备。一个VISAsession是一个特定仪器(或引导VISA创建一个指定的VISA class数据结构的事件)的一个信道 。
  2)VISA Enable Event:允许VISA检测事件。
GPIBSRQ的事件类型为x3FFF200B。
  3)VISA Write:向设备发送命令和送出SRQ指令,SRQ的格式与个别仪器有关。
  4)Wait for RQS.vi:等待设备的服务请求SRQ。
如果消息(events)在timeout周期内到达(串行点名),将读取Status Byte并返回 。
  5)VISA Read reads:从仪器读出前面所要求的数据。
  6)VISA Disable Event:禁止VISA从该session检测事件。
  7)VISA Close:关闭已打开的GPIB设备的session。
                 
5 结束语  
  基于VISA标准的仪器驱动器设计,使用户摆脱了繁琐的低层接口命令函数,因此用户只需要使用图形化的人机界面,就可以控制各种复杂的智能仪器。仪器驱动器的VISA编程标准化无论对于仪器生产商,还是对于用户来说都是有益的。


  [参考文献]

 
 
[ 技术前沿搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 关闭窗口 ]

 
 
 
一周资讯排行
图文推荐