SCPI语言解析器的设计与实现

    摘要:SCPI(Standard Commands for Programmable Instrument)语言是一种用于可编程仪表的标准命令集,它定义了通过控制器和仪器通讯时使用的程控代码规则。如何正确地将SCPI语句解析为仪表内的操作和寄存器访问,是仪表接口设计中具有挑战性的工作之一。本文提出并实现了一种两级解析模型,即将SCPI语句的解析分为词法和语义分析两级。词法分析专注于关键字的提取并将其映射为内部代码,语义分析则专注于语义解释。该设计方法充分利用了SCPI语句的树形结构特点,并以费思科技科技有限公司的电子负载FT6600为例,实现了一套简洁、高速的SCPI语言解析器。

    Abstract: SCPI, Standard Commands for Programmable Instrument, defines the rules of program codes that applied to the controller to communicate with instrument. Implementation that parsing SCPI sentence to internal operation or register accesses of the instrument correctly, is full of challenge during design of instrument interface. This paper presents and implements a two-level parsing model, which divides SCPI parser to word-level parser and syntax-level parser. Word-level parser concentrates on the distilling keywords and maps them to internal codes; syntax-level parser concentrates on the meaning of sentence expressed by internal codes. The design takes advantage of tree structure of SCPI sentence, and takes example of electrical load FT6600 of Shenzhen Faithtech CO., LTD., implements a compact, fast speed SCPI parser.

    关键词:SCPI;解析器;FT6600

    Keywords: SCPI; Parser; FT6600

         中图分类号:TP332                                     文献标识码:A

 1、引言

    SCPI语言与过去的仪器语言的不同点,在于命令描述的是正在试图测量的信号,而不是正在用以测量信号的仪器。仪器使用者可花费较多的时间来学习解决实际应用问题,用较少的时间来学习所使用的仪器,这是因为相同的SCPI命令可用于很多不同类型的仪器,这被称为“横向兼容性” (即不同产品类型之间的兼容性)。SCPI还是可扩展的。这就是它能随着仪器功能的增加而扩大。这样在将来人们可以购买一台比目前所用仪器功能更多的万用表,其基本功能完全可以像以前使用的旧仪器一样程控。这就是“纵向兼容性” (即产品各代之间的兼容性)[1]。鉴于这些优点,目前大部分程控仪器都支持SCPI语言,以方便用户使用和维护。

    SCPI语言也像其他语言一样,具有关键字、数据、分隔符等基本元素,SCPI语法规则只定义了这些基本元素的命名规范和组合使用方法,而且允许根据实际应用增减关键字,具有很好的可扩展性。

    在程控类的仪器仪表设计中,支持SCPI语言这一特性几乎是必须的,因此设计一套灵活高效的SCPI语言解析器是非常必要的。

    本文提出了一种针对SCPI语言的两级解析模型,即解析器分为词法分析和语义分析两部分,将复杂的解析工作划分为两级处理,每一级只负责一部分工作,降低了解析器的设计难度。词法分析专注于从SCPI语句中提取关键字和数据,并将其映射为内部代码;语义分析则专注于进行语义解释,将内部代码表示的SCPI语句解释为针对仪器的寄存器访问和操作。

    本文通过设计实例,介绍了这种两级解析模型的设计与实现过程。文章首先简单介绍了SCPI语言,并以费思科技电子负载FT6600支持的SCPI语句举例。之后在文章第3部分详细介绍了SCPI语言词法分析器的设计,在文章第4部分详细介绍了SCPI语义分析器的设计。最后在第5章进行了总结,并展望了这一设计技术的进一步改进和应用。

2、SCPI语言及FT6600程序控制命令简介

    SCPI语言是一种用于可编程仪表的标准命令,它定义了一套控制器与程控仪器通讯时命令规则。

    SCPI 语言使用层次化结构——“树”形结构,每条“树”命令都是以根层次命令(也称“子系统”)开始,每个根层次命令下面又有许多层次命令。只有按照从树根到叶子的完整路径发送命令,仪器才能正确执行相应的操作命令。“树”形命令结构如图 1所示:

 



图 1 SCPI命令树示例