SCPI語言解析器的設計與實現(xiàn)
摘要:SCPI(Standard Commands for Programmable Instrument)語言是一種用于可編程儀表的標準命令集,它定義了通過控制器和儀器通訊時使用的程控代碼規(guī)則。如何正確地將SCPI語句解析為儀表內的操作和寄存器訪問,是儀表接口設計中具有挑戰(zhàn)性的工作之一。本文提出并實現(xiàn)了一種兩級解析模型,即將SCPI語句的解析分為詞法和語義分析兩級。詞法分析專注于關鍵字的提取并將其映射為內部代碼,語義分析則專注于語義解釋。該設計方法充分利用了SCPI語句的樹形結構特點,并以費思科技科技有限公司的電子負載FT6600為例,實現(xiàn)了一套簡潔、高速的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]。鑒于這些優(yōu)點,目前大部分程控儀器都支持SCPI語言,以方便用戶使用和維護。
SCPI語言也像其他語言一樣,具有關鍵字、數(shù)據(jù)、分隔符等基本元素,SCPI語法規(guī)則只定義了這些基本元素的命名規(guī)范和組合使用方法,而且允許根據(jù)實際應用增減關鍵字,具有很好的可擴展性。
在程控類的儀器儀表設計中,支持SCPI語言這一特性幾乎是必須的,因此設計一套靈活高效的SCPI語言解析器是非常必要的。
本文提出了一種針對SCPI語言的兩級解析模型,即解析器分為詞法分析和語義分析兩部分,將復雜的解析工作劃分為兩級處理,每一級只負責一部分工作,降低了解析器的設計難度。詞法分析專注于從SCPI語句中提取關鍵字和數(shù)據(jù),并將其映射為內部代碼;語義分析則專注于進行語義解釋,將內部代碼表示的SCPI語句解釋為針對儀器的寄存器訪問和操作。
本文通過設計實例,介紹了這種兩級解析模型的設計與實現(xiàn)過程。文章首先簡單介紹了SCPI語言,并以費思科技電子負載FT6600支持的SCPI語句舉例。之后在文章第3部分詳細介紹了SCPI語言詞法分析器的設計,在文章第4部分詳細介紹了SCPI語義分析器的設計。最后在第5章進行了總結,并展望了這一設計技術的進一步改進和應用。
2、SCPI語言及FT6600程序控制命令簡介
SCPI語言是一種用于可編程儀表的標準命令,它定義了一套控制器與程控儀器通訊時命令規(guī)則。
SCPI 語言使用層次化結構——“樹”形結構,每條“樹”命令都是以根層次命令(也稱“子系統(tǒng)”)開始,每個根層次命令下面又有許多層次命令。只有按照從樹根到葉子的完整路徑發(fā)送命令,儀器才能正確執(zhí)行相應的操作命令?!皹洹毙蚊罱Y構如圖 1所示:
圖 1 SCPI命令樹示例