元器件:计算机与可编程仪器的串行通信

来源:互联网 发布:mac dare you黄皮 编辑:程序博客网 时间:2024/04/27 16:13

  摘 要:介绍基于VXIplug&play和SCPI的虚拟仪器;串行通信;虚拟仪器软件体系结构;可程控仪器标准命令集;可编程仪器
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和RS232串口。由于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上的SCPI实现,如Agilent公司的I-SCPI。这样把VISA与SCPI集成在一起,在具体仪器驱动程序实现时就可以直接调用支持SCPI的接口。有的厂商并不提供独立的基于VISA的SPCI接口,而是在具体仪器驱动程序中实现二者的合并,也就是说,驱动程序提供的接口函数就是用VISA提供的I/O函数来传送SCPI命令。
1.3仪器驱动程序
  仪器驱动程序是基于VISA之上针对具体仪器的编程接口。不同类型的仪器实现的功能是不一样的,如果用户直接在VISA上编程,则可能调用的操作是仪器不支持的。另外,不同仪器的工作过程都是不一样的,VISA不能反应出这些差别。因此,针对不同的仪器,必须在VISA库和SPCI命令集之上建立仪器驱动程序,向用户提供封装好的编程接口。仪器驱动程序就是对某一特定仪器进行控制和通信的操作函数集,它可以通过调用VISA库,来实现对仪器的控制和管理,因此它是连接上层应用程序与底层I/O接口软件的纽带和桥梁。对于应用程序来说,它对仪器的操作是通过仪器驱动程序来实现的。在后面的例子中,我们提到的HP公司的函数发生器HP33120A的驱动程序就是hp33120a32.dll。
1.4函数定义
  
确切地说,函数定义不是一个子层,它只是驱动程序接口的一个具体语言表现。它是针对具体的编程语言而提供的一些函数定义,使得用户可以用各种高级语言来实现仪器的应用程序。它与仪器驱动程序构成了仪器的编程接口。HP33120A的驱动程序hp33120a32.dll的C语言接口定义是hp33120a.h和hp33120a.c,而针对VB的定义是hp33120a.bas。
2HP33120A函数/任意波形发生器的VB串行通信
  本节以HP33120A为例,通过VB来实现计算机与仪器的RS232串行通信,远程操作该仪器。
  HP33120A是一款高性能的15MHz合成函数发生器,它可以产生正弦波、方波、三角波、斜波等十种标准波形以及各种调制波、直流电压和任意波形。它配有标准的GPIB和RS-232接口,来实现和计算机的通信。为该仪器提供了基于win95,winNT的仪器驱动程序,可以帮助实现在Visual C、Visual BASIC、Borland C++、HP VEE、HP Test Exec SL、HP BASIC、Lab Windows环境下的编程,支持GPIB和RS232端口。而Visual Basic编程语言提供直观友好的人机操作界面、丰富的数据分析与处理功能,因此,选用它作为用户编程语言。该驱动程序要求系统提供32位VISA I/O库,使用可编程仪器的标准命令集SCPI进行编程控制。
  图2是该软件的调用结构,可以看作图1的一个应用实例。
HP33120A驱动程序提供的函数可分为四组:
  (1)高级控制函数组:用多重SCPI命令为HP33120A相关参数的设置提供一个简单的方法
  (2)低级控制函数组:SCPI命令映射函数(包括波形和波形参数设置等)
  (3)系统函数组:一组实现仪器重置、自测和错误检查的函数
  (4)状态函数组:实现仪器询问功能的函数
  利用这四组函数,就可以通过编程实现对HP33120A的串行通信控制。例如,打开仪器串行通信端口可以通过下述语句实现
 
3结论
  由于采用串口进行通信需要的设备简单,技术也相对完善,将带有RS-232总线接口的仪器作为I/O接口设备,通过RS-232串口总线与PC计算机组成虚拟仪器系统,目前也是虚拟仪器的构成方式之一。实现计算机与仪器系统通信是实现仪器互操作、仪器应用集成的基础,具有非常现实的意义。本文的研究给仪器应用开发者和虚拟仪器研究环境的搭建者提供了很好的实践基础。

参考文献

[1]杨乐平,鲁焰荣.HP33120A函数/任意波发生器的计算机控制[J].仪器仪表学报,1998,(4).