射频一致性测试仪中SCPI模块的设计实现

2014-12-23 01:28张冠杰张治中
计算机工程与设计 2014年2期
关键词:缓冲区命令仪表

张冠杰,程 方,张治中

(重庆邮电大学 通信网与测试技术重点实验室,重庆400065)

0 引 言

采用终端射频一致性测试仪进行测试是终端生产时的重要环节,它除了可以验证终端的射频指标是否符合测试协议外,还能对终端射频特性相关的硬件指标进行校准。随着生产效率需求的提高,对射频一致性仪表在自动化测试及程控标准化方面都提出了更高的要求[1]。

SCPI是一种传统的通用仪器控制命令标准,规范了由不同厂商生产的不同型号、相同类型仪器的远程命令的格式。SCPI命令适用的对象是正在测试的信号,这种与仪表平台无关的特点使其具有了良好的跨平台特性[2],而特殊的树形命令结构也使其具备一定的扩展性,测试人员可根据功能需求对命令集进行扩充。随着仪器仪表技术与自动化测试技术的结合和发展,SCPI技术也被引入到射频一致性测试仪表中,使其具备了可自动化控制以及软件控制标准化的特点[3]。

SCPI解析模块是远程控制功能的核心,仪表在接收到SCPI命令后不能识别这条命令,这就需要SCPI模块的支持,它将GPIB (general-purpose interface bus)接口传递过来的上位机发送的SCPI命令解析成仪表控制核心可以识别的信息[4]。

传统SCPI模块将解析命令的操作写死在代码中,造成了SCPI命令集在更新时必须修改模块代码,这就为仪器仪表的开发和维护带来了不便。本文提出了SCPI命令集数据库和SCPI命令集缓冲区的方法,SCPI命令集数据库用于存储所有SCPI命令节点信息,而缓冲区能够在仪表启动时将所有数据库信息载入内存,解析器将上位机发来的命令和缓冲区中的节点进行遍历比对得出解析结果。这种设计不但方便维护人员对命令集的维护,同时保证了解析时的运行效率。

1 射频仪表远程控制系统描述

1.1 远程控制系统结构

常见的仪表远程控制系统由4个部分组成,包括上位机、GPIB接口卡、SCPI模块以及仪表控制核心[6]。其中上位机参与远程控制流程的运行和管理;GPIB接口负责命令数据和测试结果的接收与转发;SCPI模块用于SCPI命令的解析;而仪表控制核心负责射频仪表的运行。结构如图1所示。

图1 射频一致性仪表的远程控制结构

1.2 系统工作流程

一次完整的系统测试流程包含GPIB连接建立,测试环境配置,测试例执行,GPIB连接释放,工作流程如图2所示。流程中使用SCPI命令进行的操作都需要SCPI模块的解析。

图2 系统工作流程

GPIB连接建立。该连接建立发生在上位机与GPIB接口之间,上位机通过实例化连接对象来建立一条GPIB连接通路,该连接对象中包含GPIB卡号信息和GPIB地址信息。连接建立后,GPIB模块将连接状态置为True,防止重复连接。

测试环境配置。GPIB 连接建立后,上位机通过GPIB接口向射频一致性仪表发送环境配置命令,用来设置小区功率,工作信道,功率控制等级以及仪表的频率线损表等。

测试例执行。测试例以脚本的形式顺序执行,包含测试项的运行和测试数据的上报。

GPIB连接释放。上位机在测试脚本执行完成后释放该GPIB实体连接,GPIB模块将连接状态置为False。至此完成一次完整的系统测试。

2 SCPI命令语法格式

SCPI是一种可编程仪表的标准命令集[7],它定义了一套上位机与测试仪器通讯时的命令格式。SCPI命令从用途上分为两种,SCPI通用命令和仪表专用SCPI命令。SCPI通用命令由IEEE488.2标准制定,它实现远程控制功能的一般操作,命令以 ‘*’开始且只有一层结构,每条指令完成特定的功能。通用命令集见表1。

