楊炳琳 ,鄭 賓
(1.中北大學 電氣與控制工程學院,太原 030051;2.中北大學 電子測試技術(shù)國家重點實驗室,太原 030051)
隨著工業(yè)自動化程度的飛速提高和計算機技術(shù)的跨越式發(fā)展,武器裝備的更新速度越來越快,相應的自動化測試系統(tǒng)也得到了長足發(fā)展。然而,目前的測試系統(tǒng)大多針對專用的兵器設備,不同的被測設備,其測試系統(tǒng)互不相同,測試資源也不能互相通用,測試系統(tǒng)之間無法共享測試程序與測試數(shù)據(jù),這樣就會造成測試設備的重復采購與浪費[1],極大地增添了測試系統(tǒng)研發(fā)和后續(xù)維修養(yǎng)護的費用。
為了解決目前自動測試系統(tǒng)存在的這些不足,并使不同自動測試系統(tǒng)之間的數(shù)據(jù)交換更加方便,測試資源具有良好的可共用性,電氣和電子工程師協(xié)會制定了自動測試標記語言標準ATML。ATML基于可擴展標記語言XML,其目的是組建一個測試信息交換的標準,該標準使測試系統(tǒng)的可移植性和儀器的可互換性難度降低,并且支持模塊化的測試系統(tǒng)軟件的開發(fā)[2]。在此,研究了基于ATML的可重用測試系統(tǒng)架構(gòu),使得自動測試系統(tǒng)具有模塊化、層次化和易擴展等特性,并具有良好的可重用性。
ATML規(guī)定了自動測試系統(tǒng)中各個模塊之間的測試信息交換標準,它覆蓋了測試儀器、測試方法、測試過程和測試數(shù)據(jù)等測試系統(tǒng)的的各種測試信息,可以作為自動測試系統(tǒng)中的信息交換媒介,為可重用的測試系統(tǒng)提供了比較理想的解決方案。ATML主要包括3個部分:ATML框架、ATML組件以及相關(guān)標準[3]。框架負責給各個組件提供標準的應用平臺,而ATML標準則是框架中的最主要內(nèi)容。
ATML是在XML語言的基礎上建立的,根據(jù)描述測試信息的不同分為9個子組件,每個子組件都有對應的適用于測試的可擴展標記語言架構(gòu)定義XSD文件,也即測試環(huán)境下的XML文檔。XSD文件嚴格地遵循XML的語言規(guī)范,可以針對不同的測試需求進行擴展,可讀性強,并且擁有良好的平臺無關(guān)性。ATML標準的9個子組件以及對應的XSD文件見表1。
表1 ATML標準的子組件和對應的XSD文件Tab.1 ATML standard components and corresponding XSD file
ATML標準使用XSD文件來描述測試過程中的數(shù)據(jù),滿足ATML定義的測試信息能夠被測試系統(tǒng)軟件中的ATML文件解析與封裝模塊讀取和修改,從而達到測試信息交換和共享的目的。
ATML中的9個子組件,可以描述一個測試系統(tǒng)所需要的絕大多數(shù)測試信息[4]。
——Common組件定義了為其他多個組件的XML Schema所使用的公共類型和屬性組,是ATML中的共用資源。
——Test Description組件可以簡化測試性能、測試條件、診斷需求的定義,并且支持測試儀器對被測對象的定位、排列和校驗等操作。
——Instument Description組件定義了儀器的基本信息、儀器通道和函數(shù)信息,比如儀器的名稱、總線類型、通道序號等測試儀器信息。它是對儀器的靜態(tài)描述,包括儀器的功能特性等。
——UUT Description組件實現(xiàn)對于一個指定被測件進行唯一性描述,定義了被測對象的各個特性,包括名稱、型號、接口類型、物理屬性等。被測對象是測試系統(tǒng)軟件與硬件之間的接口,測試程序通過被測件信息對被測設備進行識別、測試和診斷。
——Test Adapter組件定義了實現(xiàn)被測對象和測試站之間接口的唯一性描述,包括電氣特性、標識、連接器、接插件和導線等。它的作用是連接測試系統(tǒng)和被測設備,起到測試系統(tǒng)接口和被測設備指定接口之間的“橋梁”作用。
——Test Station組件詳細定義了一個工作站的信息,包括物理和電器特性、測試系統(tǒng)的端口信息等。
——Test Results組件定義了一個在某一測試環(huán)境下測試一個被測對象所得到的各種測試數(shù)據(jù),包括測量值、測試通過與否、環(huán)境條件等。
——Diagnostics組件定義了有助于診斷的測試信息以及對測試程序執(zhí)行過程的信息等。
2.1.1 ATML文件的解析
由于ATML文檔是基于XML格式的,而測試系統(tǒng)程序不能直接對XML文件進行操作,必須先由XML解析器對XML文件進行解析,讀取其中某些元素值或者屬性值,而后應用程序通過XML解析器對解析結(jié)果進行操作,從而間接地實現(xiàn)對XML文檔數(shù)據(jù)的訪問。
XML文件的解析有2種方法,基于文檔對象模型DOM或者XML簡單API即SAX。這2種方法各具優(yōu)勢,但是在可重用測試系統(tǒng)的ATML文件解析過程中需要不斷地在整個文件中檢索或者隨機讀取,而SAX方法是逐行掃描文檔的,不支持隨機讀取[5];DOM方法則是將整個文檔讀入內(nèi)存中,支持隨機讀取,因此ATML文件的解析方法選用DOM方法。此外,DOM方法還具有平臺無關(guān)性,編程模型簡單,數(shù)據(jù)轉(zhuǎn)換方便等優(yōu)點。
美國國家儀器公司推出的LabWindows/CVI測試系統(tǒng)開發(fā)軟件提供了完整的XML文件操作函數(shù)庫——cvixml.fp,其中包括了所有與XML文件操作有關(guān)的函數(shù),比如搜索、修改、賦值和取值等功能函數(shù)。
解析符合ATML標準的XML文件的流程如圖1所示。
圖 1 ATML文件的解析過程Fig.1 Process of parsing ATML files
其流程具體如下:
①在LabWindows/CVI中載入庫函數(shù)cvixml.fp,并在程序開頭引用頭文件“cvixml.h”。
②測試系統(tǒng)軟件根據(jù)路徑找到相應的XML文件,對文件進行加載,并且獲取文檔的根元素。主要代碼為
CVIXMLLoadDocument(xmlPath,&xmlDocument);
CVIXMLGetRootElement(xmlDocument,&xmlRootElement);
其中,變量“xmlPath”提供文件的路徑;“xml Document”提供文件句柄;“xmlRootElement”對應根元素句柄。
③根據(jù)需求搜尋特定的子元素,可以根據(jù)特定子元素的標簽或者索引來搜尋。主要代碼為
CVIXMLGetChildElementByTag(xmlRootElement,childTag,&xml ChildElement);
根據(jù)子元素標簽尋找標簽名為childTag的子元素,并分配句柄xmlChildElement。
CVIXMLGetC hildElementByIndex (xmlRootElement,childIndex , &xmlChildElement);
根據(jù)子元素索引來尋找索引為childIndex的子元素,并分配句柄xmlChildElement。
④測試信息一般都在子元素的屬性或者值當中,因此找到特定子元素后,需要獲取它的屬性或者元素值。主要代碼為
CVIXMLGetElementValue(xmlChildElement,childValue1);
讀取子元素“xmlChildElement”的值并且寫入變量“childValue1”。
CVIXMLGetAttributeByName (xmlChildElement,childTag,&child Attribute);
獲得子元素“xmlChildElement”的屬性,并分配句柄“childAttribute”。
CVIXMLGetAttributeValue(childAttribute,childValue2);
獲得屬性值并寫入“childValue1”。
⑤操作完畢后釋放擱置不用的句柄,主要代碼為
CVIXMLDiscardDocument(xmlDocument);
釋放載入的xml文件句柄。
2.1.2 ATML文件的封裝
建立ATML標準文件有2種方式,創(chuàng)建新的ATML描述文件和修改ATML標準文件。相對于創(chuàng)建新的ATML文件,遠不如修改標準ATML文件方便快捷,因為ATML文件一般都有著比較固定的格式和結(jié)構(gòu),修改ATML文件不需要對整個文件結(jié)構(gòu)進行修改,只需要將測試需求變化的部分修改即可[6]。
ATML的封裝過程和解析過程類似,同樣使用到LabWindows/CVI自帶的cvixml.fp文件里的庫函數(shù)。封裝過程首先將尋找需要修改的ATML標準文件,讀取文件載入內(nèi)存后搜尋需要修改的元素位置,對相應元素的值或?qū)傩园凑諟y試需求進行修改,之后保存并輸出新的測試描述文件即可。
2.2.1 測試描述文件
測試描述文件的中心就是聲明測試被測設備所需要的測試序列和用于診斷被測對象故障的測試診斷信息,需要Test Description.XSD和Uut Description.XSD這2個文件進行描述。
測試描述文件定義了測試過程中所涵蓋到的全部測試項目,每個測試項目一般由一個或者多個測試動作組成,每個獨立的測試動作又包括了測試類型、參數(shù)采集和接口測試等內(nèi)容。ATML定義了Setup,Reset,Read,Compare,Connect,Disconnect,Messageout和 Waitfor等 8種操作[7],不同的測試方式可能需要不同的操作組合。在實際應用中的激勵和測量,ATML標準規(guī)定了2種測試方法的組合:
激勵Setup+Connect;
測量Setip+Connect+Read。
當測試信號源時,必須在測試描述文檔中定義Setup與Connect的組合[8],Setup按照IEEE 1641標準描述測試行為,Connect定義測試儀器與被測對象物理接口的連接規(guī)范;當由外部輸入測試信號,要求測量參數(shù)值時,必須在測試描述中定義Setup,Connect及Read組合,Setup和Connect的作用與前者一致,Read用以讀取測量值。例如,用于直流電壓測試的測試方法定義為
通過ATML標準,將被測對象的測試要求轉(zhuǎn)變?yōu)閷钚盘柡蜏y量信號的要求,該虛擬的資源要求通過設備驅(qū)動器接口內(nèi)部服務機制的解釋和定位轉(zhuǎn)換成真實的物理資源,在驅(qū)動儀器中完成測試任務[9]。
2.2.2 可重用測試系統(tǒng)
可重用測試系統(tǒng)通過測試程序的XML解析模塊讀取不同的符合ATML標準的測試描述文件,然后對當前的測試系統(tǒng)進行測試資源的重新分配,更改測試功能,從而實現(xiàn)測試系統(tǒng)針對不同被測對象和不同測試需求的可重用。具體的實現(xiàn)過程如圖2所示。
圖2 可重用測試系統(tǒng)架構(gòu)Fig.2 Reusable test system architecture
在扭簧轉(zhuǎn)動剛度標定中,應用基于ATML設計的測試軟件,對豎琴式扭簧的轉(zhuǎn)動剛度進行標定,標定系統(tǒng)及測試程序如圖3和圖4所示。
測量扭矩和轉(zhuǎn)動角度,并采用最小二乘法擬合直線,試驗結(jié)果見表2。試驗結(jié)果與扭簧轉(zhuǎn)動剛度的標稱值 2.35 N·m/(°)的最大誤差不到 0.01%,可以滿足實際需求。
圖3 扭簧剛度標定系統(tǒng)Fig.3 Torsional spring stiffness calibration system
圖4 基于ATML的扭簧標定程序Fig.4 Torsion spring calibration procedure based on ATML
表2 扭簧標定值Tab.2 Torsion spring calibration value
通過對ATML標準的分析,提出了可重用測試系統(tǒng)架構(gòu)的關(guān)設計方案。通過試驗驗證了該系統(tǒng)的可行性和正確性。基于ATML的可重用測試系統(tǒng)是未來的發(fā)展方向,可以有效地減少測試系統(tǒng)的重復性開發(fā),降低維修養(yǎng)護費用,具有較高的研究價值和廣闊的應用前景。