康祥熙
(中國西南電子技術(shù)研究所,成都 610036)
機(jī)載通導(dǎo)設(shè)備多,信號(hào)交聯(lián)關(guān)系復(fù)雜。在設(shè)備研制、型號(hào)轉(zhuǎn)段和產(chǎn)品交付等階段都會(huì)對設(shè)備進(jìn)行大量的測試,力求設(shè)備能夠滿足科研生產(chǎn)技術(shù)要求,達(dá)到相應(yīng)狀態(tài)?,F(xiàn)階段對機(jī)載設(shè)備的測試仍較多沿用傳統(tǒng)的方式,例如通過儀器搭建測試系統(tǒng),手動(dòng)操作人工記錄的方式,也有通過開發(fā)專用型測試系統(tǒng),針對特定任務(wù)開展測試。前者測試方式屬于較原始的形態(tài),后者的測試方式雖然能夠在一定程度上提高測試效率,但系統(tǒng)研制成本高,且適應(yīng)性不強(qiáng),測試資源無法在多個(gè)測試任務(wù)間共享,不通用。
研究適用于機(jī)載通導(dǎo)系統(tǒng)的多層次、松耦合、通用化自動(dòng)測試平臺(tái),避免傳統(tǒng)測試系統(tǒng)中常見的一個(gè)型號(hào)一套測試軟件的弊端,從而解決軟件架構(gòu)不統(tǒng)一、測試程序在測試任務(wù)間不能共享的問題。最終實(shí)現(xiàn)多型號(hào)、多任務(wù)、同平臺(tái)的通用型自動(dòng)測試能力。
通用自動(dòng)測試平臺(tái)架構(gòu)在參照國際國內(nèi)標(biāo)準(zhǔn)的同時(shí),結(jié)合航空產(chǎn)品測試特點(diǎn),將平臺(tái)架構(gòu)[1]劃分為6個(gè)層次,如圖1所示,分別是測試應(yīng)用層、測試程序?qū)?、資源調(diào)度層、儀器驅(qū)動(dòng)層、ICD協(xié)議適配層和物理設(shè)備層。平臺(tái)每層涉及到的流程與模型均由ATML描述[2],主要有測試描述[3]、儀器描述[4]、UUT描述[5]和適配器描述[6]等。除此之外平臺(tái)架構(gòu)提供滿足STD標(biāo)準(zhǔn)[7]和ATML標(biāo)準(zhǔn)的中間數(shù)據(jù)層,規(guī)范數(shù)據(jù)格式,分布實(shí)時(shí)存儲(chǔ)。自動(dòng)測試平臺(tái)中的所有被測件、真實(shí)交聯(lián)設(shè)備、仿真模型、信號(hào)仿真工具、數(shù)據(jù)顯示記錄工具等之間沒有直接的接口,在模塊與模塊之間不產(chǎn)生數(shù)據(jù)交換。任何模塊(DLL/LIB、COM組件、EXE、VI等)只能與中間數(shù)據(jù)層產(chǎn)生數(shù)據(jù)交換,從而解決了模塊耦合的問題。中間數(shù)據(jù)層的引入使得自動(dòng)測試系統(tǒng)在開發(fā)階段無須提前約定通信接口,更多關(guān)注模型功能與算法本身的開發(fā)。其次中間數(shù)據(jù)層提升了數(shù)據(jù)監(jiān)控、數(shù)據(jù)管理與數(shù)據(jù)顯示接入的便捷性。
圖1 通用自動(dòng)測試系統(tǒng)平臺(tái)架構(gòu)
測試應(yīng)用層:測試應(yīng)用層作為整個(gè)軟件架構(gòu)的最頂層,主要為用戶提供人機(jī)交互接口管理界面,實(shí)現(xiàn)自動(dòng)測試配置文件生成及管理,測試數(shù)據(jù)顯示及管理,測試報(bào)告生成及管理和測試序列管理功能。
測試程序?qū)樱簻y試程序?qū)訛樽詣?dòng)測試系統(tǒng)的核心業(yè)務(wù)層。該層提供了TPS庫。TPS庫的調(diào)用依賴于測試應(yīng)用層的測試項(xiàng)目配置,由配置決定哪些TPS被調(diào)用。TPS庫由測試序列組成,測試序列又由各級子序列構(gòu)成,子序列由最基礎(chǔ)的測試步組成。該層通過TestStand集成諸如C/C++、C#、CVI和MATLAB等外部應(yīng)用,所有的測試序列均由ATML描述其接口和邏輯。
資源調(diào)度層:任務(wù)調(diào)度管理借助于TestStand引擎實(shí)現(xiàn),實(shí)現(xiàn)TPS調(diào)用運(yùn)行,是整個(gè)測試系統(tǒng)運(yùn)行的核心[8]。
儀器驅(qū)動(dòng)層:儀器驅(qū)動(dòng)層包含總線驅(qū)動(dòng)、通用儀器(VISA封裝)和非標(biāo)定制儀器驅(qū)動(dòng)。儀器驅(qū)動(dòng)層是調(diào)度控制層與物理設(shè)備層的中間層,通過儀器驅(qū)動(dòng)層實(shí)現(xiàn)了儀器的實(shí)例化配置和控制運(yùn)行。
ICD協(xié)議適配層:ICD協(xié)議適配層包含ICD協(xié)議內(nèi)容適配和總線接口適配。測試應(yīng)用基于ICD和總線通硬件設(shè)備通信,不同項(xiàng)目ICD存在差異,為了讓應(yīng)用開發(fā)無須過多關(guān)注ICD協(xié)議與總線接口,采用ICD協(xié)議內(nèi)容和總線接口適配的方法屏蔽低層級內(nèi)容。ICD協(xié)議適配層的引入有助于實(shí)現(xiàn)ICD到變量,變量到ICD的轉(zhuǎn)換,降低了TPS的開發(fā)難度。
物理設(shè)備層:物理設(shè)備層為自動(dòng)測試系統(tǒng)架構(gòu)得最底層。物理設(shè)備層包含了執(zhí)行測試任務(wù)的具體測試設(shè)備、被測對象、交聯(lián)設(shè)備、模擬器和工作站。
典型的開放式的自動(dòng)測試系統(tǒng)的物理結(jié)構(gòu)[9]主要由控制子系統(tǒng)、儀器子系統(tǒng)、激勵(lì)子系統(tǒng)和接口適配器組成。其硬件結(jié)構(gòu)框圖如圖2所示??刂谱酉到y(tǒng)通過控制總線連接儀器子系統(tǒng)和激勵(lì)子系統(tǒng)??刂谱酉到y(tǒng)控制激勵(lì)子系統(tǒng)產(chǎn)生激勵(lì)信號(hào),信號(hào)通過接口適配器輸出至待測設(shè)備,待測設(shè)備響應(yīng)并通過接口適配器將響應(yīng)信號(hào)回傳至儀器子系統(tǒng),完成測試測量。
圖2 自動(dòng)測試系統(tǒng)硬件結(jié)構(gòu)框圖
經(jīng)典的自動(dòng)測試系統(tǒng)物理架構(gòu)已包含測試系統(tǒng)所需的基本要素,能夠滿足一般產(chǎn)品測試需求。而航空通導(dǎo)設(shè)備因產(chǎn)品的復(fù)雜性往往需要具備諸如監(jiān)控、調(diào)試等更多功能。設(shè)計(jì)適用于通導(dǎo)系統(tǒng)的自動(dòng)測試平臺(tái)物理架構(gòu),需結(jié)合自身測試需求。如圖3所示為某型機(jī)載通導(dǎo)設(shè)備自動(dòng)測試系統(tǒng)物理架構(gòu),其在保留控制子系統(tǒng)、激勵(lì)測量子系統(tǒng)(專用激勵(lì)器和通用儀器)、適配子系統(tǒng)的基礎(chǔ)上增加了監(jiān)控子系統(tǒng)和電源子系統(tǒng)。在此架構(gòu)基礎(chǔ)上如需實(shí)現(xiàn)基于復(fù)雜場景的動(dòng)態(tài)測試,應(yīng)增加場景模擬子系統(tǒng)、動(dòng)態(tài)信號(hào)解算子系統(tǒng)。
圖3 某型機(jī)載通導(dǎo)設(shè)備自動(dòng)測試系統(tǒng)物理連接圖
控制子系統(tǒng)通過RSS422、GPIB總線連接并控制激勵(lì)/測量子系統(tǒng)中的通用儀器和功能激勵(lì)器產(chǎn)生激勵(lì)信號(hào),信號(hào)通過適配子系統(tǒng)中的低頻適配器和射頻適配器實(shí)現(xiàn)測試通路選擇、信號(hào)調(diào)理和轉(zhuǎn)發(fā)至待測設(shè)備,待測設(shè)備接收激勵(lì)信號(hào),完成對應(yīng)功能信號(hào)處理,產(chǎn)生響應(yīng)和數(shù)據(jù)分析結(jié)果,通過適配子系統(tǒng),再次將響應(yīng)回傳至測量子系統(tǒng),通用儀器接收回傳信號(hào),處理并將結(jié)果上傳至控制子系統(tǒng)存儲(chǔ)和顯示。監(jiān)控子系統(tǒng)則是通過監(jiān)控點(diǎn)實(shí)現(xiàn)對諸如429、1553、CAN等常用航空總線信號(hào)實(shí)時(shí)采集和ICD分析,實(shí)現(xiàn)測試過程、測試異常的監(jiān)控。電源子系統(tǒng)為待測產(chǎn)品提供直流28 V或交流115 V供電,并可實(shí)現(xiàn)加電控制。
TestStand是美國NI公司一款自動(dòng)測試開發(fā)與管理軟件,其在支持圖形化測試序列編輯、測試步驟順序拖曳調(diào)整、多種代碼模塊識(shí)別集成、串行并行測試等方面優(yōu)點(diǎn)突出。TestStand主要用于完成測試管理、測試執(zhí)行、任務(wù)匯報(bào)等復(fù)雜的業(yè)務(wù)邏輯。測試業(yè)務(wù)與待集成外部應(yīng)用可以分開開發(fā),在一定程度稍降低了開發(fā)人員耦合交織的情況發(fā)生,減少了開發(fā)人員的重復(fù)性工作,將開發(fā)重點(diǎn)轉(zhuǎn)移到測試要求和測試指標(biāo),最終提高了開發(fā)效率,縮短了自動(dòng)化測試和驗(yàn)證系統(tǒng)的研制周期和部署時(shí)間。
鑒于TestStand上述優(yōu)點(diǎn),且提供標(biāo)準(zhǔn)的COM組件接口和外部應(yīng)用(VI、DLL、EXE等)調(diào)用接口,通導(dǎo)系統(tǒng)通用自動(dòng)測試平臺(tái)軟件設(shè)計(jì)采用集成TestStand引擎,圍繞引擎二次開發(fā)的思路進(jìn)行。
1)采用C#語言開發(fā)圖形用戶界面,實(shí)現(xiàn)測試任務(wù)管理和調(diào)用;
2)采用集成TestStand作為運(yùn)行引擎的方式,實(shí)現(xiàn)測試任務(wù)運(yùn)行;
3)采用Office作為測試報(bào)告模板編輯工具,實(shí)現(xiàn)測試報(bào)告的自動(dòng)生成。
圖4 軟件組成
通用自動(dòng)測試平臺(tái)軟件采用異構(gòu)的軟件框架,按功能分為多個(gè)組件,可實(shí)現(xiàn)軟件自由裁剪和擴(kuò)展,具體組件組成如圖4所示,主要由用戶交互組件、用戶管理組件、數(shù)據(jù)管理組件、數(shù)據(jù)報(bào)表組件、序列組件和運(yùn)行組件組成。用戶交互組件是整個(gè)系統(tǒng)的總控界面,完成人機(jī)交互工作。運(yùn)行組件作為核心調(diào)度組件,實(shí)現(xiàn)過程調(diào)度和數(shù)據(jù)推送功能。數(shù)據(jù)管理組件作為所有狀態(tài)和信息的存儲(chǔ)地,用于實(shí)現(xiàn)過程數(shù)據(jù)的持久化。
圖5 軟件主界面
圖5所示為自動(dòng)測試平臺(tái)軟件主界面,軟件主界面采用左樹右表的布局。左側(cè)樹型列表提供測試項(xiàng)目勾選和管理,中間測試步驟區(qū)域則提供測試序列簡單編輯和運(yùn)行過程查看,下方波形顯示區(qū)域提供測試數(shù)據(jù)圖形化顯示,右側(cè)區(qū)域?yàn)樾蛄袪顟B(tài)查看,頂部工具欄則提供測試運(yùn)行、暫停、停止、串并行模式選擇和系統(tǒng)設(shè)置等功能。
軟件組件之間交互流程如圖6所示。用戶登錄界面驗(yàn)證使用人員權(quán)限,加載測試人員、開發(fā)人員、管理員等角色配置文件,主界面根據(jù)配置文件構(gòu)建界面內(nèi)容與風(fēng)格。管理員通過用戶管理組件實(shí)現(xiàn)用戶的新增和刪除,以及權(quán)限分配。在主界面用戶操作選擇測試序列,點(diǎn)擊開始則啟動(dòng)引擎并通知運(yùn)行組件將測試序列加載至引擎執(zhí)行,執(zhí)行過程中調(diào)用底層驅(qū)動(dòng)控制測試硬件實(shí)現(xiàn)總線信號(hào)數(shù)據(jù)收發(fā)、功能激勵(lì)器激勵(lì)信號(hào)產(chǎn)生、通用儀器測量和結(jié)果采集等自動(dòng)化測試。測試結(jié)論數(shù)據(jù)上傳至數(shù)據(jù)報(bào)表組件。數(shù)據(jù)報(bào)表組件打開測試序列對應(yīng)模板,完成數(shù)據(jù)寫入和測試報(bào)告生成。在測試過程若需要查看數(shù)據(jù)和顯示的時(shí)候,則需要在序列編輯時(shí),通過DLL組件進(jìn)行設(shè)置,設(shè)置完成便可在測試運(yùn)行過程中,實(shí)現(xiàn)測試數(shù)據(jù)實(shí)時(shí)數(shù)值顯示和二維波形顯示。
圖6 軟件組件交互流程
同時(shí),每次測試過程中的測試數(shù)據(jù)均會(huì)存入數(shù)據(jù)庫中,需要導(dǎo)出歷史報(bào)表時(shí)可以先查詢出感興趣時(shí)間的測試結(jié)果,然后將測試結(jié)果依據(jù)數(shù)據(jù)書簽映射關(guān)系導(dǎo)入至報(bào)表模板,生成測試報(bào)告。
自動(dòng)測試用戶界面并非固定不變,可根據(jù)登錄人員權(quán)限動(dòng)態(tài)加載軟件界面。軟件界面采用Dock界面框架,可通過拖拽操作進(jìn)行窗口布局,不同測試人員可以有專屬測試操作界面,且界面窗口異構(gòu),擴(kuò)展性強(qiáng)。
1)數(shù)據(jù)驅(qū)動(dòng)圖形。
對于主界面的波形圖繪制部分采用數(shù)據(jù)驅(qū)動(dòng)的方式進(jìn)行管理。繪圖顯示窗口區(qū)域加載繪圖插件,繪圖插件根據(jù)實(shí)際需求開發(fā),以DLL的形式存放于本地,繪圖插件加載完畢,則將需要繪圖的變量與測試變量綁定,測試數(shù)據(jù)由序列組件通過TestStand引擎獲取,在獲取到數(shù)據(jù)后通過接口適配調(diào)用對應(yīng)繪圖插件解析數(shù)據(jù)包并調(diào)用PlotData方法繪圖,其結(jié)構(gòu)關(guān)系如圖7所示。
圖7 動(dòng)態(tài)波形顯示結(jié)構(gòu)原理
2)自定義圖形界面加載。
用戶自定義的繪圖插件采用動(dòng)態(tài)加載的方式進(jìn)行管理。要求實(shí)現(xiàn)的插件代碼為C#編寫,其DLL中的主類類名必須固定,而且必須繼承Form類。如果要使用Dock框架則必須繼承Dock框架的DockContent類。DLL加載原理如下:
(1)利用反射進(jìn)行動(dòng)態(tài)加載和調(diào)用
Assembly assembly=Assembly.LoadFrom(DllPath);
(2)加載dll后,需要使用dll中某類
Type type= assembly.GetType(“TypeName”);
(3)實(shí)例化類型
Object obj = Activator.CreateInstance(type,params[]);
(4)調(diào)用類型中的某個(gè)方法,需要首先得到此方法
MethodInfo mi=type.GetMethod(“MehtodName”);
(5)然后對方法進(jìn)行調(diào)用,多態(tài)性利用參數(shù)進(jìn)行控制
mi.Invoke(obj,params[]);
測試報(bào)表是自動(dòng)測試系統(tǒng)最終輸出結(jié)果。通過測試報(bào)表直接反映測試數(shù)據(jù)和測試結(jié)論。為滿足各式各樣的測試報(bào)告樣式需求,報(bào)表模板需能夠由用戶任意定制。報(bào)表與測試數(shù)據(jù)綁定技術(shù)研究能夠解決此問題。通過代碼驗(yàn)證和書簽方式對Word報(bào)表進(jìn)行指定位置的內(nèi)容填入和修改,通過報(bào)表組件建立TestStand和Office Word的連接,實(shí)現(xiàn)測試序列的變量和報(bào)表中待存儲(chǔ)數(shù)據(jù)的映射(即:書簽-變量),并將映射關(guān)系存入數(shù)據(jù)庫。在導(dǎo)出報(bào)表時(shí)依據(jù)對應(yīng)關(guān)系填寫報(bào)表內(nèi)容。圖8描述了綁定報(bào)表模版的流程圖。
圖8 綁定報(bào)表模版的流程圖
自動(dòng)測試一般采用固定步長遍歷的方法進(jìn)行諸如靈敏度、動(dòng)態(tài)范圍等指標(biāo)的測試。其主要思路是將激勵(lì)信號(hào)從初值開始按固定步長遞進(jìn)增大或減小,直至遍歷出預(yù)期的測量值。采用固定步長遍歷測試的最大遍歷測試次數(shù)一般為:
遍歷測試次數(shù)max=(b-a)/step +1
以某功能接收靈敏度測試為例,將功能激勵(lì)器輸出信號(hào)電平幅度的初值設(shè)置為-110 dBm,以1 dBm為步進(jìn)不斷增加激勵(lì)電平幅度,每增加一個(gè)步進(jìn)就測量一次輸出,看是否滿足指標(biāo)要求,不滿足則繼續(xù)遍歷,直到激勵(lì)信號(hào)電平幅度增大到-90 dBm,此時(shí)測量獲得了預(yù)期的輸出。這種固定步長的遍歷方法雖然不影響測試精度,但遍歷次數(shù)較多,僅接收靈敏度測試需要進(jìn)行21次遍歷,花費(fèi)較長時(shí)間。為解決傳統(tǒng)遍歷測試法遍歷次數(shù)多、測試效率低的問題,針對線性系統(tǒng)可采用對分遍歷區(qū)間的方法縮短遍歷次數(shù),提升測試效率。
圖9 對分遍歷法示意圖
首先設(shè)置激勵(lì)信號(hào)為a,測量此時(shí)的輸出值,記為ya,要保證待測設(shè)備輸出的ya為無效電平,設(shè)置激勵(lì)信號(hào)為b,測量此時(shí)的輸出值,記為yb,要保證待測設(shè)備輸出的yb為有效電平。滿足上述條件后,此時(shí)將遍歷區(qū)間對分為[a,x0],[x0,b]兩個(gè)子區(qū)間;然后判斷y(x0)是否有效,如果有效,對分[a,x0],無效對分[x0,b],直至|xn-xn-1|<=tolerance。
對分遍歷法的流程示意如圖10。
圖10 對分遍歷法流程圖
同樣以該功能接收靈敏度測試為例,激勵(lì)電平幅度的初值為-110 dBm,而該測試項(xiàng)指標(biāo)要求優(yōu)于-88 dBm。因此采用對分遍歷法進(jìn)行測試,在同樣測試精度要求下,獲得預(yù)期輸出時(shí)的遍歷次數(shù)不超過6次。
在聯(lián)試場地操作自動(dòng)測試平臺(tái)對通導(dǎo)系統(tǒng)分機(jī)1、分機(jī)2的通信功能和導(dǎo)航功能進(jìn)行了主要性能指標(biāo)測試,并對測試時(shí)長進(jìn)行統(tǒng)計(jì),具體數(shù)據(jù)見表1。
表1 測試時(shí)長統(tǒng)計(jì)
由表1可知,采用傳統(tǒng)手動(dòng)測試方法對 通導(dǎo)系統(tǒng)測試的時(shí)間為13.3小時(shí),采用自動(dòng)測試方法的測試時(shí)長為2.6小時(shí),實(shí)現(xiàn)了測試效率5.1倍提升。
除此之外,由于采用自動(dòng)測試平臺(tái)測試,在測試準(zhǔn)備階段只需1人便可以完成加電檢查和加電操作等測試準(zhǔn)備操作,在測試階段由1人運(yùn)行測試平臺(tái)、選擇測試序列和運(yùn)行步驟,測試自動(dòng)運(yùn)行過程中,測試人員可以不在現(xiàn)場,而完全交由系統(tǒng)自動(dòng)完成待測設(shè)備/激勵(lì)器/通用儀器/設(shè)置、測試、測量和測試結(jié)論步驟。相比傳統(tǒng)手動(dòng)測試2~4人的人力需求,采用自動(dòng)測試平臺(tái)測試人力需求縮減至1人。
采用本文所述架構(gòu)設(shè)計(jì)的通導(dǎo)系統(tǒng)通用自動(dòng)測試平臺(tái),是一套具備圖形化的測試序列編輯環(huán)境,能夠?qū)崿F(xiàn)一鍵串行或并行測試的以科研測試、生產(chǎn)檢測和綜合維修保障為應(yīng)用需求背景的通用、高效、便捷、可擴(kuò)展的包含成熟軟硬件平臺(tái)的自動(dòng)測試開發(fā)運(yùn)行環(huán)境,現(xiàn)已實(shí)際應(yīng)用于多個(gè)項(xiàng)目。
通導(dǎo)系統(tǒng)自動(dòng)測試平臺(tái)的使用不僅簡化了測試流程,規(guī)避了人帶來的測試質(zhì)量不穩(wěn)定,測試一致性不高,測試操作繁瑣等缺點(diǎn),還提升了測試效率,解放了人力資源,同時(shí)為探索內(nèi)外場飛機(jī)綜合保障[10]的新型模式提供了一條可行的發(fā)展之路。