文献标识码: A
文章编号: 0258-7998(2014)04-0088-04
在现代自动测试行业中,大量采用可程控仪器来搭建测试系统。早期的不同程控仪器采用不同的程控语言导致程控仪器与计算机之间的接口语言非标准化,使得如何控制每一台仪器成为了第一要务,一体化测试系统难以短期搭建。因此,建立在IEEE 488.2规范基础上的SCPI (Standard Commands for Programmable Instruments) 应运而生。SCPI确定了计算机与程控仪器之间接口语言标准化,缩短自动测试仪器的开发时间,并提高了集成系统的效率。目前SCPI应用的领域包括数字万用表、示波器、可控电源、负载等,没有涉及到功率半导体测试行业。
本文在探讨SCPI命令的创建和命令解析器设计的基础上,将其应用到IGBT可靠性测试设备,针对该设备设计符合要求的程控命令以及扩展性好的解析器。该应用下,程控命令由主机通过以太网发送给测试设备,测试设备接收并且对其进行解析,转化为设备可以识别的目标代码,从而完成主机所要求的操作;在设备运行过程中,被测器件(DUT)的所有测试参数也均通过以太网返回给主机,由主机对其分析处理。通过以太网传输SCPI命令及测量数据不仅有效节约了硬件资源,也使整个系统的稳定性能得以提升。
1 SCPI简介
SCPI是测量仪器程控命令的业界标准,定义标准化的SCPI命令只与测试仪器的功能及其性能、精度有关,而与仪器硬件组成、制造厂家、通信物理连接硬件环境和测试程序编写环境等均无关。它是建立在IEEE 488.2标准代码和格式基础之上的,基于ASCII码,依附BASIC、C、C++等编程语言,可以在LabVIEW、MATLAB、Visual Studio、Keil 等环境下使用。由于具有硬件独立性,可以通过任何仪器接口发送,如RS232、GPIB、VXIbus、LAN口等。同时SCPI编程具有横向一致性和纵向一致性。不同测试仪器的相同功能具有相同的命令形式,在横向上使测试仪器兼容;同时使用相同的命令可以控制同一类仪器中的相同功能,使得仪器在纵向上兼容。
2 SCPI语法分析
SCPI命令关键字通常是有意义的英文单词,也称助记符,分长短型两种。短型助记符由长型助记符的前4个字符构成,如CONFigure的短型为CONF。当助记符长度大于4,并且第4个字符为元音时,则取前3个字符表示为短格式,如POWer的短型为POW,而FREE的短型为FREE。
SCPI可以分为两类,一是IEEE 488.2公共命令,另一部分是仪器特定命令。公共命令是IEEE 488.2规定的必须要执行的命令,一般不涉及到具体操作,但是有整体控制功能,如复位、状态和同步,其语法格式为:‘*关键字’或‘*关键字?’。问号表示查询,主要用来获取仪器的设置或状态。常用的公共命令有 *RST、*IDN?、*CLS等。仪器特定命令是与仪器相关的,针对不同的仪器,命令不同。该命令包括关键字和可选的一个或多个参数,格式如下:
<关键字>[:<关键字>[…] <空格> [<参数 1>[, <参数2>[…]]]
其中,冒号(:)用于分离关键字,方括号([])用于包含可选关键字。关键字之后是参数,由空格符隔开,不同参数之间使用逗号(,)进行隔开。仪器命令关键字具有分层结构,其中第一级关键字级别最高,后续的关键字级别较低;仪器特定执行命令通常后带参数,参数类型包括数值型、布尔型、字符型、字符串等。
SCPI命令实际使用时,习惯将命令字符串逐个发送;也可以将多个命令组合成一个命令串发送。SCPI命令组合使用,其具有模块化强、使用更便捷等优势,但针对特定仪器,对命令解析器的设计要求较高。
3 SCPI命令解析器设计
测试仪器接收SCPI命令,能否准确地识别并进行下一步动作关系列测试系统整体性能的好坏,因此SCPI命令解析器的设计至关重要。
3.1 SCPI命令的创建
根据SCPI命令层次结构的特点,可以对命令节点采用顺序结构存储和链式结构存储等。本文针对该半导体测试系统的命令,采用较容易实现的单链表结构来存储命令节点,该结构便于命令节点的存储和扩展。命令节点关键字的存储结构如下:
struct SCPIcmd {
char Keyword[15]; //长型助记符
int ShortNum; //短型助记符字符个数
int CommandType; //命令类型
char ParType; //参数类型
int ParNum; //期望的参数个数
struct StrPar *SzStr; //参数结构体
int (*CmdFunc)(); //执行仪器功能函数
int (*QueFunc)(); //执行查询功能
bool DefNode; //该结点是否为默认节点
struct SCPIcmd *Next; //指针指向下一关键字
};
3.2 SCPI命令的解析
由SCPI命令树形结构的特点可知, IEEE 488.2公共命令的深度为1,不需要进行下一个关键字结点的查找;而仪器特定命令的深度具有不确定性,随着系统逐渐庞大,深度值也会随之增大;如果存在下一级关键字结点,就必须对其进行查找。本文采用单链表算法顺序查找关键字结点,从时间上考虑,处理速度相对较慢,不适合大量数据的操作;但是由于程控仪器的可程控命令关键字结点数有限,并且仪器采用的处理器的速度很快,单链表算法完全可以满足解析器的设计要求。
对于本文解析器的设计,首先从整体上确定SCPI命令的解析过程,规定解析过程中相应的执行函数,然后结合二维数组共同实现解析,该数组中行表示由特殊连接符(冒号、分号等)分解出字符串的不同的首字符,列表示执行函数的标号,数组中存储的亦为将要执行的函数标号。针对公共命令和半导体测试仪器命令,规定的解析过程执行函数如下:
char (*RoutineFunc[9])(int) = {
ErrAlert, //0错误提示
CurCommRoot, //1公共命令关键字赋入口地址
CurDevRoot, //2仪器命令关键字赋入口地址
Common488, //3 公共命令关键字查找
DevCmdSearch, //4 仪器命令关键字查找
CurDevNext, //5仪器命令下一关键字查询
SaveCurNode, //6存储当前结点
Quit, //7退出解析
ErrAlert //8错误提示
};
存储执行函数标号的二维数组如下:
int StateTable[7][6]=
{ /*0 1 2 3 4 5 */
/*STATE *: alpha ; EOM unknown */
/* 0 */ {1, 2, 2, 8, 0, 8},
… … … … … … …
/* 6 */ {1, 2, 2, 0, 0, 8}
};
SCPI命令整体的解析流程如图1所示。解析器收到SCPI命令字符串后,首先判断首字符是否为星号、冒号或者字母,如果不是,提示输入错误;如果是,则结合二维数组,通过初始状态零和首字符判定将要执行的函数(其中首次执行的函数是为命令根节点提供入口地址)。然后存储该函数标号,该标号同时也作为新的状态量提供给下一个关键字查找使用。查找关键字并判断该关键字节点是否存在指向下一关键字的指针,如果存在,保存当前的节点信息并继续查找余下字符串的首字符;如果不存在,则表明关键字查找结束,根据该节点定义的命令类型来执行半导体测试系统相应的功能函数;若该命令为查询类型,则返回状态值;若为功能执行类型,则根据命令有无参数作进一步处理。
本文解析器在功能上进一步加强,使得组合命令能够有效地得到解析。当第一个关键字功能函数执行完毕后继续查找字符,若遇到分号,则表明输入的SCPI命令为组合命令,应存储当前节点并重复该命令关键字查找函数;若遇到结束符,则解析结束,退出解析过程。
4 IGBT可靠性测试中SCPI的应用
IGBT可靠性测试主要是结合IGBT额定的电参数值对其进行失效分析,从而完成对它的评估和筛选。测试方法有多种,本文测试系统兼容两种常用的测试,包括高温反偏测试(HTRB)和高温栅偏测试(HTGB)。
4.1 系统硬件电路设计
如图2所示,测试系统主要由温度控制、测试模式选择、DUT被测参数采集和通信四部分电路构成。温度控制部分为闭环反馈网络,DUT置于高温箱中,根据测试要求控制高温箱温度,通过反馈网络来保持DUT结温恒定。DUT的测试模式由继电器进行控制选择(如图3所示),HTRB模式下短接栅极-发射极,继电器K1、K4、K5闭合,K2、K3打开,根据测试需求由直流电压源向DUT的集电极-发射极两端提供最高3 kV的电压。系统对器件参数VCES和由分流器RSHRB产生的ICES进行测试;为了保证系统支持测试3 kV高压等级的IGBT器件,K1则采用能承受至少3 kV的高压继电器来导通大电压。HTGB模式短接集电极和发射极,继电器K2、K3闭合,K1、K4、K5打开,根据要求向栅极-发射极两端施加最高100 V的电压,K3采用能承受电压最高100 V的继电器即可。该模式下系统对器件参数VGES和RSHGB由分流器产生的IGES进行测试。
由于器件被测参数值VCES、VGES很大,为满足A/D转换器输入要求,将其通过比例缩放电路,缩小到A/D参考电压的范围之内,再对其进行采样以及合理的校正。所有被测参数均对应着不同的测试通道,由选通器决定哪个通道与A/D转换器输入端相连。系统通信部分采用以太网总线替代广泛使用的RS232、GPIB和VXI总线,上位机发送的命令和经过A/D采样得到的数据均通过以太网进行传输。
4.2 系统解析功能测试
通过对测试系统硬件电路及器件参数基本测试过程的分析,制定一系列与该系统相关的程控命令,并使用Keil开发工具编写命令解析程序,使命令转化为设备可以识别的目标代码。文中根据SCPI命令的语法要求创建几条针对该测试系统的基本命令:
(1)显示测试系统信息
<*IDN?>
(2)配置测试模式为HTRB或者HTGB
<CONF:MODE HTRB|HTGB>
(3)配置为高压或者低压测试模式
<CONF:HVPS ON|OFF>
(4)测量门极电流值
<MEAS:GATE:CURR? >
将这些命令进行测试,由主机依次发送,解析器接收并处理,解析结果借助串口打印到超级终端上显示,如图4所示,解析顺序通过执行函数标号显示。
结果表明命令解析器设计成功,测试系统可以准确识别主机发送过来的命令,根据这一命令及时执行相应的中断响应函数,完成主机所要求的操作。解析器中单链表算法与数组的结合使用不仅使解析顺序清晰可见,而且增强解析器的可扩展性。若测试系统接收到的命令为CONF:MODE HTRB,系统继电器K1、K4、K5闭合,K2、K3打开;若命令为MEAS:GATE:VOLT,采样的栅极电压值通过以太网传输到上位机进行实时显示。测试实验充分表明将SCPI命令应用到IGBT测试系统具有可行性。
随着自动测试行业的逐步发展,可程控测试仪器越来越多,本文开拓半导体测试领域,成功实现了SCPI命令在功率半导体可靠性测试系统中的应用,使得仪器操作更便捷,测试效率更高。应用中命令解析器的设计完全适用于该系统,并且具有很好的可读性与扩展性;同时该应用还成功采用以太网总线进行通信,充分利用以太网的高性能及成本低廉的优势,实现SCPI命令远程控制测试仪器,也为多台可程控半导体测试仪器组网奠定了坚实的基础。
参考文献
[1] SCPI Consortium. Standard commands for programmable in struments[EB/OL]. http://www.scpiconsortium.org.
[2] 赖小红,钟秀蓉. SCPI命令解释程序设计在数据结构教学中的应用[J].实验科学与技术,2011,9(5):250-252.
[3] 邓闯,明灵. 使用SCPI语言实现计算机与设备仪器通讯[J]. 集成电路通讯, 2010,28(1):36-39.
[4] 井涛,郭永瑞. 一种实用的SCPI语法分析设计方法[J].国外电子测量技术, 2006,25(2):42-44.
[5] 石雪松. SCPI语言在自动测试系统中的应用[J].宇航计测技术,1997,17(2):62-64.
[6] 张岐宁,王晓宝. IGBT模块的测试[J]. 电力电子技术,2005,39(1):112-114.
[7] 王正元,由宇义珍, 宋高升. IGBT技术的发展历史和最新进展[J]. 电力电子技术, 2004(5):7-12.
[8] 严蔚敏,吴伟民. 数据结构[M]. 北京:清华大学出版社,1996.