一种实用的SCPI语法分析设计方法


第 25 卷 第 2 期 2006 年 2 月

国 外 电 子 测 量 技 术 F oreign Elect ronic Measurement T echnolog y

Vo l. 25, N o. 2 F eb. , 2006

研究与设计

一种实用的 SCPI 语法分析设计方法
井 涛 郭永瑞
( 中国电子科技集团公司第 41 研究所 266555)



要: 语法分析模块作为智能测量仪器程控功能的核心, 起着将总线上接收到的信息进行分析、

过滤和转换成仪器内部可识别代码的作用, 在智能仪器软件设计中具有重要地位。模块的性能直接 影响测量仪器程控软件的稳定性、 可靠性、 可扩展性, 以及程控执行效率。针对 SCPI 命令格式, 介 绍一种采用树结构构建数据结构并实现快速、 高效语法分析的通用设计方法, 以提高通用性、 灵活性 和可移植性。利用该方法设计的模块已经在多种智能仪器上得到应用, 验证了方法的可行性。 关键词: SCPI 命令 中图分类号: T P 314 语法分析 模块 命令树

Useful parsing design method of SCPI
Jing T ao Guo Yong rui
( Th e 41st I nsti tu te of CET C 266555)

Abstract: P arsing mo dule has alw ays been the core of progr am ming cont rol in int elligent inst ru m ent s. It col lects t he inf ormat ion on t he buses t hen parsing , f iltering and tr ansf orm ing t hem to in st rum ent 's int ernal codes. It plays a v er y import ant role in t he int elligent inst rum ent so ft w are de sign. T he f unct ionalit y of parsing module can direct ly af fect t he sof t w ar e's st abilit y, reliabilit y, ex pandabilit y and pro gramm ing execut ion eff iciency. Concent rat ing on SCPI com mand f orm at , t his ar ticle int roduced a hig h speed and high eff iciency parsing desig n method based on t ree st ruct ur e to building up dat a. Keywords: SCP I co mmand, parsing, m odule, com mand t ree.

0





器而言, 其在具体命令、 参数等方面仍然存在很大的 差异。针对这种情况, 本文介绍了一种较为实用的 语法分析设计, 利用此方法设计的模块通过提供简 单的接口, 针对不同的仪器使用不同的命令集, 就可 实现不同仪器的语法分析的全部功能, 从而有效缩 短其他仪器的研发时间, 节省软件设计资源。

随着自动测试技术和测量仪器的发展, 智能测 量仪器必须提供相应的对外接口才能满足复杂的测 试任务。在由测量仪器组成的测试系统中, 测量仪 器必然要响应外控机发送来的程控命令, 对这些命 令进行分析, 判断这些命令是否符合该测量仪器的 规范, 对错误命令给出错误提示, 对正确命令进行处 理, 并转换成系统所能识别的代码, 以完成外控机所 要求的操作, 这一过程就是语法分析。因此, 在测量 仪器中, 语法分析是外控机和测量仪器连接的中枢。 SCP I( T he Standard Comm ands f or P rog ram m able Inst rument s) 作为测量仪器程控命令的业界 标准, 虽然有相应的规范, 但对于一种特定的测量仪
作者简介:

1

SCPI 语法介绍
1. 1 SCPI 简介 SCPI 是架构在 IEEE488. 2 上的可程控仪器标

准指令集。整个 SCP I 命令可分为两个部分, 一是 IEEE488. 2 公用命令, 另一部分是 SCP I 仪器特定 控制命令。公用命令是 IEEE488. 2 规定的仪器必 须执行的命令, 其句法与语义均遵循 IEEE488. 2 规



涛( 1970- ) , 女, 1994 年毕业于电子科技大学计算机系, 工程师。主要从事智能测量仪器的软件研发。

2006 年第 2 期



涛 等: 一种实用的 SCPI 语法分析设计方法

43

