第10卷 第3期
2012年6月
信 息 与 电 子 工 程
INFORMATION AND ELECTRONIC ENGINEERING
VO1.10,NO.3
Jun.,2012
文章编号:1672—2892(2012)03-0377—05
SCPI命令解释器的实现
韦荣昌,赖小红
~~一u ~一黼y _~一呈 二~一l._三詈 一~_枷一 _她~一罢 ~一.m 一~ ~嘞一脚三.
(电子科技大学自动化T程学院,四川成都611731)
摘 要:可程控仪器命令标准(SCPI)目前被广泛应用于测试测量仪器的操作控制中。针对数字
示波器的SCPI命令集,研究并设计了一种SCPI命令解释器,此命令解释器通过采用二又树结构
来存储数字示波器的SCP1命令集,并在此基础上通过遍历二叉树来实现SCPI命令的查找过程。
设计的解释器具有命令解析效率高,移植性好等优点,现已应用于数字示波器中,实践证明了此
设计方案是可行的。
关键词:数字示波器;SCPI解释器;命令树;二叉树
中图分类号:TN98;TM932 文献标识码:A
Implementation of Standard C ommands for Programmable
Instruments interpreter
SCPI建立在IEEE488.2基础上,目前在各种程控测试测量仪器中得到了广泛应用。但是,由于仪器硬件并
不能直接理解控制器发出的SCPI命令,因此需要依靠SCPI命令解释器才能完成要求的操作。数字示波器是组
建自动测试系统的关键仪器之一,为数字示波器设计SCPI命令解释器有助于将其应用于大型自动测试系统,同
时也能够增强其互换性和兼容性…。
l SCPI命令语法简介
1.1 SCPI概述
20世纪7O年代,自动测试系统最重
要的进展是IEEE488.1标准的制订,它的
出现极大地推动了自动测试系统的发
展。IEEE488.1主要规定了仪器在电气、
Fig.1 SCPI program—controlled equipment model
机械和功能方面相容性的要求,但在软
图I SCPI程控仪器模型
件方面并没有统一的标准。之后IEEE488.2在IEEE488.1基础上使程控仪器器件消息的数据编码与格式、命令功
能元素与编码句法、消息交换控制等方面实现了标准化,但它只定义了程控仪器的少数公用命令语义,用于仪器
内部基本操作控制,却未解决器件消息标准化的问题。因此,建立在IEEE488.2基础上的SCPI应运而生。
收稿日期:2011-06—20:修回日期:2011.08.29
378 信息与电子工程 第10卷
SCPI主要侧重于解决仪器程控和响应中器件消息的标准化问题,其定义了各种可编程仪器的控制命令格式
以及语法,是目前重要的仪器程控命令标准之一 。SCPI采用树形分层结构的命令集,提出了一个具有普遍性
的通用仪器模型,仪器模型体现了SCPI仪器功能逻辑和分类,如图1所示。
1.2 SCPI语法格式
根据SCPI 99标准,整个SCPI命令分为IEEE488.2公用命令和SCPI仪器特定控制命令2种不同类型。
公用命令就是IEEE488.2规定的仪器必须执行(或称必备的)的命令,它们的句法和语义都遵循IEEE488.2的
规定,以“ ’开头,它与测量无关,用于控制仪器的某些基本功能操作,其语法格式如下【3】:
1)命令格式:星号+关键字;
2)询问格式:星号+关键字+问号。
SCPI仪器特定控制命令以“:”开头,有命令(Command)和询问(Query)2种格式,主要用来从事测量、读取
数据以及切换开关等,包括所有测量函数及一些特殊的功能函数。询问命令是一类特殊类型的命令,主要用于指
示仪器产生响应数据,通过询问来获取仪器的设置或状态。具体命令格式如下[3】:
1)命令格式:冒号+关键字+空格+参数+空格+单位;
21询问格式:冒号+关键字+问号。
按照以上命令结构格式,以下都是有效的命令:
RST //公用命令
*IDN? //公用命令,询问格式
:CONFigure:VOLTage:DC 10V //带参数的特定命令
:MEASure:VOLTage:AMPLitude? //询问命令
1.3 SCPI命令的使用方式
SCPI命令既可以单条命令使用,也可以将不同命令连接,组成一个命令字符串,命令的连接方式如下:
1)以“;”连接公用命令和仪器特定命令;
2)以“;”作分割符,后面紧跟“:”,连接不同层次的仪器特定命令,后一命令的首节点必须是根结点,表
示从命令树的最高层重新开始命令;
3)以“;”分割同一子系统命令下的同一层次的特定命令。
通过仪器总线传输SCPI命令字符串,仪器在收到命令字符串后,交给SCPI命令解释器解释执行。
2 SCPI命令解释器的设计
SCPI命令解释器的主要功能是对用户输入的命令进行解析,将使用SCPI命令编写的程控命令翻译成仪器可
以识别的代码,功能示意如图2所示。
scPI c。mmrdDd sⅡing—
竺兰_J l scPI commands parsing :! +scPI commands'c。de a1ld parameters which call be
!!!:竺 l processed by bseq m funn 叩
Fig.2 Diagram of the function of SCPI interpreter
图2 SCPI解释器功能示意图
根据SCPI命令语法格式和数字示波器SCPI命令子集的特点l4】,本设计采用链式二叉树结构一一孩子兄弟表
示法,存储数字示波器的SCPI命令子集的节点信息;采用数组存放命令子集的参数语法信息(包括参数类型等),
数组长度为命令个数。通过遍历二又树来实现命令的查找过程,最后提交命令内码和参数,供系统执行相应的操
作。因此SCPI命令解释器的设计工作主要包括2个部分:a)建立内置命令存储结构;b)编写查找分析程序。
2.1命令树的创建
创建命令树的过程,就是把数字示波器的SCPI命令集按照一定的结构,创建成供查询使用的命令树。这个
阶段要求实现:输入的是包含数字示波器所有的SCPI命令关键字的1个格式化文本文件,输出的是1棵按规则
创建的命令树【5】。
SCPI命令格式为树状层次结构,具有多个子系统,每个子系统又具有多个子命令。因此创建数字示波器命
令树,首先要了解数字示波器的SCPI命令集,根据小学数学故事 示波器要实现的功能,选定相关的命令子系统(包括10个命
令子系统:CONFigure,FETch/READ/MEASure,CALCulate,FORMat,INPUt,SENSe,STATus,SYSTem,TRACeIDATA,
第3期 韦荣昌等:SCPI命令解释器的实现 379
CONFig ̄e—— — [:voltage]
TRIGger),根据选定的命令子系统建立数字示波器的SCPI命令集_6j。
每一个命令子系统都是一棵多叉树,都是分层树形结构,图3为
CONFigure的树形结构(图中箭头指示了命令结点间的层次关系)。
SCPI命令树是多棵多又树的结构形式。创建SCPI命令树,常见
的方法是将命令树直接存储为多叉树结构,结点包含了父指针、兄弟
指针和孩子指针,这样的存储比较混乱,对实现命令树的存储、删除、
插入和遍历都比较麻烦。将多又树转化为二叉树形式是实现树的持久
存储和计算的常用方法,二叉树的存储结构主要有2种,即链式结构和顺序结构。顺序结构仅适用于满二叉树。
链式结构虽不能任淘宝店铺导航 意访问某一结点的双亲,但对于已知结点孩子的查找十分方便,并且易于扩展树的空间、添加
Fig.3 CONFigure command tree
图3 CONFigure命令子系统多叉树结构图
和删减命令,十分利于SCPI命令的查询遍历、命令集的移植以及扩展。因此本设计采用链式二叉树结构一一孩
子兄弟表示法来创建SCPI命令树。将每一个命令子系统构建为一棵二叉树,公用命令则是一棵只有根结点的二
叉树;将每一个子系统根结点及公用命令结点作为命令树右链结点,左链为各个子系统下的孩子结点,合并构成
一
棵完整的SCPI命令树。构建后的CONFigure命令子系统二叉树如图4所示:
Fig.4 Binary tree of CONFigure command
图4 CONFigure命令子系统二叉树结构图
每个命令结点的结构[ 为:
结点类型定义:
typedef struct btreenode
{
TreeData data; //结点数据
struct btreenode LC; //左指针
struct btreenode RC; //右指针
}bnode;
结点中数据部分类型定义:
typedef struct
{
char cmdname[40]; //命令关键字
e d e
//命令关键字缩写形式 char cmdname2[40];
//命令内码 int code; 古代爱国诗
int iparatype; //参数类型
int idefault; //缺省节点标记
)TreeData;
因为数字示波器的SCPI命令集是已选定的,构建命令树时,
如果采用手动一个一个地输人命令关键字等信息,既耗时又易出
错。因此创建一个包含数字示波器所有SCPI命令关键字等信息
的文本文件,采用一边扫描文本,一边创建命令树的方法,效率
要高很多。列举文本片段如下:(第1个“/”后面的数字代表内
码;第2个“/”后面的数字代表参数类型;“r代表有别名;@
代表默认结点。1
:CONFigure/100I/1
一五一的由来
:VOLTagetVOLTagel@/1100/1
:DC@/1 1 10/1
一一
一
:AC/1 120/1
————
:FREQuency/1 1 30/1 Fig.5 Flow chart of command tree
图5创建命令树流程图
380 信息与电子工程 第10卷
一一
:PERiod/1 140/1
:PHASe/1 150/1
一一
创建命令树的过程:从文本文件中读取关键字和命令编码等信息,遍历树,填人相应的命令结点信息(包括
关键字及其编码),输出一棵链式二叉树结构的完整的SCPI命令树,创建命令树的流程图如图5所示。
2.2命令查找 .
命令查找的过程就是根据用户输入的SCPI命令,遍历命令树,得到命令的内码和参数信息,通过进行字符
串比较,在同一层次中由前到后,对命令树结点遍历来完成的。
具体的查找过程如下:对用户输入的SCPI命令字符串,按空格分离关键字和参数,并把参数和单位保存到
一
个参数表中;取第1个关键字,从命令树右链开始查找,若不匹配,则在此结点的右分支(同一等级)下查找;
若匹配,则在此结点的左分支进行下一等级结点的查找,直至最后1个关键字的查找结束;完全匹配后,判断参
数信息,最后保存参数。完成上述查找过程后,得到仪器可以识别并且能够执行的命令内码和参数,最后提交命
令内码和参数,供系统执行相应的操作。
当结点查找首次出现不匹配时,查看当前结点是否有缺省结点,如果有,则把缺省结点作为当前结点,继续
进行结点的查找;如果没有缺省结点,则给错误报告信息,并结束本次查找过程。
例如输入1条SCPI命令:“:CONFigure:VOLTage:AC 10”,首先分离关键字和参数,同时把参数和单位保存
到1个参数当兵政策 表中。参考图4 CONFigure命令子系统二叉树结构图,查看查找的具体过程:取第1个关键字:
:CONFigure”,从命令树的右链开始查找,若找到与之匹配的字符串,则取下一等级关键字:“:VOLTage”,
在:CONFigure的左链查找,依次直至最后1个关键字“:AC”的查找结束,完全匹配后,判断参数信息,最后保
存参数,返回命令内码和参数,本次查找结束。
2.3 SCPI命令解释器的验证
“
设计验证程序,验证SCPI命令解释器的正确性。创建一个格式化文本文档,包含要验证的SCPI命令字符
串,验证过程通过一边扫描文本中的命令字符串,一边对命令字符串进行解析来实现。验证程序实现的功能:对
于输入的正确的SCPI命令字符串,解释器能够正确解析,给出仪器可识别的命令内码和参数等信息,同时显示
其输出并提交系统执行相应的操作,实现解析SCPI命令的功能;如果输入错误的SCPI命令,如格式、符号或
者参数等出错,给出相应错误的状态报告。
3 结论
数字示波器在现代测量控制领域的应用十分广泛 J。为增强数字示波器SCPI命令集的可移植性和通用性,
设计一种扩展性良好的命令集存储结构和实现高性能命令解析的SCPI命令解释器是十分重要的。本文设计和实
现了数字示波器的SCPI命令解释器,对数字示波器的SCPI命令进行判断和查询,完成了数字示波器的控制和
测量。对于其他仪器模块只需要修改SCPI命令关键字等信息的格式化文本,即可得到不同的内置命令树,这种
方法设计的SCPI命令解释器不仅命令树结构清晰,而且具有较好的可扩展性和可移植性,具有一定的通用性,
对于其他仪器模块的SCPI命令集解释器的设计,也具有很好的参考意义。
参考文献:
[1] 王浩,王子斌.一种2 Gsps数字示波器数据采集系统的设计….信息与电子工程,2009,7(4):257—260.(WANG Hao,
WANG Zibin.Design of a 2 Gsps digital oscilloscope data acquisition system[J].Information and Electronic Engineeri燕赵老年报数字报 ng,
2009,7(4):257—260.)
【2] 陈长龄,田书林,师奕兵,等.自动测试及接口技术[M】.北京:机械T业 版社,2005.(CHEN Changling,TIAN Shulin,
SHI Yibing,et a1.Automated T插入批注快捷键 est System&Interface Technology[M].Beijing:China Machine Press,2005.)
[3] IEEE488.2.Standard Commands for Programmable Instruments(SCPI)[S].USA:IEEE,1999.
[4] Agilent Technologies Inc.Agilent InfiniiVision 6000 Series Oscilloscopes programmer’s Guide[Z].USA:Agilent Technologies
Ine.,2008.
[5] 井涛,郭永瑞.一种实用的SCPI语法分析设计方法[J].国外电子测量技术,2006,25(2):42—44.(JING Tao,GUO Yongrui .
Useful parsing design method of SCPI[J].Foreign Electronic Measurement Technology,2006,25(2):42—44.)
本文发布于:2023-04-25 06:01:43,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/82/513428.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |