張冠杰,程 方,張治中
(重慶郵電大學(xué) 通信網(wǎng)與測試技術(shù)重點(diǎn)實(shí)驗(yàn)室,重慶400065)
采用終端射頻一致性測試儀進(jìn)行測試是終端生產(chǎn)時(shí)的重要環(huán)節(jié),它除了可以驗(yàn)證終端的射頻指標(biāo)是否符合測試協(xié)議外,還能對終端射頻特性相關(guān)的硬件指標(biāo)進(jìn)行校準(zhǔn)。隨著生產(chǎn)效率需求的提高,對射頻一致性儀表在自動(dòng)化測試及程控標(biāo)準(zhǔn)化方面都提出了更高的要求[1]。
SCPI是一種傳統(tǒng)的通用儀器控制命令標(biāo)準(zhǔn),規(guī)范了由不同廠商生產(chǎn)的不同型號(hào)、相同類型儀器的遠(yuǎn)程命令的格式。SCPI命令適用的對象是正在測試的信號(hào),這種與儀表平臺(tái)無關(guān)的特點(diǎn)使其具有了良好的跨平臺(tái)特性[2],而特殊的樹形命令結(jié)構(gòu)也使其具備一定的擴(kuò)展性,測試人員可根據(jù)功能需求對命令集進(jìn)行擴(kuò)充。隨著儀器儀表技術(shù)與自動(dòng)化測試技術(shù)的結(jié)合和發(fā)展,SCPI技術(shù)也被引入到射頻一致性測試儀表中,使其具備了可自動(dòng)化控制以及軟件控制標(biāo)準(zhǔn)化的特點(diǎn)[3]。
SCPI解析模塊是遠(yuǎn)程控制功能的核心,儀表在接收到SCPI命令后不能識(shí)別這條命令,這就需要SCPI模塊的支持,它將GPIB (general-purpose interface bus)接口傳遞過來的上位機(jī)發(fā)送的SCPI命令解析成儀表控制核心可以識(shí)別的信息[4]。
傳統(tǒng)SCPI模塊將解析命令的操作寫死在代碼中,造成了SCPI命令集在更新時(shí)必須修改模塊代碼,這就為儀器儀表的開發(fā)和維護(hù)帶來了不便。本文提出了SCPI命令集數(shù)據(jù)庫和SCPI命令集緩沖區(qū)的方法,SCPI命令集數(shù)據(jù)庫用于存儲(chǔ)所有SCPI命令節(jié)點(diǎn)信息,而緩沖區(qū)能夠在儀表啟動(dòng)時(shí)將所有數(shù)據(jù)庫信息載入內(nèi)存,解析器將上位機(jī)發(fā)來的命令和緩沖區(qū)中的節(jié)點(diǎn)進(jìn)行遍歷比對得出解析結(jié)果。這種設(shè)計(jì)不但方便維護(hù)人員對命令集的維護(hù),同時(shí)保證了解析時(shí)的運(yùn)行效率。
常見的儀表遠(yuǎn)程控制系統(tǒng)由4個(gè)部分組成,包括上位機(jī)、GPIB接口卡、SCPI模塊以及儀表控制核心[6]。其中上位機(jī)參與遠(yuǎn)程控制流程的運(yùn)行和管理;GPIB接口負(fù)責(zé)命令數(shù)據(jù)和測試結(jié)果的接收與轉(zhuǎn)發(fā);SCPI模塊用于SCPI命令的解析;而儀表控制核心負(fù)責(zé)射頻儀表的運(yùn)行。結(jié)構(gòu)如圖1所示。
圖1 射頻一致性儀表的遠(yuǎn)程控制結(jié)構(gòu)
一次完整的系統(tǒng)測試流程包含GPIB連接建立,測試環(huán)境配置,測試?yán)龍?zhí)行,GPIB連接釋放,工作流程如圖2所示。流程中使用SCPI命令進(jìn)行的操作都需要SCPI模塊的解析。
圖2 系統(tǒng)工作流程
GPIB連接建立。該連接建立發(fā)生在上位機(jī)與GPIB接口之間,上位機(jī)通過實(shí)例化連接對象來建立一條GPIB連接通路,該連接對象中包含GPIB卡號(hào)信息和GPIB地址信息。連接建立后,GPIB模塊將連接狀態(tài)置為True,防止重復(fù)連接。
測試環(huán)境配置。GPIB 連接建立后,上位機(jī)通過GPIB接口向射頻一致性儀表發(fā)送環(huán)境配置命令,用來設(shè)置小區(qū)功率,工作信道,功率控制等級以及儀表的頻率線損表等。
測試?yán)龍?zhí)行。測試?yán)阅_本的形式順序執(zhí)行,包含測試項(xiàng)的運(yùn)行和測試數(shù)據(jù)的上報(bào)。
GPIB連接釋放。上位機(jī)在測試腳本執(zhí)行完成后釋放該GPIB實(shí)體連接,GPIB模塊將連接狀態(tài)置為False。至此完成一次完整的系統(tǒng)測試。
SCPI是一種可編程儀表的標(biāo)準(zhǔn)命令集[7],它定義了一套上位機(jī)與測試儀器通訊時(shí)的命令格式。SCPI命令從用途上分為兩種,SCPI通用命令和儀表專用SCPI命令。SCPI通用命令由IEEE488.2標(biāo)準(zhǔn)制定,它實(shí)現(xiàn)遠(yuǎn)程控制功能的一般操作,命令以 ‘*’開始且只有一層結(jié)構(gòu),每條指令完成特定的功能。通用命令集見表1。
表1 SCPI通用命令集
儀表專用SCPI命令為樹形分層結(jié)構(gòu),層與層間用 ‘:’分隔,最底層命令節(jié)點(diǎn)與命令參數(shù)間使用空格分隔,參數(shù)之間采用 ‘,’分隔,而完整的SCPI命令之間用 ‘;’分隔。命令格式為:
子系統(tǒng)名稱:節(jié)點(diǎn)名<命令體參數(shù)>:子節(jié)點(diǎn)名<命令體參數(shù)><命令參數(shù)1>,<命令參數(shù)2>… …;
一套完整的儀表專用SCPI命令由多種命令樹組成,以筆者所研究的儀表為例,大致分為6類命令樹,每種命令樹代表一類功能,見表2。
傳統(tǒng)的解析模塊采用單獨(dú)的SCPI解析器實(shí)現(xiàn),所有比對數(shù)據(jù)和解析處理寫死在解析器中,為開發(fā)人員對命令集的維護(hù)和擴(kuò)展工作帶來了不便。
改進(jìn)后的SCPI模塊在SCPI解析器的基礎(chǔ)上,增加了SCPI命令集數(shù)據(jù)庫、SCPI命令集緩沖區(qū)以及解析結(jié)果緩沖區(qū)的設(shè)計(jì)。各子模塊及關(guān)系圖,如圖3所示。
表2 子系統(tǒng)分類
圖3 SCPI模塊架構(gòu)
SCPI命令集數(shù)據(jù)庫主要負(fù)責(zé)在本地文件中存儲(chǔ)所能支持的所有SCPI命令信息。在SCPI命令更新時(shí),開發(fā)人員只需對SCPI命令集數(shù)據(jù)庫做簡單的升級,不需要更改解析器中的代碼。信息結(jié)構(gòu)以樹形結(jié)構(gòu)存儲(chǔ),每個(gè)樹節(jié)點(diǎn)都代表了一條SCPI命令信息,這些信息具體包括:
SCPI命令在整個(gè)命令集樹狀結(jié)構(gòu)中的位置信息,包括命令字符串 (全寫和簡寫)、父節(jié)點(diǎn)信息、子節(jié)點(diǎn) (集)信息,以及默認(rèn)子節(jié)點(diǎn) (如果存在);
SCPI命令的模式信息 (是否可設(shè)置、是否可查詢);
SCPI命令的處理函數(shù)信息,包括函數(shù)名和輸入?yún)?shù);
關(guān)于該SCPI命令信息的備注。
我們采用xml格式文件存儲(chǔ)命令集。使用xml方式存儲(chǔ)命令集有以下優(yōu)點(diǎn):分離SCPI命令集內(nèi)容管理和命令解析流程管理,便于對遠(yuǎn)程控制功能的開發(fā)和維護(hù);規(guī)范統(tǒng)一,任何系統(tǒng)和產(chǎn)品所支持的xml文檔,都具有統(tǒng)一的格式和語法,這樣就使得數(shù)據(jù)庫具有了跨平臺(tái)的特性;可擴(kuò)展性,根據(jù)射頻一致性儀表的功能需要,可方便地?cái)U(kuò)展SCPI命令集命令,無需復(fù)雜的傳統(tǒng)數(shù)據(jù)庫操作。以基本的查詢和設(shè)置命令為例,代碼如下:
該段XML代碼中,描述了兩條命令,具體見表3。
表3 對SCPI命令節(jié)點(diǎn)的解釋
SCPI命令集數(shù)據(jù)庫緩沖區(qū)在初始化時(shí),從SCPI命令集數(shù)據(jù)庫中讀取所有SCPI節(jié)點(diǎn)的信息,并存儲(chǔ)在內(nèi)存中,便于在使用時(shí)快速查找,保證解析時(shí)的效率。該緩沖區(qū)模塊功能由以下3個(gè)類實(shí)現(xiàn)。
SCPI命令類,存儲(chǔ)單條SCPI命令的全部信息,同時(shí)提供兩種操作:創(chuàng)建SCPI命令實(shí)例,其各項(xiàng)屬性均從當(dāng)前節(jié)點(diǎn)繼承而來;SCPI命令子節(jié)點(diǎn)添加操作,向節(jié)點(diǎn)中添加一個(gè)子節(jié)點(diǎn)。SCPI命令的存儲(chǔ)結(jié)構(gòu)如下:
SCPI命令集合類,該類實(shí)現(xiàn)對多個(gè)SCPI命令信息的存儲(chǔ),同時(shí)提供兩種操作:在節(jié)點(diǎn)集合中根據(jù)子系統(tǒng)名稱查找節(jié)點(diǎn);在節(jié)點(diǎn)集合中根據(jù)子系統(tǒng)字符串?dāng)?shù)組查找葉子節(jié)點(diǎn)。
SCPI解析結(jié)果類,用于存儲(chǔ)一條經(jīng)過SCPI模塊處理的解析結(jié)果,它包含8 個(gè)成員變量:命令模式 (配置/查詢)、查詢命令的參數(shù)個(gè)數(shù)、設(shè)置命令的參數(shù)個(gè)數(shù)、SCPI命令示例字符串、處理函數(shù)名稱字符串、原始輸入的SCPI命令字符串、是否是查詢命令、SCPI 命令攜帶的參數(shù)數(shù)組。
該緩沖區(qū)按照時(shí)間順序存儲(chǔ)SCPI命令解析結(jié)果,這些結(jié)果被儀表控制核心調(diào)用。緩沖區(qū)的工作方式遵循先進(jìn)先出的原則,即最先進(jìn)入緩沖區(qū)的解析結(jié)果最先被儀表控制核心調(diào)用,緩沖區(qū)的設(shè)計(jì)可以保證解析模塊的運(yùn)行效率不受儀表控制核心的影響。
3.4.1 SCPI解析器主要功能
SCPI解析器是SCPI模塊的核心,它提供將SCPI命令集數(shù)據(jù)庫加載到SCPI命令集數(shù)據(jù)庫緩沖區(qū)內(nèi)的API;解析SCPI命令字符串,從SCPI命令集數(shù)據(jù)庫緩存中查找對應(yīng)的葉子節(jié)點(diǎn)信息;根據(jù)葉子節(jié)點(diǎn)信息構(gòu)造解析結(jié)果,將該結(jié)果推入解析結(jié)果緩沖區(qū)內(nèi)。
3.4.2 SCPI解析器解析流程
解析流程分為:預(yù)處理流程,分類流程,字符串解析流程,比對流程和解析結(jié)果填充流程。如圖4所示。
圖4 SCPI命令解析流程
預(yù)處理流程。模塊采集到的數(shù)據(jù)可能包含多條SCPI命令,所以首先對數(shù)據(jù)進(jìn)行命令分割操作,根據(jù) ‘;’來判別一條完整的SCPI命令,預(yù)判命令的合法性,去除命令中的非法字符,并按字符串先后順序?qū)⑦@些命令存儲(chǔ)。
分類流程。對上一流程中存儲(chǔ)的SCPI命令分類。首先調(diào)用函數(shù)判斷當(dāng)前處理是SCPI通用命令還是儀表專用SCPI命令,如果為儀表專用SCPI命令,它的命令子系統(tǒng)分為CONFig,SENSe,F(xiàn)ETCh,ERRor,SYSTem,INSTrument,我們根據(jù)命令所屬的命令子系統(tǒng)分別調(diào)用各自的處理函數(shù)進(jìn)入字符串解析流程;如果為SCPI通用命令,則直接進(jìn)入比對流程。
字符串解析流程。首先根據(jù)字符串末尾的 ‘?’標(biāo)識(shí)判斷該字符串為設(shè)置命令還是查詢命令,該信息將存儲(chǔ)在解析結(jié)果中;其次對字符串中的命令體參數(shù)和命令參數(shù)進(jìn)行提取保存;然后按照 ‘:’對命令節(jié)點(diǎn)和子節(jié)點(diǎn)進(jìn)行分割存儲(chǔ)。
比對流程。根據(jù)上一步中分割得到的節(jié)點(diǎn)字符串在SCPI命令集緩沖區(qū)中找到相應(yīng)的節(jié)點(diǎn),將解析結(jié)果中命令模式和參數(shù)個(gè)數(shù)與節(jié)點(diǎn)存儲(chǔ)的信息進(jìn)行比對,如果比對結(jié)果正確則進(jìn)入解析結(jié)果填充流程。
解析結(jié)果填充流程。把一條完整的命令解析結(jié)果封裝為一個(gè)類對象,并按順序推入解析結(jié)果緩沖區(qū),至此完成單條SCPI命令的解析,等待儀表控制核心的調(diào)用。
該模塊經(jīng)過實(shí)驗(yàn)室環(huán)境多次測試驗(yàn)證并已應(yīng)用與實(shí)際以表中。實(shí)驗(yàn)室測試平臺(tái)的搭建需要多種設(shè)備的配合。
測試平臺(tái)包含如下設(shè)備,上位機(jī)、終端、射頻一致性測試儀、電源。其中上位機(jī)與測試儀以及上位機(jī)與電源之間使用GPIB總線連接,用于控制命令的下發(fā)和數(shù)據(jù)的回傳;上位機(jī)與終端之間采用串口線連接,用于AT 指令和數(shù)據(jù)的傳輸;終端與測試儀之間采用射頻線連接,用于傳輸射頻信號(hào)。具體搭建方法如圖5所示。
圖5 自動(dòng)化測試平臺(tái)搭建
采用腳本測試的方法對SCPI模塊進(jìn)行測試,每個(gè)腳本文件對應(yīng)一個(gè)測試項(xiàng)并由多條SCPI命令組成。判斷SCPI模塊通過測試的標(biāo)準(zhǔn),除了需要查看腳本運(yùn)行的結(jié)果是否符合預(yù)期,也要確認(rèn)沒有無法識(shí)別命令的情況出現(xiàn)。
確認(rèn)各個(gè)設(shè)備連接后開啟電源,運(yùn)行上位機(jī)中的自動(dòng)化測試軟件并加載這些腳本文件開始測試。表4是最近的一次GSM 制式下的測試結(jié)果。
表4 GSM 制式下的腳本測試結(jié)果
以GSM_PVT 腳本為例,該測試項(xiàng)用于測試發(fā)信載頻功率相對于時(shí)間的關(guān)系是否符合協(xié)議規(guī)定。其運(yùn)行時(shí)的結(jié)果如圖6所示,從圖中可以看出,運(yùn)行該腳本時(shí)儀表能夠正確進(jìn)入測試項(xiàng)并獲得測試結(jié)果。
圖6 時(shí)間模板測試項(xiàng)測試界面
本文對射頻一致性儀表遠(yuǎn)程控制系統(tǒng)進(jìn)行研究,分析了SCPI命令格式,提出了SCPI解析模塊的改進(jìn)設(shè)計(jì)方案。該方案在不影響測試效率的情況下,通過增加SCPI命令集數(shù)據(jù)庫的設(shè)計(jì)完善了射頻一致性儀表的維護(hù)功能特性,同時(shí)SCPI命令集緩沖區(qū)的設(shè)計(jì)又能保證解析運(yùn)行效率,對其它儀表的SCPI模塊設(shè)計(jì)具有一定的指導(dǎo)意義。
目前,本設(shè)計(jì)方案已經(jīng)應(yīng)用于某測試儀表中,實(shí)踐結(jié)果表明,該方案具有較好的穩(wěn)定性和執(zhí)行效率。
[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機(jī)遠(yuǎn)程控制儀器的SCPI解析模塊設(shè)計(jì) [J].微計(jì)算機(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).[李博,趙建,時(shí)玉娟,等.基于Linux的SCPI命令解釋器的研究與實(shí)現(xiàn) [J].計(jì)算機(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).[王林林,張琴,徐靖玖,等.基于虛擬儀器技術(shù)的小功率自動(dòng)測試系統(tǒng) [J].宇航計(jì)測技術(shù),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].現(xiàn)代電子技術(shù),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命令解析器模塊設(shè)計(jì)與實(shí)現(xiàn) [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接口的遠(yuǎn)程測試系統(tǒng)的設(shè)計(jì) [J].微計(jì)算機(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).[王學(xué)偉,相艷,陳小榮.數(shù)據(jù)采集模塊SCPI解釋器的研究與實(shí)現(xiàn) [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). [顧大權(quán),王曉,汪洋.基于VISA 和SCPI的多點(diǎn)數(shù)據(jù)測量系統(tǒng)[J].儀表技術(shù),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). [于紅雨,李智,劉暢.函數(shù)/任意波形發(fā)生器SCPI解釋器設(shè)計(jì)與實(shí)現(xiàn) [J].國外電子測量技術(shù),2009,28 (4):70-73.]