定。这部分命令与测量无关, 用来控制重设、 自我测 试和状态操作; SCP I 中的仪器特定控制命令是与仪 器相关的, 针对不同的仪器命令也不同。本方案主 要针对仪器特定控制命令而设计。 1. 2 SCPI 命令格式 SCP I 命令格式为树状层次结构, 可分为多个子 系统, 每个子系统由一个根命令和一个或数个层次 命令构成。 命令格式为: 关键 字< 参数> : 关键字< 参数 > : < 参数> , < 参数> 例 如: CA LCulate < cnum > : CORRect ion: 缺省否? int L ast Cmd: 1; / / 最后命令节点否? int par ent ; / / 父指针 } COMM ANDNODE; 参数节点结构: struct { short Com mandCode: 12; / / 命令编码 int Query: 1; / / 是否查询命令? int Overlap: 1; / / 命令允许交叠? } P ARAM NODE; 按照这种思路, 将语法分析过程分为创建树过 程和遍历树过程。创建树过程就是把特定仪器的命 令集, 按照一定的结构创建成供查询使用的命令树; 遍历树过程就是根据得到的命令, 通过遍历命令树, 得到命令的相关信息。对于智能仪器来说主要使用 的就是遍历树过程, 它直接影响仪器的程控效率。 命令树创建 在这个阶段要求的输入就是包含仪器所需的所 有 SCPI 命令的一个文本文件, 输出就是一棵按规 则创建的命令树。 创建过程分为词法分析和语法分析两个阶段: ( 1) 词法分析阶段: 从文件中读入文本, 输出关 键字段编码和分割符及参数信息。关键字段是进行 2. 1 语法分析的基本符号。 ( 2) 语法分析阶段: 根据词法分析阶段输入的 编码和参数等信息, 输出一棵完整的命令树。 语法分析的步骤: ( 1) 根据词法分析的结果填写节点结构信息。 ( 2) 遍历树, 将节点插入命令树中, 同时填写节 点信息结构的父指针、 兄弟指针, 将子指针清空。 ( 3) 重复 1) 和 2) , 直至文件读完。 创建树过程的软件流程如图 2 所示: 图 1 命令存放示意图

EDEL ay : T IM E < num> 命令 其中: CAL Culat e、 CORRect in、 EDEL ay 、 IME T 是关键字 < cnum> : 关键字所带参数, 此处指通道号 < num > : 命令所带参数, 此处指电延迟时间 含义: 对仪器的指定通道< cnum> , 设置电延 迟时间, 其值为< num> 。

2

设计方法
语法分析过程的实质是编译系统的执行过程,

