0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用VC++语言实现基于通用接口总线GPIB的远程测量系统的设计

电子设计 来源:郭婷 作者:电子设计 2019-05-03 09:17 次阅读

引言

随着数字化的智能化仪器的快速发展,工程上越来越希望将常用仪器设备与计算机连接起来组成一个由计算机控制的智能系统。而工程中常用的仪器设备种类繁多、功能各异、独立性强,一个系统往往需要多台不同类型的仪器协同工作。而基于通用接口总线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仪器等。

采用VC++语言实现基于通用接口总线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命令树如表1所列。

采用VC++语言实现基于通用接口总线GPIB的远程测量系统的设计

命令树图通常由三部分构成:关键字(KEY-WORD)、参数形式(PARAMETER FORM)和注释(NOTES)。其中关键字提供命令的名字,由于SCPI命令基于层次结构,一个实际的命令通常由一个或多个关键字构成,关键字之间用“;”分隔;参数形式用于指明命令的参数个数和顺序,以及它们的合法取值;注释通常命令的询问形式可以由命令形式加上问号构成,但不是所有的命令都有询问形式,注释部分的内容通常用于指示必要的情况。

4 GPIB在功率测量系统中的应用

下面以Agilent E4407功率计的远程测量系统为例来进行说明。为实现计算机对功率计的远程控制,需要通过VC调用GPIB接口控制卡驱动程序接口函数。一般最常用到的函数有ibdev (GPIB接口控制卡初始化设置函数)、ibwrt(写字符串命令函数)和ibrda(读字符串命令函数)。以下是测量程序的部分控制代码,其作用是通过GPIB接口卡对功率计进行初始化,并对功率计进行读写操作。

首先是初始化GPIB卡,以使其具备控制和通信能力;然后初始化仪器,使仪器完成与GPIB的连接,并对仪器进行相关的初始化操作,其代码如下:

int m_iBoardIndex;//GPIB卡号此处为0

int m_iGPIBDev; //GPIB设备

int m_iSecondGPAdd;//GPIB设备第二地址

int m_iGPAddress; //GPIB地址此处设为19

char buf_pow[20];//数据缓存

InitGPIBDev();//初始化函数

{m_iGPIBDev=ibdev(m_ilndex,m_iG-PAdd,m_iSecAdd,Tls,1,0);

//初始化功率计,GPIB接口卡的地址为0、功率计的主地址为19,没有辅地址、超时设置为1S、使用默认传输结束方式。

ibwrt(m_iGPIBDev,“*RST?”);//仪器复位

ibwrt(m_iGPIBDev,“*CLS?”);//清除状态寄存器

ibwrt(m_iGPIBDev,“*SRE 0”);//允许服务请求

ibwrt(m_iGPIBDev,“*ESE 0”);//允许标准事件状态

ibwrt(m_iGPIBDev,“:STAT:PRES”);//预调整状态

ibwrt(m_iGPIBDev,“:FUNC:ON‘POW’”);//显示屏进行显示

}

其次是功率测量与显示。控制仪器完成相应的测量和显示时,首先也应初始化相关变量,其代码如下:

采用VC++语言实现基于通用接口总线GPIB的远程测量系统的设计

采用VC++语言实现基于通用接口总线GPIB的远程测量系统的设计

程序运行后,首先还应对GPIB卡和GPIB仪器进行初始化,并完成与仪器的连接,然后利用远程测量程序向功率计发送测量命令“:MEA-SURE:POW?”进行功率测量,之后再通过ibrda(m_iGPIBDev,buf_pow,20)函数读取功率值并将读取的数据存储在本地开辟的数据缓存中,最后经过本地处理后将测量数据显示在远程测量的显示屏上,从而实现功率计的远程控制和测量功能,其程序界面如图2所示。

5 结束语

在采用VC++语言的编程环境下,利用SCPI仪器控制命令进行GPIB仪器远程测量系统的开发,其程序直观,可读性强,可提高测量效率。此外,利用该方法还可实现对多种GPIB仪器远程测量系统的开发,因而具有广泛的推广和应用价值。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16150

    浏览量

    177208
  • 计算机
    +关注

    关注

    19

    文章

    7389

    浏览量

    87667
  • 总线
    +关注

    关注

    10

    文章

    2863

    浏览量

    87945
