摘 要: 基于LabWindows/CVI" title="LabWindows/CVI">LabWindows/CVI的自動測試" title="自動測試">自動測試系統(tǒng)軟件框架使用配置文件實(shí)現(xiàn)軟、硬件模塊之間信息交換和資源的動態(tài)配置。在同一個軟件主框架下實(shí)現(xiàn)了多個UUT測試程序" title="測試程序">測試程序的開發(fā)和調(diào)試。提供良好的調(diào)試維護(hù)界面,實(shí)現(xiàn)測試軟件" title="測試軟件">測試軟件的模塊化、TPS的可移植,大大提高了開發(fā)和調(diào)試的效率。TPS通過調(diào)用格式化類驅(qū)動間接調(diào)用物理儀器驅(qū)動,實(shí)現(xiàn)了儀器的可互換。
關(guān)鍵詞: LabWindows/CVI;? 配置文件; 測試程序; 框架
?
某軍用飛機(jī)電子設(shè)備自動測試系統(tǒng)(ATS)涉及的被測對象(UUT)有60多個,按專業(yè)可分為雷達(dá)、顯控、飛控、電子對抗等。在設(shè)計、調(diào)試自動測試程序中,一方面要提高開發(fā)效率,按專業(yè)劃分測試軟件的開發(fā)任務(wù),各小組、開發(fā)工程師能同時獨(dú)立開展工作。其次要實(shí)現(xiàn)測試軟件的模塊化、可移植性:各小組、工程師開發(fā)出來的測試程序具有統(tǒng)一的格式和標(biāo)準(zhǔn),便于調(diào)試和交流;當(dāng)被測對象變動時,相應(yīng)的測試程序集(TPS)可以容易地改動。最后要實(shí)現(xiàn)儀器可互換,即儀器更換時TPS不需要改動。NI公司的LabWindows/CVI以ANSI C為核心,它的集成化的開發(fā)平臺、交互式編程方法、豐富的面板功能以及訪問INI文件、多線程、創(chuàng)建庫文件、DDE動態(tài)數(shù)據(jù)交換等高級編程手段使其自身功能強(qiáng)大,應(yīng)用方便,成為工程技術(shù)開發(fā)人員建立ATS首選的軟件開發(fā)工具。根據(jù)ATS的邏輯結(jié)構(gòu),本文設(shè)計開發(fā)出一個基于LabWindows/CVI的ATS軟件框架,用于測試程序開發(fā)和調(diào)試。主框架使用配置文件實(shí)現(xiàn)軟、硬件模塊之間交換信息和資源的動態(tài)配置,把裝備工程師、軟件工程師和硬件設(shè)計人員各自的工作區(qū)分開來,實(shí)現(xiàn)了面向“測試任務(wù)”的虛擬儀器設(shè)計,使開發(fā)人員的精力集中到測試功能的實(shí)現(xiàn)上,提高了軟件開發(fā)的靈活性和效率,大大降低了軟件開發(fā)的難度,縮短了開發(fā)周期,節(jié)約了成本。
1 軟件框架結(jié)構(gòu)及其組成
ATS的邏輯結(jié)構(gòu)從資源構(gòu)成、硬件設(shè)計、系統(tǒng)計量、UUT測試項(xiàng)目定義等方面描述了ATS 屬性,是系統(tǒng)內(nèi)核對ATS硬件實(shí)施控制的主要依據(jù)。ATS軟件框架是其邏輯結(jié)構(gòu)的一個具體實(shí)現(xiàn),其結(jié)構(gòu)如圖1所示。
?

?
1.1 測試資源需求描述文件
該文件以INI文件的格式定義了當(dāng)前UUT測試需要的測試資源。一個UUT測試程序?qū)?yīng)一個“測試資源需求描述文件”。文件格式如圖2所示。
?

直接更改該文件的設(shè)置(將1改為0)可以使系統(tǒng)轉(zhuǎn)變到降級使用狀態(tài)。另外,當(dāng)測試程序主框架在按照測試需求描述文件的定義初始化儀器時,如果發(fā)現(xiàn)某儀器初始化失敗,則測試程序也將轉(zhuǎn)為降級使用狀態(tài)。轉(zhuǎn)為降級使用狀態(tài)時,初始化失敗的儀器將由相應(yīng)的仿真儀器替代,系統(tǒng)將在測試項(xiàng)目列表(顯示測試結(jié)果)時標(biāo)注出來。未使用該儀器的測試不會受其影響。
1.2 測試項(xiàng)目定義文件
該文件以INI文件的格式定義了當(dāng)前UUT的測試項(xiàng)目信息。一個TPS對應(yīng)一個“測試項(xiàng)目定義文件”。 對于每一個測試項(xiàng)目,其信息包括:測試項(xiàng)目代號、(子)測試項(xiàng)目名稱、測試項(xiàng)目級別、對應(yīng)測試函數(shù)名、函數(shù)調(diào)用參數(shù)、是否加電測試、履歷本項(xiàng)目、200小時項(xiàng)目、400小時項(xiàng)目、裝機(jī)前項(xiàng)目、3個相關(guān)測試項(xiàng)目。如圖3所示。
?