表1 SCPI通用命令集

仪表专用SCPI命令为树形分层结构,层与层间用 ‘:’分隔,最底层命令节点与命令参数间使用空格分隔,参数之间采用 ‘,’分隔,而完整的SCPI命令之间用 ‘;’分隔。命令格式为:

子系统名称:节点名<命令体参数>:子节点名<命令体参数><命令参数1>,<命令参数2>… …;

一套完整的仪表专用SCPI命令由多种命令树组成,以笔者所研究的仪表为例,大致分为6类命令树,每种命令树代表一类功能,见表2。

3 SCPI模块详细设计

传统的解析模块采用单独的SCPI解析器实现,所有比对数据和解析处理写死在解析器中,为开发人员对命令集的维护和扩展工作带来了不便。

改进后的SCPI模块在SCPI解析器的基础上,增加了SCPI命令集数据库、SCPI命令集缓冲区以及解析结果缓冲区的设计。各子模块及关系图,如图3所示。

表2 子系统分类

图3 SCPI模块架构

3.1 SCPI命令集数据库具体设计

SCPI命令集数据库主要负责在本地文件中存储所能支持的所有SCPI命令信息。在SCPI命令更新时,开发人员只需对SCPI命令集数据库做简单的升级,不需要更改解析器中的代码。信息结构以树形结构存储,每个树节点都代表了一条SCPI命令信息,这些信息具体包括:

SCPI命令在整个命令集树状结构中的位置信息,包括命令字符串 (全写和简写)、父节点信息、子节点 (集)信息,以及默认子节点 (如果存在);

SCPI命令的模式信息 (是否可设置、是否可查询);

SCPI命令的处理函数信息,包括函数名和输入参数;

关于该SCPI命令信息的备注。

我们采用xml格式文件存储命令集。使用xml方式存储命令集有以下优点:分离SCPI命令集内容管理和命令解析流程管理,便于对远程控制功能的开发和维护;规范统一,任何系统和产品所支持的xml文档,都具有统一的格式和语法,这样就使得数据库具有了跨平台的特性;可扩展性,根据射频一致性仪表的功能需要,可方便地扩展SCPI命令集命令,无需复杂的传统数据库操作。以基本的查询和设置命令为例,代码如下:

该段XML代码中,描述了两条命令,具体见表3。

表3 对SCPI命令节点的解释

3.2 SCPI命令集数据库缓冲区

SCPI命令集数据库缓冲区在初始化时,从SCPI命令集数据库中读取所有SCPI节点的信息,并存储在内存中,便于在使用时快速查找,保证解析时的效率。该缓冲区模块功能由以下3个类实现。

SCPI命令类,存储单条SCPI命令的全部信息,同时提供两种操作:创建SCPI命令实例,其各项属性均从当前节点继承而来;SCPI命令子节点添加操作,向节点中添加一个子节点。SCPI命令的存储结构如下:

SCPI命令集合类,该类实现对多个SCPI命令信息的存储,同时提供两种操作:在节点集合中根据子系统名称查找节点;在节点集合中根据子系统字符串数组查找叶子节点。

SCPI解析结果类,用于存储一条经过SCPI模块处理的解析结果,它包含8 个成员变量:命令模式 (配置/查询)、查询命令的参数个数、设置命令的参数个数、SCPI命令示例字符串、处理函数名称字符串、原始输入的SCPI命令字符串、是否是查询命令、SCPI 命令携带的参数数组。

3.3 解析结果缓存区设计

该缓冲区按照时间顺序存储SCPI命令解析结果,这些结果被仪表控制核心调用。缓冲区的工作方式遵循先进先出的原则,即最先进入缓冲区的解析结果最先被仪表控制核心调用,缓冲区的设计可以保证解析模块的运行效率不受仪表控制核心的影响。

