安捷伦的仪表是实验室里使用最多的,包括:频谱分析仪,信号源,网络分析仪,信号分析仪。安捷伦本身提供了仪表的二次开发接口,以便计算机对各种仪表进行控制和数据读取,主要是通过计算机向仪表发送SCPI命令,发送命令的接口是虚拟仪器软件结构体系(Virtual Instrument Software Architecture)
利用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结构考虑到了多种仪器类型与网络机制的兼容性,因此以VISA I/O接口软件为基础的虚拟仪器系统,不仅可以与过去已有的仪器系统(如GPIB仪器系统及串行接口仪器系统)结合,也完全可以将仪器系统从过去的集中式结构过渡到分布式结构。VISA的兼容性与互操作性,保证了新一代仪器完全可以加入到虚拟仪器系统中去,同时也保证了仪器系统的投资者不会因为新仪器的出现而将过去的系统抛弃,从而可以不使投资浪费。系统集成时,不必再选择某家特殊的软件和硬件产品,可以根据自己的需要,在所有的VPP产品中作出最佳选择,系统的兼容性与强健性大大增强了,系统的标准化与统一性也找到了最基础的保障。
一个典型的VISA控制频谱仪的代码如下:
#include<visa.h>
#include<stdio.h>
void main () {
ViSessiondefaultRM, vi;
char buf [256] ={0};
/* Open sessionto GPIB device at address 2
viOpenDefaultRM(&defaultRM);
viOpen(defaultRM,
"GPIB0::22::INSTR",VI_NULL,VI_NULL,&vi);
/* Initializedevice */
viPrintf(vi,"*RST\n");
/* Send an *IDN?string to the device */
viPrintf(vi,"*IDN?\n");
/* Read results*/
viScanf(vi,"%t", buf);
/* Print results*/
printf("Instrumentidentification string:
%s\n",buf);
/* Close session*/
viClose(vi);
viClose(defaultRM);}
控制频谱仪时涉及到控制中心频率(CF),带宽(SPAN),扫描点数(SWEEPPOINTS),VBW,RBW,扫描时间(SWEEPTIME),参考电平(REF)等。命令编写如下:
CF |
设置中心频率950.5MHZ |
":FREQ:CENT 950.5 E6\n" |
SPAN |
设置带宽950.5MHZ |
":FREQ:SPAN 950.5 E6\n" |
RBW |
设置RBW3kHZ |
":BWID:RES 3E3 \n" |
VBW |
设置VBW100HZ |
“:BWID:VID 100\n” |
SWTIME |
设置扫描时间100s |
":SWE:TIME 100\n" |
POINTS |
设置扫描点数401 |
":SWE:POIN 401\n" |
REF |
设置参考电平-80dBm |
":DISP:WIND:TRAC:Y:RLEV -80\n" |
SCALE |
设置SCALE5 dBm |
":DISP:WIND:TRAC:Y:PDIV -5\n" |
FREQ |
设置发射频率15GHZ |
":FREQ:FIX 15 GHZ\n |
TP |
设置发射功率10 |
:POW 10DBM\n |