摘 要:介绍基于vxiplug&play和scpi的仪器通信架构,着重阐述了应用编程框架层的各组成部分的特点和功能,并以惠普公司hp33120a函数/任意波形发生器为例介绍了仪器的visual basic串行通信。
关键词:虚拟仪器;串行通信;虚拟仪器软件体系结构;可程控仪器标准命令集;可编程仪器
communication between computer and programmable instruments
xu yalan, cao bairong, liu zhengguo
(e&e institute, shanghai second polytechnic university, shanghai 201209, china)
abstract: the paper introduces an instruments communication architecture based on plug&play and scp. the sub layer design of applicant program is discussed in detail. and an communication between computer and hp function/arbitrary waveform generator is realized.
key words: vi; serial communication; visa; scpi; programmable instruments
本文以串行通信为例,介绍计算机与各类仪器进行通信的软件架构体系;并以rs232串行通信标准,实现了函数/任意波形发生器的vb串行通信。
1基于vxiplug&play和scpi的仪器通信架构
图1是基于vxiplug&play规范的仪器串行通信的体系架构(包括应用软件编程的层次结构)。从下往上,该体系结构分为四层,分别是硬件与硬件接口层、硬件接口驱动层、 应用编程框架层和仪器应用层。其中:硬件与硬件接口层约定仪器和计算机必须支持的通信接口硬件协议,如gpib、rs232和vxi等接口协议。如果计算机要和支持gpib协议的仪器通过gpib协议进行通信,则计算机要插一个支持gpib的硬件卡(控制器);同样,要和支持rs232协议的仪器进行通信,也要求计算机有rs232控制器,事实上几乎所有的计算机都有这样的控制器(com口)。硬件接口驱动层是硬件与软件的桥梁,是用软件实现对硬件接口的驱动和控制。比如,gpib32.dll是在windows系统中支持gpib卡的驱动程序,而window系统中内置了rs232控制器(com口)的驱动程序。
应用编程框架层是vxiplug&play规范实现的主要层次,它通过对仪器应用命令和操作以及i/o进行标准化和规范化,使得仪器应用的开发者能够在不了解仪器的接口实现细节和实现差异的情况下进行仪器应用的开发。该层可细分为四个子层,分别是,visa接口层、标准命令层scpi、仪器驱动程序及函数层。其中,visa与spci层是i/o接口与命令接口层,函数定义与驱动程序构成应用编程接口层。特别要说明的是,应用编程框架层实现了仪器和通信协议对仪器应用编程的透明,也就是说,这一层与通信协议及仪器本身是无关的,这是vxiplug&play规范实现的核心。下面对这一层的各组成部分及特点进行详细描述。
仪器应用层是指用高级语言在应用编程接口层之上构造的应用程序,用来支持对仪器的操作和使用。本文在第2节提供一个简单应用例子。
1.1虚拟仪器软件体系结构
在图1所示的应用编程框架层中,visa接口子层是实现仪器统一编程接口的核心。visa详细规范了虚拟仪器的i/o接口软件的组成、内部结构与实现规则,而符合此规范的虚拟仪器i/o接口函数就是visa库。visa库对于仪器驱动程序开发者来说是一个个可调用的操作函数集,它驻留于计算机系统之中执行仪器的特殊功能,为计算机与仪器提供软件层连接,以实现对仪器的程控。visa同时支持vxi、gpib和rs232串口。由于visa的出现,各仪器应用程序的开发者在进行仪器应用程序的开发时,无须关心具体的通信协议和仪器的实现细节。在windows系统中,visa的实现提供的形式是visa32.dll。
1.2可程控仪器标准命令集
可编程程控仪器标准命令集scpi是为测试测量仪器而设计的一种可读的ascii码仪器命令语言,scpi为各类编程仪器提供了通用的语言和语法规则,它的命令可由包括c,c++,visual basic等任何一种编程语言发出。今天,许多厂商的可编程仪器都支持scpi,这给开发仪器应用程序提供了有力的基础,用户不再需要为开发不同的仪器应用而学习不同的命令和语言。scpi的命令是一种层次结构,即树结构的命令系统,在系统中相关的命令都归类于同一层次的节点下,形成一个个子命令系统。一个子命令系统完成仪器上相应的一组功能,每一种仪器都有一套它可以识别的scpi命令,仪器的测量功能与仪器内部操作都可以通过scpi命令由计算机来实现。由于scpi不用来定义通信的物理方法,也就是说,对仪器及其硬件接口是透明的,因此,它不但可用在基于gpib(ieee488.2)接口的仪器设备中,也可以用在rs232,usb,lan连接以及其他接口的通信中。
从图1可以看出,scpi中的命令可以看作visa函数中要传输的数据。当然,许多厂商提供了基于visa上的sc