设计就基于编译系统的实现过程进行。 典型编译系统的实现过程可划分成 5 个阶段: 词法分析、 语法分析、 中间代码生成、 优化和目标代 码生成。 事实上并非所有编译程序都要 分成这 5 个 阶 段。在某些情况下, 为了加快编译速度, 有些编译程 序是在语法分析的同时产生指令代码的。智能测量 仪器为了缩短程控命令的响应时间, 提高执行效率, 也采用在语法分析的同时产生命令码, 因此把整个 编译过程称为语法分析。 根据 SCPI 命令 的树状层次结构特点, 综 合考 虑到通用性以及易实现、 易升级、 查询便利、 内存资 源利用等因素, 本方案采用树型结构来保存命令信 息。其示意图如图 1 所示。 树中的每一个节 点, 不 是直接保 存关键字 信 息, 而是采用编码的方式, 加快遍历速度。每一个节 点有兄弟指针、 父指针、 孩子指针等等信息, 利用这 些信息可以方便地实现向下遍历和回溯。 由于命令的关键字和参数包含了不同的信息, 所以数据结构也不同: 关键字节点结构: st ruct { int CmdDefault: 1;

/ / 命令 可

44

















第 25 卷

找命令树当前层( 或者根) 与之匹配的信息, 有匹配 信息时, 记录当前位置以备回溯到父级, 继续下一节 点的查询; 无匹配信息时, 需要查询其兄弟节点或回 溯至父级继续查询, 若符合条件的节点查询完毕都 没有匹配的信息则出错, 语法分析过程结束。循环 上述过程, 直至到最后一个节点, 得到一个仪器可以 识别并能够执行的命令码和参数, 语法分析过程结 束。同时提交命令码供系统执行相应的功能。

3

结束语
对采用 SCPI 规范的可程控智能测量 仪器, 不

图 2 创建树语法分析流程图 命令树遍历 遍历树的过程, 粗略的可分为自上而下和自下 而上两种方法。 自下而上分析法: 就是从命令树的末端开始, 步 步向上 归约 , 直到根。 自上而下分析法: 其过程与自下而上过程恰好 2. 2 相反, 从根出发, 自上而下对输入串中的关键字进行 匹配直至树的末端或者无匹配为止。这种分析过程 本质上是一种试探过程, 是反复使用不同产生方式 谋求匹配输入串的过程。 自下而上和自上而下的分析法, 各有优点, 此处 因为系统的输入比较确定, 所以采用自上而下的分 析法。 其过程也分为词法分析和语法分析两个阶段: 词法分析阶段根据输入的命令, 得到每一个关键字 的编码和参数等信息。语法分析阶段, 根据编码查

同类型的仪器所采纳的实际命令参数、 数量以及具 体命令形式存在一定的差别, 但均可以通过上述方 法来设计语法分析模块, 从而针对不同测量仪器自 动生成相应的数据结构并实现高效、 快速的语法分 析、 错误定位以及合法命令的编码过程, 方便后续的 命令执行和处理。 目前按照上述方法设计的语法分析模块已经在 若干种智能测量仪器中得到了应用, 实践证明模块 具有高可靠性和较高的执行效率。 参考文献
[ 1 ] Standard Commands fo r Pr og rammable Instruments M anual. 1990. [ 2] 袁 俭 . AN SI/ IEEE488. 2 标准文本 [ M ] . 成都: 电子 科技 大学出版社, 1993. [ 3 ] 高仲仪, 金茂忠. 编译原理及编译程序构造[ M ] . 北京: 北京 航空航天大学出版社, 1996. [ 4 ] 严蔚 敏, 吴伟 民. 数 据结 构 [ M ] . 北 京: 清 华大 学 出版 社, 1996.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

FSH 新增 WCDMA 码域功率测量选件
R& S 为 FSH 新增了 WCDMA 基站码域功率 测量选件 F SH- K4, 该选件大大增强了 F SH 在基站 测试领域的功能。 FSH K4 可以根据 3GP P FDD 规范, 测量基站 的码域功率。该选件可以测量信道总功率以及其中 几 个 最 重 要 的 信 道 功 率, 包 括 公 共 导 频 信 道 CP ICH 、 主公共控制物理信道 P CCPCH 、 主同步信 道 P SCH , 以及辅助同步信道 S SCH , 同时还可以 显示载波频率误差。 另 外, F SH K4 还 可 以 测 量 CPICH 和 P CCP CH 信道的 EVM ( 矢量误差) , 虽 然 T S25. 141 规范中没有要求这项测试, 但是这些指标可以反映 信号的整体质量。 F SH- K4 支持自动参考电平调整, 可以很方便 地设置最优参考电平。当基站具有两个天线时( 天 线分集) , 可以选择 FSH 和其中的任意一个天线同 步。 F SH 是一台射频性能卓越的手持式频谱仪, 其 频率可以到 3GH z 或者 6GH z, 它可以用于天馈线 测试及基站测试, 还可以用于干扰查找。F SH 是世 界上第一台用 Smit h 圆图显示反射矢量的幅度和相 位的手持式频谱 仪, 而 F SH- K3 则给 FSH 提供了 一种用于无线频率监测和 EM C 预测试的测试接收 机模式。 ( R& S 公司 供稿)


相关文档

SCPI语法与结构分析
SCPI语法与结构分析1
食品研究常用的试验设计与数据分析方法
连接器设计常用公差分析方法的介绍
桥梁抗震设计实用建模方法比较分析
第六章常用试验设计及分析方法
常用试验设计分析方法模板
常用实验设计方案类型与分析方法
编译原理课程设计---基于LL(1)方法的语法分析程序
单层平面索网幕墙结构的风振响应分析及实用抗风设计方法
电脑版