您好,欢迎访问三七文档
虚拟仪器系统I/O接口软件——VISA................2VISA操作表...........................................................5读资源....................................................................8写资源..................................................................39VISA资源定义.....................................................45VISA应用实例.....................................................74续..........................................................................84虚拟仪器系统I/O接口软件——VISAVISA是虚拟仪器系统的I/O接口软件,为虚拟仪器系统的统一性和扩展性奠定了基础。本章介绍了VISA的概念和特点,论述了VISA的结构模型,重点分析了VISA资源与资源类的定义与描述,并结合实例,详细讨论了各资源的属性、事件与操作规范与软件实现。在本章结束,还讨论了VISA的实际设计思路与方法。3.1VISA的概念与特点3.1.1VISA的由来随着虚拟仪器系统的出现与发展,I/O接口软件作为虚拟仪器系统软件结构中承上启下的一层,其模型化与标准化越来越重要。I/O接口软件驻留于虚拟仪器系统的系统管理器——计算机系统中,是实现计算机系统与仪器之间命令与数据传输的桥梁和纽带。许多仪器生产厂家在推出硬件接口电路的同时,也纷纷推出了不同结构的I/O接口软件,有的只针对某类仪器(如NI公司用于控制GPIB仪器的NI-488及用于控制VXI仪器的NI-VXI),有的在向统一化的方向靠拢(如HP公司的SICL—标准仪器控制语言),这些都是在仪器生产厂家内部通用的、优秀的I/O接口软件。一般的I/O接口软件的结构都采用了自顶向下的设计模型:首先列出该I/O接口软件需要控制的所有仪器类型,然后列出了各类仪器的所有控制功能,最后将各类仪器控制功能中相同的操作功能尽可能地以统一的形式进行合并,并将统一的功能函数称为核心功能函数(如将GPIB仪器的读/写与RS232串行仪器的读/写统一为一个核心功能函数)。所有统一形式的核心函数与其它无法合并的、与仪器类型相关的操作功能函数一起构成了自顶向下的I/O接口软件,实现不同类型的仪器的互操作性与兼容性。然而,这种构成方法只适用于消息基器件的互操作性(如消息读、消息写、软件触发、状态获取、异步事件处理等功能),对于如中断处理、内存映射、接口配置、硬件触发等属于器件特有的操作,根本无法得到统一的核心函数,消息基器件与寄存器基器件无法在自顶向下的I/O接口软件中得到统一。核心函数集在整个I/O接口软件中只有一个小子集,特定操作函数集是一个大子集。自顶向下结构的I/O接口软件实质上是建立在仪器类型层的叠加,并没有真正实现接口软件的统一性。同时应该说,自顶向下的设计方法为真正统一的I/O接口软件的设计与实现提供了经验借鉴与尝试。VPP联盟在考察了多个I/O接口软件之后,提出了一种自底向上的I/O接口软件模型,也就是VISA。3.1.2VISA模型结构VISA是虚拟仪器软件结构(VirtualInstrumentSoftwareArchitecture)的缩写,实质是一个I/O接口软件及其规范的总称。一般情况下,将这个I/O接口软件称为VISA。如上所说,VISA的构成是采用了自底向上的结构。与自顶向下的方法不同的是,VISA的实现首先定义了管理所有资源的资源(在这儿,资源的概念相当于面向对象程序设计中的对象,具体的定义与描述见下节),这个资源称为VISA资源管理器,它用于管理、控制与分配VISA资源的操作功能。各种操作功能主要包括:1、资源寻址;2、资源创建与删除;3、资源属性的读取与修改;4、操作激活;5、事件报告;6、并行与存取控制;7、缺省值设置。第二步是在资源管理器基础上,列出了各种仪器各自的操作功能,并实现操作功能的合并。在这个基础上实现的资源实质可以包括不同格式的操作,如读资源包括了消息基器件的读,也包括了寄存器基器件的读;既可以包括同步读操作,又可以包括异步读操作。每一个资源内部,实质是各种操作的集合。这种资源在VISA中即为仪器控制资源,包含各种仪器操作的资源称为通用资源,而将无法合并的功能,称为特定仪器资源。第三步,需要定义与创建一个用API实现的资源,为用户提供单一的控制所有VISA仪器控制资源的方法,在VISA中称为仪器控制资源组织器。与自顶向下的构成方式相比,VISA的构成模型是从仪器操作本身开始的,它实现的统一是深入到操作功能中去而不是停留于仪器类型之上。在VISA的结构中,仪器类型的区别体现到统一格式的资源中的操作的选取,对于VISA使用者来说,形式上与用法上是单一的。在理论层次上,自顶向下的方法属于归纳范畴,而自底向上的方法则属于演绎范畴。因此,自顶向下是对过去所有仪器类型的总结,而不可能提供扩展接口,而自底向上的结构是从共性到个性的推广,它的兼容性不仅仅是过去、现在,还可以包括将来。正由于这种自底向上的设计方法,VISA为虚拟仪器系统软件结构提供了一个共同的、统一的基础,来自于不同供应厂家的不同的仪器软件,可以运行于同一平台之上了。VISA的结构模型如图3.1所示。图3.1VISA结构模型概图VISA结构模型自下往上,构成一个金字塔结构,最底层为资源管理器,其上为I/O级资源、仪器级资源与用户自定义资源集。其中,用户自定义资源集的定义,在VISA规范中并没有规定,它是VISA的可变层,实现了VISA的可扩展性与灵活性,而在金字塔顶的用户层应用,是用户利用VISA资源实现的应用程序,其本身并不属于VISA资源。3.1.3VISA的特点基于自底向上结构模型的VISA创造了一个统一形式的I/O控制函数集,它是所有现存的I/O接口软件的功能超集,在形式上与其它I/O接口软件十分相似。一方面,对于初学者或是简单任务的设计者来说,VISA提供了简单易用的控制函数集,在应用形式上相当简单。另一方面,对于复杂系统的组建者来说,VISA提供了非常强大的仪器控制功能与资源管理功能,能提供仪器间的互操作性与兼容性。它是易用性、可扩展性、互操作性、兼容性的完全统一体。与其它现存的I/O接口软件相比,VISA具有以下几个特点:1、VISA的I/O控制功能适用于各种仪器类型,VISA包含了VXI仪器、GPIB仪器、RS232串行接口仪器等各类仪器的控制操作,也包含了消息基器件、寄存器基器件、存贮器件等仪器的操作,其形式上是统一的。2、VISA的I/O控制功能适用于各种仪器硬件接口类型,以VXI仪器系统为例,无论采用嵌入式计算机结构、GPIB接口外挂式结构、MXI接口外挂式结构,还是采用IEEE1394接口外挂式结构,对于VXI仪器的操作函数是一样的。同样,无论VXI仪器在系统中的逻辑地址是多少,仪器操作函数也是一样的。3、VISA的I/O控制功能适用于单处理器系统结构,也适用于多处理器结构或分布式网络结构。4、VISA的I/O控制功能适用于多种网络机制,无论虚拟仪器系统网络构成为VXI多机箱扩展网络还是以太网,仪器操作是一致的。5、VISA的I/O软件库的源代码是唯一的,其与操作系统及编程语言无关,只是提供了不同形式的API文件作为系统的引出。由于VISA结构考虑到了多种仪器类型与网络机制的兼容性,因此以VISAI/O接口软件为基础的虚拟仪器系统,不仅可以与过去已有的仪器系统(如GPIB仪器系统及串行接口仪器系统)结合,也完全可以将仪器系统从过去的集中式结构过渡到分布式结构。VISA的兼容性与互操作性,保证了新一代仪器完全可以加入到虚拟仪器系统中去,同时也保证了仪器系统的投资者不会因为新仪器的出现而将过去的系统抛弃,从而可以不使投资浪费。系统集成时,不必再选择某家特殊的软件和硬件产品,可以根据自己的需要,在所有的VPP产品中作出最佳选择,系统的兼容性与强健性大大增强了,系统的标准化与统一性也找到了最基础的保障。VISA操作表操作表:1、VISA资源模板:viClose(vi):关闭特定的对话通道。viGetAttribute(vi,attribute,attrState):获取资源属性状态值。viSetAttribute(vi,attribute,attrState):设置资源属性状态值。viStatusDesc(vi,status,desc):获取返回状态描述字符串。viTerminate(vi,degree,jobId):请求VISA资源终止一个或所有对话通道的正常运行。viLock(vi,lockType,timeout,requestId,accessKey):设置资源存取模式。viUnlock(vi):取消资源存取模式。viEnableEvent(vi,eventType,mechanism,context):允许特定事件通知。viDisableEvent(vi,eventType,mechanism):不允许特定事件通知。viDiscardEvents(vi,eventType,mechanism):刷新一个对话通道上事件发生。viWaitOnEvent(vi,ineventTypeList,timeout,outEventType,outContext):等待特定事件的发生。viInstallHandler(vi,eventType,handler,userHandle):安装回调事件句柄。viUnInstallHandler(vi,eventType,handler,userHandle):卸载回调事件句柄。2、VISA资源管理器:viOpenDefaultRM(sesn):打开缺省资源管理器资源对话通道。viOpen(sesn,rsrcname,accessMode,timeout,vi):打开特定资源的对话通道。viFindRsrc(sesn,expr,findList,retcnt,instrDesc):查询VISA系统进行资源定位。viFindNext(findList,instrDesc):返回前一个查询操作查得的资源。3、仪器控制管理:viRead(vi,buf,count,retCount):从器件同步读取数据。viReadAsync(vi,buf,count,jobId):从器件异步读取数据。viWrite(vi,buf,count,retCount):将数据同步写入到器件中。viWriteAsync(vi,buf,count,jobId):将数据异步写入到器件中。viAssertTrigger(vi,protocol):用特定协议确认硬件或软件触发。viReadSTB(vi,status):读取服务请求状态字节。viClear(vi):清除器件。viSetBuf(vi,mask,size):设置格式化I/O缓冲区大小。viFlush(vi,mask):手动刷新格式化I/O缓冲区。viPrintf(vi,writeFmt,arg1,arg2…):按设定格式将数据传送到器件中。viVPrintf(vi,writeFmt,params):按设定格式将数据传送到器件中。viScanf(vi,readFmt,arg1,arg2…):按设定格式从器件中读取数据。viVScanf(vi,readFmt,params):按设定格式从器件中读取数据。viQuery(vi,writeFmt,readFmt,arg1,arg2…):按设定格式对器件进行数据读写。viVQuery(vi,writeFmt,readFmt,params):按设定格式对器件进行数据读写。vi
本文标题:VISA汇总编程
链接地址:https://www.777doc.com/doc-1085237 .html