3.4 SCPI解析器设计

3.4.1 SCPI解析器主要功能

SCPI解析器是SCPI模块的核心,它提供将SCPI命令集数据库加载到SCPI命令集数据库缓冲区内的API;解析SCPI命令字符串,从SCPI命令集数据库缓存中查找对应的叶子节点信息;根据叶子节点信息构造解析结果,将该结果推入解析结果缓冲区内。

3.4.2 SCPI解析器解析流程

解析流程分为:预处理流程,分类流程,字符串解析流程,比对流程和解析结果填充流程。如图4所示。

图4 SCPI命令解析流程

预处理流程。模块采集到的数据可能包含多条SCPI命令,所以首先对数据进行命令分割操作,根据 ‘;’来判别一条完整的SCPI命令,预判命令的合法性,去除命令中的非法字符,并按字符串先后顺序将这些命令存储。

分类流程。对上一流程中存储的SCPI命令分类。首先调用函数判断当前处理是SCPI通用命令还是仪表专用SCPI命令,如果为仪表专用SCPI命令,它的命令子系统分为CONFig,SENSe,FETCh,ERRor,SYSTem,INSTrument,我们根据命令所属的命令子系统分别调用各自的处理函数进入字符串解析流程;如果为SCPI通用命令,则直接进入比对流程。

字符串解析流程。首先根据字符串末尾的 ‘?’标识判断该字符串为设置命令还是查询命令,该信息将存储在解析结果中;其次对字符串中的命令体参数和命令参数进行提取保存;然后按照 ‘:’对命令节点和子节点进行分割存储。

比对流程。根据上一步中分割得到的节点字符串在SCPI命令集缓冲区中找到相应的节点,将解析结果中命令模式和参数个数与节点存储的信息进行比对,如果比对结果正确则进入解析结果填充流程。

解析结果填充流程。把一条完整的命令解析结果封装为一个类对象,并按顺序推入解析结果缓冲区,至此完成单条SCPI命令的解析,等待仪表控制核心的调用。

4 实验与分析

该模块经过实验室环境多次测试验证并已应用与实际以表中。实验室测试平台的搭建需要多种设备的配合。

4.1 测试平台搭建

测试平台包含如下设备,上位机、终端、射频一致性测试仪、电源。其中上位机与测试仪以及上位机与电源之间使用GPIB总线连接,用于控制命令的下发和数据的回传;上位机与终端之间采用串口线连接,用于AT 指令和数据的传输;终端与测试仪之间采用射频线连接,用于传输射频信号。具体搭建方法如图5所示。

图5 自动化测试平台搭建

4.2 测试方法

采用脚本测试的方法对SCPI模块进行测试,每个脚本文件对应一个测试项并由多条SCPI命令组成。判断SCPI模块通过测试的标准,除了需要查看脚本运行的结果是否符合预期,也要确认没有无法识别命令的情况出现。

确认各个设备连接后开启电源,运行上位机中的自动化测试软件并加载这些脚本文件开始测试。表4是最近的一次GSM 制式下的测试结果。

表4 GSM 制式下的脚本测试结果

以GSM_PVT 脚本为例,该测试项用于测试发信载频功率相对于时间的关系是否符合协议规定。其运行时的结果如图6所示,从图中可以看出,运行该脚本时仪表能够正确进入测试项并获得测试结果。

图6 时间模板测试项测试界面

5 结束语

本文对射频一致性仪表远程控制系统进行研究,分析了SCPI命令格式,提出了SCPI解析模块的改进设计方案。该方案在不影响测试效率的情况下,通过增加SCPI命令集数据库的设计完善了射频一致性仪表的维护功能特性,同时SCPI命令集缓冲区的设计又能保证解析运行效率,对其它仪表的SCPI模块设计具有一定的指导意义。

目前,本设计方案已经应用于某测试仪表中,实践结果表明,该方案具有较好的稳定性和执行效率。