收藏 人收藏

    评论

    相关推荐

    C,C++,VC,VC++,MFC,API......

    C,C++,VC,VC++,MFC,API......发现总有人把这些东西搞混,简单解释一下.C,C++都是编程语言,两者是不同的,不要认为C++是C的升级.C是面向过程的,C++是面向对象(封装
    发表于 10-07 11:09

    LabVIEW以及GPIB接口系统组成结构分析

    所示。系统具有以下四个显着特点:    (1)GPIB接口编程方便,减轻了软件设计负担,可使用高级语言编程;  (2)提高了仪器设备的性能指标。利用计算机对带有
    发表于 05-09 08:30

    USB接口小区电话报警平台在VC++下怎么实现

    USB接口小区电话报警平台在VC++下的实现
    发表于 02-25 06:30

    CH365代码用VC++平台的,但CH432里面的参考例程是C语言的,如何转成VC++

    有点小白,CH365代码用VC++平台的,但CH432里面的参考例程是C语言的,如何转成VC++
    发表于 10-10 09:44

    基于GPIB接口总线的虚拟仪器

    本文介绍了虚拟仪器的GPIB 总线接口技术。计算机通过GPIB 接口卡控制带有GPIB
    发表于 08-24 08:48 88次下载

    基于虚拟仪器GPIB接口总线

    在本文中,我们介绍了GPIB总线接口技术。通过GPIB接口板控制,计算机控制的电流源和电压表,两者都GP
    发表于 08-29 09:00 39次下载

    基于VCGPIB的数字示波器远程控制

             以Tektronix 公司生产的TDS6604B 数字存储示波器为例,选用GPIB-LAN 适配器AD007,构成远程控制系统采用
    发表于 09-10 09:48 45次下载

    VC++环境下实现GPIB通讯设计

    本文介绍了一种在VC++环境下编程实现GPIB 通讯控制的设计。在设计中使用了CEC 公司的PCI-GPIB 接口卡,结合其软件库进行编程,
    发表于 01-18 14:13 89次下载

    GPIB接口的FPGA实现

    摘    要:GPIB接口是测试仪器中常用的接口方式。通过将接口设计分解为同步状态机设计和寄存器读写电路设计,采用
    发表于 03-24 13:32 5094次阅读
    <b class='flag-5'>GPIB</b><b class='flag-5'>接口</b>的FPGA<b class='flag-5'>实现</b>

    GPIB接口总线简介及应用

      GPIB(General-Purpose Interface Bus)-通用接口总线   大多数打印机就是通过GPIB线以及
    发表于 07-28 17:18 8549次阅读

    通用接口总线转接PC机串口解决方案

    通用接口总线 GPIB 作为IEEE 组织制定的仪器接口总线标准,用于将各种数字化的自动
    发表于 08-02 17:08 51次下载
    <b class='flag-5'>通用</b><b class='flag-5'>接口</b><b class='flag-5'>总线</b>转接PC机串口解决方案

    什么是gpib_gpib接口

    本内容简单概述了什么是gpibgpib接口gpib总线的相关知识。GPIB可以用作多台仪器通
    发表于 12-21 11:56 4.5w次阅读

    基于VC++的指纹识别系统的设计与实现

    基于VC++的指纹识别系统的设计与实现
    发表于 02-07 18:01 23次下载

    基于GPIB接口总线的虚拟仪器详解

    GPIB通用接口总线是一种设备和计算机连接的总线。大多数台式仪器是通过GPIB线以及
    的头像 发表于 04-24 16:41 1.1w次阅读

    基于VHDL语言实现远程防盗报警设计

    电子发烧友网站提供《基于VHDL语言实现远程防盗报警设计.pdf》资料免费下载
    发表于 11-08 14:33 0次下载
    基于VHDL<b class='flag-5'>语言实现</b><b class='flag-5'>远程</b>防盗报警设计