SCPI語言解析器的設(shè)計(jì)與實(shí)現(xiàn)
摘要:SCPI(Standard Commands for Programmable Instrument)語言是一種用于可編程儀表的標(biāo)準(zhǔn)命令集,它定義了通過控制器和儀器通訊時使用的程控代碼規(guī)則。如何正確地將SCPI語句解析為儀表內(nèi)的操作和寄存器訪問,是儀表接口設(shè)計(jì)中具有挑戰(zhàn)性的工作之一。本文提出并實(shí)現(xiàn)了一種兩級解析模型,即將SCPI語句的解析分為詞法和語義分析兩級。詞法分析專注于關(guān)鍵字的提取并將其映射為內(nèi)部代碼,語義分析則專注于語義解釋。該設(shè)計(jì)方法充分利用了SCPI語句的樹形結(jié)構(gòu)特點(diǎn),并以費(fèi)思科技科技有限公司的電子負(fù)載FT6600為例,實(shí)現(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.
關(guān)鍵詞:SCPI;解析器;FT6600
Keywords: SCPI; Parser; FT6600
中圖分類號:TP332 文獻(xiàn)標(biāo)識碼:A
1、引言
SCPI語言與過去的儀器語言的不同點(diǎn),在于命令描述的是正在試圖測量的信號,而不是正在用以測量信號的儀器。儀器使用者可花費(fèi)較多的時間來學(xué)習(xí)解決實(shí)際應(yīng)用問題,用較少的時間來學(xué)習(xí)所使用的儀器,這是因?yàn)橄嗤腟CPI命令可用于很多不同類型的儀器,這被稱為“橫向兼容性” (即不同產(chǎn)品類型之間的兼容性)。SCPI還是可擴(kuò)展的。這就是它能隨著儀器功能的增加而擴(kuò)大。這樣在將來人們可以購買一臺比目前所用儀器功能更多的萬用表,其基本功能完全可以像以前使用的舊儀器一樣程控。這就是“縱向兼容性” (即產(chǎn)品各代之間的兼容性)[1]。鑒于這些優(yōu)點(diǎn),目前大部分程控儀器都支持SCPI語言,以方便用戶使用和維護(hù)。
SCPI語言也像其他語言一樣,具有關(guān)鍵字、數(shù)據(jù)、分隔符等基本元素,SCPI語法規(guī)則只定義了這些基本元素的命名規(guī)范和組合使用方法,而且允許根據(jù)實(shí)際應(yīng)用增減關(guān)鍵字,具有很好的可擴(kuò)展性。
在程控類的儀器儀表設(shè)計(jì)中,支持SCPI語言這一特性幾乎是必須的,因此設(shè)計(jì)一套靈活高效的SCPI語言解析器是非常必要的。
本文提出了一種針對SCPI語言的兩級解析模型,即解析器分為詞法分析和語義分析兩部分,將復(fù)雜的解析工作劃分為兩級處理,每一級只負(fù)責(zé)一部分工作,降低了解析器的設(shè)計(jì)難度。詞法分析專注于從SCPI語句中提取關(guān)鍵字和數(shù)據(jù),并將其映射為內(nèi)部代碼;語義分析則專注于進(jìn)行語義解釋,將內(nèi)部代碼表示的SCPI語句解釋為針對儀器的寄存器訪問和操作。
本文通過設(shè)計(jì)實(shí)例,介紹了這種兩級解析模型的設(shè)計(jì)與實(shí)現(xiàn)過程。文章首先簡單介紹了SCPI語言,并以費(fèi)思科技電子負(fù)載FT6600支持的SCPI語句舉例。之后在文章第3部分詳細(xì)介紹了SCPI語言詞法分析器的設(shè)計(jì),在文章第4部分詳細(xì)介紹了SCPI語義分析器的設(shè)計(jì)。最后在第5章進(jìn)行了總結(jié),并展望了這一設(shè)計(jì)技術(shù)的進(jìn)一步改進(jìn)和應(yīng)用。
2、SCPI語言及FT6600程序控制命令簡介
SCPI語言是一種用于可編程儀表的標(biāo)準(zhǔn)命令,它定義了一套控制器與程控儀器通訊時命令規(guī)則。
SCPI 語言使用層次化結(jié)構(gòu)——“樹”形結(jié)構(gòu),每條“樹”命令都是以根層次命令(也稱“子系統(tǒng)”)開始,每個根層次命令下面又有許多層次命令。只有按照從樹根到葉子的完整路徑發(fā)送命令,儀器才能正確執(zhí)行相應(yīng)的操作命令?!皹洹毙蚊罱Y(jié)構(gòu)如圖 1所示:
圖 1 SCPI命令樹示例