[1]CHEN Yanfen,YANG Jingchang,ZHANG Jitao.The design of SCPI parser module between PC and remote control instruments[J].Control and Automation Publication Group,2009,25 (1):143-144 (in Chinese). [陈艳芬,杨景常,张吉涛.PC机远程控制仪器的SCPI解析模块设计 [J].微计算机信息,2009,25 (1):143-144.]

[2]LI Bo,ZHAO Jian,SHI Yujuan,et al.Research and realization of SCPI command interpreter based on Linux system [J].Computer Measurement &Control,2008,16 (7):1007-1010(in Chinese).[李博,赵建,时玉娟,等.基于Linux的SCPI命令解释器的研究与实现 [J].计算机测量与控制,2008,16(7):1007-1010.]

[3]WANG Linlin,ZHANG Qin,XU Jingjiu,et al.Automatic test system for lower power mount calibration based on virtual instrument technique [J].Journal of Astronautic Metrology and Measurement,2013,33 (3):44-47 (in Chinese).[王林林,张琴,徐靖玖,等.基于虚拟仪器技术的小功率自动测试系统 [J].宇航计测技术,2013,33 (3):44-47.]

[4]QIN Fan,WEI Gao.Instrument program-controlled measurement based on VISA and SCPI[J].Modern Electronics Technique,2011,34 (11):118-120 (in Chinese).[秦凡,韦高.基于VISA 库及SCPI命令的仪器程控测量 [J].现代电子技术,2011,34 (11):118-120.]

[5]LI Wei,ZHU Wei.The design and realization of SCPI parser module [J].Science & Technology Information,2011,11(3):44-47 (in Chinese).[李伟,朱伟.SCPI命令解析器模块设计与实现 [J].科技信息,2011,11 (3):44-47.]

[6]GAO Yudong,XIAO Tiejun,WANG Gang,et al.The design of remote test System base on GPIB interface[J].Control and Automation Publication Group,2008,24 (10):234-236 (in Chinese).[髙玉栋,肖铁军,王刚,等.基于GPIB接口的远程测试系统的设计 [J].微计算机信息,2008,24 (10):234-236.]

[7]WANG Xuewei,XIANG Yan,CHEN Xiaorong.The research and realization of data acquisition module SCPI interpreter[J].Electrical Measurement & Instrumentation,2008,45 (1):30-34 (in Chinese).[王学伟,相艳,陈小荣.数据采集模块SCPI解释器的研究与实现 [J].电测与仪表,2008,45 (1):30-34.]

[8]ZHU Zhengwei,ZHAO Huihui,SHEN Lin.The Application of Structure Arrays and Files in the SCPI Parsing System[C]//ICICTA,2010.

[9]GU Daquan,WANG Xiao,WANG Yang.Multi-point data measurement system based on VISA and SCPI[J].Instrumentation Technology,2011,40 (1):1-2 (in Chinese). [顾大权,王晓,汪洋.基于VISA 和SCPI的多点数据测量系统[J].仪表技术,2011,40 (1):1-2.]

[10]YU Hongyu,LI Zhi,LIU Chang.Research and implementation of SCPI interpreter for function/arbitrary waveform generator[J].Foreign Electronic Measurement Technology,2009,28 (4):70-73 (in Chinese). [于红雨,李智,刘畅.函数/任意波形发生器SCPI解释器设计与实现 [J].国外电子测量技术,2009,28 (4):70-73.]

猜你喜欢
缓冲区命令仪表
◆ 仪表
只听主人的命令
仪表
移防命令下达后
基于网络聚类与自适应概率的数据库缓冲区替换*
嫩江重要省界缓冲区水质单因子评价法研究
奔驰E260车行驶过程中仪表灯熄灭
这是人民的命令
关键链技术缓冲区的确定方法研究
Microchip推出全新零漂移仪表放大器