编程控制仪器进行自动化测试Visa驱动GPIB驱动
目录
编程控制仪器进行自动化测试(Visa驱动、GPIB驱动)
本文将会介绍如何通过编程的方法来控制仪器,并进行自动测试
- 编程控制仪器,下面简称 [“程控”][3] ;
- 博主经常使用的是 安捷伦 、 罗德与施瓦茨 两大厂家的仪器;
- 经常程控的仪器有信号源、频谱仪、示波器、网络信号分析仪、衰减器、电源等支持程控的设备;
程控必备基础
学习程控仪器,就必须得了解一些相关的基础知识。 (曾经有群友向我请教关于程控的问题,几乎将我问到奔溃)
1. SCPI指令集
可编程仪器标准命令,定义了一套用于控制可编程测试测量仪器的标准语法和命令。命令主要分为Set(控制)和Query(查询)两种。
2. GPIB
通用接口总线是一种设备和计算机连接的总线。大多数台式仪器是通过GPIB线以及GPIB接口与电脑相连,系统中最多不能超过15台仪器。
如果是台式机或者笔记本作为主控机,需要买一个USB转GPIB的线。
3. Visa
Virtual instrument software architecture,虚拟仪器软件结构。可以使用网线连接仪器,通过网络地址来程控仪器,也可以通过GPIB线,使用端口程控仪器。
关于visa的详细内容参见wiki:
4. 编程基本功底
基础功底是必备的,如果如何写程序都不会?肿么写程控软件?肿么写驱动程序?好比一个人,如果不会加减乘除法,却又不愿意使用计算器,却非要执拗的去做算数题,这样能有结果?欲速则不达啊。
编写程控软件的步骤:
- 确定编程语言。
- 明确手动控制仪器的流程,需要控制的仪器参数。
- 查找仪器命令手册(一般从仪器官网可以下载到命令手册,),查找出对应参数的控制命令。
- 安装GPIB或者Visa驱动( 非常重要 )。
- 调用驱动,编写自动测试流程( 实现你的测试流程,做你想做的事儿 )。
如果是安捷伦的设备,一般可以采用 Agilent IO软件来测试命令,也可以使用NI的NI MAX工具。
GPIB和Visa我都使用过,个人比较偏爱于使用Visa,Visa相对于GPIB,封装的层次更高,更便于程序员理解和使用。
编写程控软件,界面框架可以采用Qt、Winform、LabView、C++builder等,几乎没有限制。
GPIB编程范例:
回公司了再copy一段代码示例。
Visa编程范例:
某电源的初始化函数
BOOL CXXXDlg::InitPower()
{
char chStatusDesc[_MAX_DIR] = {0};
int retCnt=0;
char instrDesc[100]={0};
ViFindList find_list;
float voltSetting, currSetting;
voltSetting = atof(ini_powervolt);
currSetting = atof(ini_powercurrent);
VISAstatus=viOpenDefaultRM(&defrm);
if (VISAstatus != VI_SUCCESS)
{
return FALSE;
}
VISAstatus = viFindRsrc(defrm,"GPIB?*INSTR",&find_list,(ViPUInt32)&retCnt, instrDesc);
VISAstatus=viOpen(defrm,instrDesc, VI_NULL, VI_NULL, &session);
if (VISAstatus!=VI_SUCCESS)
{
return FALSE;
}
//Set voltage
viPrintf(session,"VOLT %f \n",voltSetting);
//Set current level
viPrintf(session,"CURR %f \n",currSetting);
return TRUE;
}
关于仪器控制,可以前往NI的官网:
NI提供的程控工具:VISA Interactive Control(可以去官网下载,NI的工具是收费的)
在测试测量领域,NI做的非常强大,感兴趣的朋友可以去NI的官网获取更多的知识。