測試程序主框架對該文件的調(diào)用情況:
(1)測試項(xiàng)目級別分為ITEM_FAMALY、ITEM_FATHER、ITEM_SON、ITEM_GRANDSON四級,有子項(xiàng)目的測試項(xiàng)目可以定義項(xiàng)目測試前函數(shù)和項(xiàng)目測試后函數(shù)(這兩個函數(shù)完成測試項(xiàng)目開始進(jìn)入子項(xiàng)目之前需要做好的工作,如提示連接/斷開電纜等),在設(shè)計測試程序時,項(xiàng)目測試前函數(shù)名的前四個字母必須是'BEF_',項(xiàng)目測試后函數(shù)名的前四個字母必須是'BEH_',其他部分可以自行定義(但兩函數(shù)的后半部分必須完全相同)。項(xiàng)目測試前函數(shù)和項(xiàng)目測試后函數(shù)在本文件中定義時只定義相同的后半部分即可,前半部分統(tǒng)一用'XXX_'來代替。測試程序主框架在調(diào)用項(xiàng)目前(后)函數(shù)時,將自動把'XXX_'分別用'BEF_'和'BEH_'來代替,形成完整的項(xiàng)目前(后)函數(shù)名。
(2)一個測試項(xiàng)目對應(yīng)一個測試函數(shù)名:有子項(xiàng)目的測試項(xiàng)目不能有測試函數(shù)名,同一測試項(xiàng)目最底層的各個子項(xiàng)目的測試函數(shù)同名,測試程序以函數(shù)調(diào)用參數(shù)區(qū)別各子項(xiàng)目。
(3)測試程序主框架執(zhí)行測試時,將首先根據(jù)該文件測試項(xiàng)目“是否加電測試”狀態(tài)值執(zhí)行不加電測試,待全部不加電測試項(xiàng)目執(zhí)行完畢,再依次執(zhí)行加電測試項(xiàng)目。
(4)對于沒有200小時定檢、400小時定檢等項(xiàng)目的系統(tǒng),對應(yīng)項(xiàng)應(yīng)全部為0。測試程序主框架將根據(jù)頭文件的定義確定在主框架面板上是否顯示對應(yīng)的項(xiàng)目選擇按鈕。
(5)一個測試項(xiàng)目最多可以與三個項(xiàng)目相關(guān)聯(lián)(即該項(xiàng)目的測試必須在與之相關(guān)聯(lián)的項(xiàng)目測試完成之后才能正確執(zhí)行),當(dāng)用戶在主框架面板上選中一個測試項(xiàng)目時,測試程序主框架將自動選中與之關(guān)聯(lián)的項(xiàng)目。
1.3 測試數(shù)據(jù)模板文件
測試數(shù)據(jù)模板文件是一個包含Info、ItemDef、激勵修正三個表的數(shù)據(jù)庫,Info提供UUT名、型號、測試程序設(shè)計人等程序管理方面的信息,激勵修正表提供對測試結(jié)果修正數(shù)據(jù)的解釋,ItemDef表的格式如圖4所示。
?

