基于VC的GPIB仪器远程测量 系统实现方法
0 引言
随着数字化的智能化仪器的快速发展,工程上越来越希望将常用仪器设备与计算机连接起来组成一个由计算机控制的智能系统。而工程中常用的仪器设备种类繁多、功能各异、独立性强,一个系统往往需要多台不同类型的仪器协同工作。而基于通用接口总线GPIB则可以把各种可编程仪器与计算机紧密地联系起来,使电子测量由独立的、传统的单台仪器向大规模自动测试系统的方向发展。本文提出了一种在VC++6.0编程环境中利用SCPI对基于GPIB接口的仪器进行远程测量的实现方法。
1 GPIB接口总线
GPIB主要是为台式测量仪器(或装置)组成自动测量系统而设计的。GPIB仪器系统主要利用GPIB接口卡将若干GPIB仪器连接起来,每个设备(包括计算机接口卡)必须有一个0~30之间的GPIB地址。一般GPIB接口卡设置为地址0,仪器的GPIB地址则从1到30。GPIB有一个控者(电脑)来控制总线。在总线上传送仪器命令和数据,控者寻址一个讲者以及一个或多个听者。数据串在总线上从讲者向听者传送。
GPIB系统的连接方式可以是线型、星型或者混合拓扑型。一般情况下,GPIB电缆的连接器都具有特殊的构造,它都允许多个连接器堆叠连接在一起。对GPIB总线系统连接的基本配置要求主要有两个:
第一种配置,其两个设备之间的最大距离为4米,整个电缆的长度不得超过20米(第一个器件与最后一个器件之间的距离);
在第二种配置下,GPIB母线上最多可挂15个器件,这主要是受TTL接口收发器驱动能力限制。当测试系统有必要使用多于15个器件时,只需在控制器上再添置一个GPIB接口,这样可多拉一个母线,再多挂14个器件。该总线的最大数据传输速率为1 MB/s,在20米总线上,最高可工作于500 KB/s。
2 系统组成
基于VC++的GPIB仪器远程测量系统组成如图1所示。该系统主要包括计算机、GPIB电缆、USB-GPIB控制器、GPIB仪器等。
系统的主要优势表现在以下几个方面:
(1)编程方便,可使用高级语言编程;
(2)提高仪器设备的性能指标。可利用计算机对带有GPIB接口的仪器实现操作和控制,以实现各种自动标准、多次测量平均等功能,从而提高测量精度;
(3)便于将多台带有GPIB接口的仪器组合起来,以形成较大的远程测量系统,从而高效、灵活地完成各种不同的测试任务;
(4)便于扩展传统仪器的功能。由于仪器与计算机相联,因此可在计算机的控制下对测试数据进行更加灵活和方便的传输、处理、综合利用和显示,从而使原来仪器采用硬件逻辑很难解决的问题迎刃而解。
3 系统软件
本系统选用了可视化的Visual C++通用编程工具来开发测试软件,该工具的主要特点为易学易用、开发高效率开发功能强大等。开发人员能在VC++环境下利用上述特点并使用Windows内部的应用程序接口(API)函数、动态链接库(DLL)、对象的链接与嵌入(OLE)以及开放式数据库连接(ODBC)等技术,来快速、方便地开发出图形界面丰富、功能强大且工作于Windows平台下的应用软件系统。
与仪器进行通信的格式实际上有两种:一种为基于寄存器的通信格式,另一种为基于消息的通信格式。此处的GPIB系统程序设计语言为可编程仪器的标准命令SCPI(Standard Commands for Programmable Instruments),其通信格式属于后者。
3.1 SCPI的仪器控制命令
SCPI可编程仪器标准命令是一种用来控制仪器的命令语言。它可用一种标准方式来描述各种各样的仪器功能,其中规定了在控制器到仪器和仪器到控制器之间的信息交换层消息的构造和内容,因而使各类不同的仪器更容易被理解和使用。同时SCPI是一种“活”的标准,可以满足新仪器和新技术的需要。SCPI命令可分为仪器公用命令和仪器特定控制命令两个部分。SCPI把IEEE488.2要求仪器必须执行的公用命令作为SCPI仪器公用命令,这些公用命令用于控制仪器的某些基本功能操作,其句法和语义遵循IEEE488.2规定。仪器特定控制命令是指每个程控仪器完成自身命令操作的特定命令。采用SCPI编程有以下几方面优点:
(1)SCPI是一个独立于硬件的纯粹软件标准,SCPI字符串可以通过任何仪器接口发送,无论是GPIB、RS-232、VXIbus、还是局域网,都没有问题;
(2)SCPI允许用相同的代码来控制许多不同的仪器,而且语法简单有力,方便易学。因此,在掌握了一种仪器的命令集之后,就很容易掌握其他仪器的命令集。这些命令集有很多的相似性,这种相似性体现在两个层面:其一是在垂直层面上,同一类型的仪器命令集比较相似;其二是在水平层面上,不同类型仪器之间的同种功能的SCPI命令也一致;
(3) SCPI的独特设计使得它可以不断扩展而不会引起过多问题。随着新型仪器的出现,新的命令集会不断加入SCPI;
(4)SCPI的语句以ASCⅡ文本的方式存在,因此,可以加入到任何计算机测试编程语言之中,如BASIC、C或C++;也可以用于如LabWin-dows/CVI、LabVIEW或者Agilent VEE这样的专用测试程序开发环境。
3.2 SCPI命令树图
命令树图用于定义SCPI的命令集,它描述了命令、命令之间的层次关系、相关的参数以及必要的注释,SCPI命令树如表l所列。
- 通用示波器自动测试系统(12-01)
- LXI 测试系统中IEEE 1588 的应用(02-27)
- 建立使用PXI、VXI和LXI的混合型测试系统(02-27)
- 使用LXI加强汽车电子测试 (02-27)
- 基于GPIB总线的RIGOL示波器通信测试系统设计(03-03)
- 基于虚拟仪器技术的航空机载电子设备自动测试系统(03-03)