Agilent U2751A USB Modular Switch Matrix
U2751A USB模拟开关矩阵为自动化测试提供了一个高质量、低消耗的开关解决方案。可作为一个单独的元件也可作为U2781A USB的模块单元。
U2751A 是一个紧凑的4*8矩阵,两线的模拟矩阵开关,它可以通过USB接口在Agilent Measurement Manager软件上进行远程控制。也可以用支持的驱动或SCPI命令编程。
一、使用U2751A
要开始使用U2751A,需要按如下步骤进行安装和配置,必须要按照下面的步骤安装,否则会出错。(注意:如果要用Microsoft visual studio等要安装IVI-COM)
A、现在一般的电脑配置(win7系统)都能满足要求。
B、安装IO Libraries Suite 14.2或以上版本,目前到17版了,可以在官网上下载并安装。安装完之后,会在电脑下方出现。
C、只要把U2751A连在电脑上就会自动安装驱动。
D、在官网上有两种版本的,如果你的电脑之前安装过Agilent T&M Toolkit就选择without prerequistes版本。否则,就要安装另外一个with版本。只有正确安装才能运行,不然打开软件时会提示软件没有全安装。
E、USB插入电脑
F、Start > All Programs > Agilent IO Libraries Suite > Agilent Connection Expert,也可以直接右键IO图标选择Connection Expert,可以看到自动扫描除了U2751A,点击右侧的Send Commands To This Instrument,在弹出的框里,点击Send &Read发送*IDN?命令,如果在下方显示出返回的内容信息,表明电脑跟module连接正常,并能通信。
G、打开AMM软件之前必须打开运行IO Libraries Suite,否则打开失败。通过Start > All Programs > Agilent > Modular Products > Agilent Measurement Manager或者桌面上的图标打开AMM。然后会出现连接的硬件
点击OK,就可以进入控制界面
想连通某个点就点击某个点,就会变绿
二、U2751A编程
SCPI命令(Standard Commands for Programmable Instruments),是一种ASCII仪器命令语言,主要用于测试和测量仪器。SCPI字符串发送到仪器时必须以
U2751A中的常用SCPI命令如下:
1、IEEE-488.2 Common Commands通用的命令
以“*”开头,如
*IDN? 返回仪器的说明,包括厂家,仪器number,序列号,firmware revision
Eg:*IDN? //Typical Response:
KEYSIGHT TECHNOLOGIES,U2751A,MY12345678,V1.00-1.00-1.00
*RST 复位
*CLS 清空寄存器和错误序列
*ESE
Eg:*ESE 32 打开错误命令寄存器
*OPC 如果前面的命令都执行完了就会返回1到输出缓存中
Eg:ROUT:CLOS (@101); *OPC
2、DIAGnostic Subsystem中的命令
DIAGnostic:RELay:CYCLes? (@
Eg:DIAG:REL:CYCL? (@101,104,103) //返回 10000,100,10
DIAGnostic:RELay:CYCLes:CLEar (@
Eg:DIAG:REL:CYCL:CLE (@101)
3、ROUTe Subsystem中的命令
ROUTe:CLOSe (@
Eg:
ROUT:CLOS (@101) //连通第1行第1列的点
ROUT:CLOS (@101,303,405)//连通不同行的几个点
ROUT:CLOS (@201:203) //连通同一行的201,202,203几个点
ROUT:CLOS (@106:303) //连通106到303中间的所有点
ROUT:CLOS (@101,201:203,303)
ROUT:CLOS (@101:108,205:308)
ROUTe:CLOSe? (@
Eg:
ROUT:CLOS? (@101) //Typical Response: 1,101是连通的
ROUT:CLOS? (@101,105,207,304) //Typical Response: 1,1,1,0
ROUT:CLOS? (@108:203,307:404) //Typical Response: 1,1,1,0,0,1,1,0,1,1
ROUTe:OPEN (@
ROUT:OPEN (@106:303) //断开106到303中间的点
ROUT:OPEN (@101,201:203,303)
ROUTe:OPEN? (@
ROUT:OPEN? (@101) //Typical Response: 1,101是断开的
ROUT:OPEN? (@101,205,307,404) //Typical Response: 1,1,1,0
ROUT:OPEN? (@108:203,307:404) //Typical Response: 1,1,1,0,0,1,1,0,1,1
ROUT:OPEN (@101); CLOS (@102) 等价于ROUT:OPEN (@101)和ROUT:CLOS (@102)两条指令,只有属于一个子系统的才能这样写//断开第1行第1列的点,连通第1行第2列的点
ROUT:CLOS (@101);: DIAG:REL:CYCL:CLE (@101) //如果两个指令不属于同一个子系统,中间要用“:”连接
4、SYSTem Subsystem中的命令
SYSTem:CDEScription? U2751A单独用的话返回+7,+0,如果作为另一个仪器的模块返回Slot number和chassis number
Eg:
SYST:CDES? //Typical Response: +7, +0,独立使用时
SYST:CDES? //Typical Response: +2, +5,作为U2781A的模块时
SYSTem:ERRor? 返回错误的信息的数字代号和仪器错误序列中的消息字符串,先存储的先读出来(FIFO),系统中最多保存20个错误,超过后出现–350, “Queue overflow”.如果没有错误产生,返回的是0, “No error”,*RST 命令不能清空错误序列,*CLS 才能清空错误序列
Eg:SYST:ERR? //Typical Response: –330, “Self-test failed”
SYSTem:VERSion? 返回仪器中使用的SCPI的版本
Eg:SYSTem:VERSion? //Typical Response: 1997.0,(年.版本)
三、错误消息
如果调试中看到这些错误消息,就可以直接定位错误的地方,减少找Bug的时间。
Command errors
Execution errors
Device-specific errors
Query errors
Instrument errors
Self-test errors
四、我自己在VS2010上写了一个程序,确定能运行,注意要把visa.h、visa32.lib和visatype.h三个文件添加到工程中。
#include "visa.h"
#include
using namespace std;
void main()
{
ViSession rm;
ViSession u2751;
ViStatus st;
//打开总的资源管理器,初始化资源管理器
viOpenDefaultRM(&rm);
//打开指定的USB接口控制的开关矩阵
st=viOpen(rm, "USB0::0x0957::0x3D18::MY51380004::0::INSTR", VI_NULL, VI_NULL, &u2751); //在IO Suite中可以查看USB的visa名称
if(st==0)
{
//这里定义的SCPI语言是必须以\n结尾的
viClear(u2751);
viPrintf(u2751,"*RST\n");//复位
viPrintf(u2751,"*CLS\n"); //清空
viPrintf(u2751,"ROUTe:CLOSe (@301,107)\n");//连通301和107
cout<<"301和107连通"<
上面程序①②③处的效果依次为下面三个图。(在程序中设置断点,然后在AMM软件中刷新显示,即可看到每一次连接之后的效果图)