測試程序主框架根據(jù)該表數(shù)據(jù)與相應(yīng)測試項(xiàng)目的測試數(shù)據(jù)進(jìn)行比較,判斷測試是否通過,并通過測試項(xiàng)目列表格式化顯示測試結(jié)果。
數(shù)據(jù)庫的建立及其處理程序的設(shè)計,簡化了TPS 編程,提高了TPS 的可維護(hù)性。當(dāng)測試項(xiàng)目參數(shù)需要修改時,可以通過修改測試項(xiàng)目模板的方法實(shí)現(xiàn),提高了TPS 的可維護(hù)性及互操作性。
1.4自動測試項(xiàng)目流程代碼文件
自動測試項(xiàng)目流程代碼文件包含所有自動測試流程的實(shí)現(xiàn)代碼。該文件中的函數(shù)主要包括以下幾類:
(1)通用函數(shù)
包括DllMain、DllEntryPoint、UUTTest_AttachToFrame三個,這類函數(shù)的函數(shù)名和實(shí)現(xiàn)代碼都不需進(jìn)行任何更改。
(2)UUT測試資源配置函數(shù)
該函數(shù)實(shí)現(xiàn)了對UUT測試的資源配置操作,文件名不應(yīng)更改,但在設(shè)計TPS時應(yīng)根據(jù)UUT的測試需求設(shè)計函數(shù)實(shí)現(xiàn)代碼。該函數(shù)由測試程序主框架在儀器資源初始化完成后調(diào)用。
(3)UUT加(斷)電函數(shù)
該函數(shù)實(shí)現(xiàn)了UUT的加(斷)電操作,文件名不應(yīng)更改,函數(shù)實(shí)現(xiàn)代碼應(yīng)根據(jù)實(shí)際需要添加。該函數(shù)由測試程序主框架在UUT需要加(斷)電時調(diào)用。
(4)測試前(后)函數(shù)
該函數(shù)包括自動測試過程" title="測試過程">測試過程前(后)函數(shù)和項(xiàng)目測試前(后)函數(shù)。函數(shù)實(shí)現(xiàn)代碼可根據(jù)實(shí)際需要添加,但不允許在該函數(shù)中添加與格式化類或硬件控制有關(guān)的任何代碼。利用該函數(shù)可以實(shí)現(xiàn)一些測試過程的特殊要求,如:UUT測試或項(xiàng)目測試準(zhǔn)備和撤收注意事項(xiàng)的提示。測試前(后)函數(shù)由測試程序主框架在啟動自動測試流程前(測試流程結(jié)束后)調(diào)用。
(5)自動測試項(xiàng)目流程函數(shù)
該函數(shù)是測試項(xiàng)目對應(yīng)的測試流程函數(shù),是特定的UUT測試邏輯的具體實(shí)現(xiàn)。函數(shù)返回值根據(jù)儀器響應(yīng)情況包括:被測對象中止測試(LRUTEST_TERMINATE)、大項(xiàng)目中止測試(ITEMTEST_TERMINATE)、小項(xiàng)目中止測試(SUBITEMTEST_TERMINATE)、測試項(xiàng)目正常結(jié)束(ITEMTEST_FINISH)等。
1.5 測試主框架內(nèi)核
測試主框架內(nèi)核包括測試引擎、測試數(shù)據(jù)管理等與軟件平臺有關(guān)的函數(shù)。
測試引擎主要完成TPS 的儀器無關(guān)性及系統(tǒng)集成,其主要功能包括:系統(tǒng)資源控制模型管理;儀器運(yùn)行狀態(tài)的實(shí)時監(jiān)測;儀器運(yùn)行模式(仿真運(yùn)行、真實(shí)運(yùn)行) 管理;類驅(qū)動程序及物理驅(qū)動程序DLL模塊句柄管理;邏輯儀器到物理儀器映射及對物理驅(qū)動程序?qū)С龊瘮?shù)的動態(tài)調(diào)用(顯式鏈接);類驅(qū)動程序函數(shù)到物理儀器驅(qū)動程序函數(shù)映射;儀器句柄管理;類驅(qū)動程序及物理驅(qū)動程序注冊。
測試數(shù)據(jù)管理實(shí)現(xiàn)的功能:測試項(xiàng)目模板處理;測試結(jié)果緩存、保存、顯示、打?。粶y試結(jié)果文件管理、顯示及打印表格的自動生成;信號校正模型處理及被測信號、激勵信號校正。
1.6 其他文件
儀器資源定義頭文件定義了系統(tǒng)硬件平臺中各測試資源的邏輯句柄、資源順序宏定義以及測試函數(shù)的返回值類型、系統(tǒng)有無“履歷本項(xiàng)目”、“200小時定檢項(xiàng)目”、“400小時定檢項(xiàng)目”、“裝機(jī)前檢查項(xiàng)目”、對當(dāng)前系統(tǒng)測試資源格式化類頭文件的包含等。該文件名與系統(tǒng)同名,存儲在測試程序主框架目錄下。
UUT測試自定義頭文件包含了UUT測試過程中用到的自定義變量或函數(shù),存儲在TPS當(dāng)前目錄下。
用戶界面文件中包含測試執(zhí)行中用到的一些通用面板,用戶可根據(jù)需要在該文件中添加定制的面板。
2 儀器可互換性的實(shí)現(xiàn)
TPS對儀器資源的操作是通過指定“邏輯名”來進(jìn)行的,“邏輯名”、虛擬儀器與物理儀器的對應(yīng)關(guān)系以及虛擬儀器的所屬類、類驅(qū)動程序、物理儀器總線接口類型及屬性、物理儀器驅(qū)動程序函數(shù)前綴及DLL文件名等都是由INI配置文件定義的。INI配置文件完成了從邏輯儀器到物理儀器的映射等功能。配置文件的管理通過配置管理工具進(jìn)行,可以用圖形直觀顯示邏輯名到物理儀器或仿真儀器的映射關(guān)系,且可以很方便地進(jìn)行修改。測試引擎提供配置文件的訪問接口,提供公用常量、數(shù)據(jù)類型、函數(shù)的定義,提供錯誤代碼定義以及錯誤處理函數(shù)。
通過格式化類驅(qū)動程序提供的標(biāo)準(zhǔn)函數(shù),測試軟件開發(fā)者可以寫出獨(dú)立于儀器硬件的測試代碼,允許測試系統(tǒng)在各生產(chǎn)商之間、甚至各種類型總線協(xié)議之間(GPIB、VXI、PXI)更換儀器。TPS在其基礎(chǔ)上實(shí)現(xiàn)了測試程序的儀器無關(guān)性,提高了軟件及整個系統(tǒng)的可維護(hù)性。
3 測試程序函數(shù)的調(diào)用次序
3.1 儀器初始化過程
儀器初始化過程及初始化完成后各函數(shù)的調(diào)用次序如圖5所示。
?

3.2 自動測試項(xiàng)目各函數(shù)的調(diào)用次序
自動測試項(xiàng)目各函數(shù)的調(diào)用次序如圖6所示。
?

本文所述基于LabWindows/CVI的測試軟件框架實(shí)現(xiàn)的主要功能有:
(1)測試資源的初始化和關(guān)閉等儀器管理;
(2)測試數(shù)據(jù)模板文件的打開及關(guān)閉;
(3)自動測試項(xiàng)目的顯示,以及對測試項(xiàng)目對應(yīng)測試流程的調(diào)用;
?。?)測試數(shù)據(jù)保存、查詢、打??;
(5)測試項(xiàng)目與測試過程信息的映射、索引操作;
?。?)自動測試過程信息的格式化顯示以及不可執(zhí)行項(xiàng)目在項(xiàng)目列表中的標(biāo)注;
?。?)測試程序的降級使用功能;
?。?)關(guān)聯(lián)測試項(xiàng)目的管理。
該測試程序主框架主要是為了完成各測試程序的開發(fā)、仿真與對接調(diào)試,是為一個在儀器可互換組件基礎(chǔ)上運(yùn)行的獨(dú)立的可執(zhí)行程序(.exe文件),測試程序?yàn)榉弦欢ǜ袷降膭討B(tài)鏈接庫(.dll文件)。測試程序主框架與UUT測試程序?qū)崿F(xiàn)了徹底分離,主框架功能的更改和版本升級不影響測試程序的代碼。當(dāng)增加新的UUT時,在測試程序主框架下可以容易地添加新的UUT測試程序;當(dāng)某些UUT需要添加測試項(xiàng)目時,通過更改測試相關(guān)文件和添加少量代碼,可以容易地實(shí)現(xiàn)新的測試程序;提供相同測試功能的測試資源的更換不會影響程序的運(yùn)行,實(shí)現(xiàn)了TPS 與硬件平臺的無關(guān)性。該軟件已成功應(yīng)用于兩種型號軍用自動測試系統(tǒng)的測試軟件開發(fā)和對接調(diào)試。實(shí)踐證明,該軟件能夠明顯降低測試軟件開發(fā)難度,大大提高程序開發(fā)和調(diào)試的效率。
參考文獻(xiàn)
[1] ?劉金寧,孟晨,崔少輝,等. 基于配置文件的虛擬儀器測試軟件設(shè)計與實(shí)現(xiàn)[J].電力自動化設(shè)備,2005,25(1):
?50-53.
[2] ?任獻(xiàn)彬,牛雙誠,許愛強(qiáng).通用ATS軟件設(shè)計平臺研究[J].宇航計測技術(shù),2002,22(5):59-63.
[3] ?于功敬,張韜. VXI通用測試軟件框架結(jié)構(gòu)的研究[J].計算機(jī)自動測量與控制,1999,7(3):5-6.
