1、引言
航空電子設(shè)備的測試要求利用有限的資源,構(gòu)建功能多樣化的自動(dòng)測試系統(tǒng)。機(jī)載電子設(shè)備的信號(hào)多且復(fù)雜,涵蓋了低頻和高頻信號(hào)、連續(xù)和離散信號(hào),同時(shí)還包括一些非電信號(hào)。傳統(tǒng)的測試系統(tǒng)采用分立儀器搭建,這種方法成本高,測量自動(dòng)化程度低,擴(kuò)展性差,因此要尋求一種實(shí)現(xiàn)高集成化應(yīng)用廣泛的解決方案。本測試系統(tǒng)的設(shè)計(jì)可以兼容兩種航空電子機(jī)載設(shè)備的測試,兩個(gè)機(jī)載組件是實(shí)現(xiàn)飛機(jī)瞄準(zhǔn)顯示、夜視穩(wěn)定性和操縱性的關(guān)鍵環(huán)節(jié)。被測設(shè)備組件收發(fā)的信號(hào)包括數(shù)字發(fā)控信號(hào),固定頻率模擬信號(hào),電機(jī)驅(qū)動(dòng)脈沖信號(hào),RS232/RS422串口信號(hào)等。組件的功能就是響應(yīng)計(jì)算機(jī)的命令從而發(fā)出其他類型信號(hào)來操作相關(guān)的機(jī)載硬件設(shè)備。原有的測試環(huán)境是依照操作人員手動(dòng)搭建的測試平臺(tái),包括示波器、開關(guān)量開關(guān)、
萬用表等,只能對(duì)設(shè)備一小部分功能進(jìn)行檢驗(yàn),效率和準(zhǔn)確性都有待提高。針對(duì)原有系統(tǒng)自動(dòng)化程度低的缺點(diǎn),本研究從軟件和硬件兩方面討論了一種基于航空電子機(jī)載電子設(shè)備自動(dòng)測試及調(diào)試系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)方法。
2、測試系統(tǒng)的硬件設(shè)計(jì)描述
2.1測試系統(tǒng)的功能和硬件組成
該自動(dòng)測試系統(tǒng)覆蓋了原有手動(dòng)測試平臺(tái)的所有功能,為方便和完善測試還增加了新的特性,具體包括以下幾方面:
?。?)測試系統(tǒng)的自檢測功能,包括軟件、硬件完整性自檢;
?。?)測試的可選擇性,包括自動(dòng)測試和手動(dòng)調(diào)試測試,自動(dòng)測試獨(dú)立模擬被測試電子設(shè)備工作狀況,按照設(shè)備正常工作流程進(jìn)行一遍或多遍測試;手動(dòng)調(diào)試測試時(shí)可以根據(jù)測試項(xiàng)目單步驟重復(fù)測試,方便錯(cuò)誤定位;
?。?)檢測到產(chǎn)品故障時(shí)暫停檢測并報(bào)故障,人工干預(yù)后可選擇結(jié)束檢測或繼續(xù)檢測其他項(xiàng)目,同時(shí)有例行測試功能可以保證被測設(shè)備在某一狀態(tài)下進(jìn)行長時(shí)間的狀態(tài)監(jiān)測;
?。?)每次自動(dòng)測試結(jié)果保存為一個(gè)單獨(dú)文件,并提供打印輸出功能;
?。?)詳盡的在線實(shí)時(shí)幫助輔助操作人員完成測試;
?。?)測試系統(tǒng)可以同時(shí)測試4塊機(jī)載電子設(shè)備組件,有效地提高測試效率。
整個(gè)測試系統(tǒng)(包括被測機(jī)載設(shè)備)由3個(gè)部分組成,如圖1所示。
2.2測試系統(tǒng)主機(jī)和內(nèi)部數(shù)據(jù)采集卡
測試系統(tǒng)主機(jī)是整個(gè)系統(tǒng)zui重要的硬件平臺(tái)。這里選用了ACME-EMP350便攜式工控機(jī)作為測試系統(tǒng)主機(jī)。該型號(hào)性能穩(wěn)定可靠,符合國軍標(biāo),且主板有足夠的擴(kuò)展槽以備功能擴(kuò)展。屏幕15.1寸,采用奔4主板,其他性能參數(shù)均超過主流工控機(jī)標(biāo)準(zhǔn),完達(dá)到測試系統(tǒng)要求的穩(wěn)定性和易操作性。
在分析被測設(shè)備信號(hào)形式和數(shù)量之后,并考慮同時(shí)測試4個(gè)設(shè)備,選擇數(shù)據(jù)采集卡的類型如下:開關(guān)量輸入輸出卡2塊,A/D,D/A卡各1塊。為了簡化系統(tǒng)設(shè)計(jì)和提高可靠性,數(shù)據(jù)采集卡選用NI公司和研華公司的成熟產(chǎn)品。
2.3轉(zhuǎn)接機(jī)箱和信號(hào)調(diào)理控制卡
測試主機(jī)與被測設(shè)備之間由轉(zhuǎn)接機(jī)箱相連,主要起到信號(hào)調(diào)理和控制的作用。轉(zhuǎn)接機(jī)箱內(nèi)部包括調(diào)理控制卡、開關(guān)電源、采集卡的適配器等,它們都通過D型連接器及電纜與主機(jī)采集卡互連。調(diào)理控制卡所需的+5V和+28V電源由轉(zhuǎn)接機(jī)箱中的開關(guān)電源提供,其也為被測設(shè)備的正常工作供電。
信號(hào)調(diào)理控制卡負(fù)責(zé)系統(tǒng)的自檢和測試狀態(tài)的切換。測試系統(tǒng)采用軟件控制的方式對(duì)信號(hào)調(diào)理控制卡進(jìn)行信號(hào)調(diào)控,這樣能夠在不同狀況下達(dá)到測試的目的。由于數(shù)據(jù)采集卡的輸出信號(hào)特性和被測航電設(shè)備的要求不*相同,需要加入信號(hào)調(diào)理控制卡使采集卡輸出信號(hào)特性與被測航電設(shè)備匹配,比如模擬信號(hào)的幅度,數(shù)字量信號(hào)的電平值等。信號(hào)調(diào)理控制卡主要采用運(yùn)放放大模擬信號(hào)以及繼電器實(shí)現(xiàn)信號(hào)切換,功能實(shí)現(xiàn)簡單,不再贅述。
3、系統(tǒng)的軟件設(shè)計(jì)描述
3.1軟件設(shè)計(jì)思想
在測試軟件的開發(fā)中,對(duì)應(yīng)的開發(fā)平臺(tái)有專門為虛擬儀器設(shè)計(jì)的軟件LabView和Labwindows/CVI,VEE等,也有通用的軟件開發(fā)工具VC++,VB等。的虛擬儀器軟件開發(fā)平臺(tái)優(yōu)點(diǎn)在于開發(fā)周期短,缺點(diǎn)在于圖形化的編程語言給的自主性比較小,底層支持不夠。而VC++開發(fā)比較通用,對(duì)底層的支持比較好,技術(shù)較為成熟,對(duì)于上層各種模塊的實(shí)現(xiàn)方案也較多,因此采用VC++編程。
測試系統(tǒng)上層軟件要求有簡單易用的圖形化測試界面,還要具備自動(dòng)測試、手動(dòng)調(diào)試測試、例行測試,以及測試結(jié)果打印、錯(cuò)誤報(bào)告提示、系統(tǒng)自檢測等功能。對(duì)應(yīng)于不同的功能建立不同的功能模塊,這樣有助于測試通用性和移植性,對(duì)于將來擴(kuò)展應(yīng)用也非常有利。另外,將具體測試對(duì)象及代碼功能進(jìn)行封裝,也有利于測試系統(tǒng)的維護(hù)。當(dāng)然,應(yīng)用程序必須對(duì)錯(cuò)誤操作有良好的錯(cuò)誤提示處理,這樣能夠有效地增加軟件的容錯(cuò)性和可靠性。
3.2軟件整體構(gòu)架
測試軟件設(shè)計(jì)采用分層結(jié)構(gòu),下層為上層提供服務(wù),上層通過函數(shù)的形式接口使用下層來完成本身的功能,每一層的變更不影響其他層的正常工作。針對(duì)測試的要求以及設(shè)計(jì)理念,測試系統(tǒng)軟件分成以下幾個(gè)部分:硬件層,物理接口層,硬件驅(qū)動(dòng)層,軟件支持層,用戶應(yīng)用層。同時(shí),每一層次當(dāng)中有其對(duì)應(yīng)的模塊化處理,從而保證軟件系統(tǒng)的健壯性和易用性。整個(gè)軟件設(shè)計(jì)的層次關(guān)系如圖2所示。
各層實(shí)現(xiàn)功能如下:
硬件層安裝有實(shí)現(xiàn)具體測試功能的適配卡、數(shù)據(jù)采集卡和串口,這些硬件設(shè)備是測試實(shí)現(xiàn)的核心,其通過J18C型電連接器,D型接口等與被測設(shè)備相連。
物理接口層主要是指主機(jī)內(nèi)采集卡提供的資源接口,另一方面它們主要通過ISA或PCI總線訪問測試主機(jī)的板卡。同時(shí)物理接口層還包含相關(guān)接口卡I/O操作的“軟性驅(qū)動(dòng)”。
硬件驅(qū)動(dòng)層提供上層軟件訪問板卡硬件的方法,是軟硬件通訊的橋梁。測試系統(tǒng)中,所有驅(qū)動(dòng)都采用WDM編程技術(shù)。
軟件支持層它是系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)的核心,涉及到對(duì)硬件訪問功能封裝的API函數(shù),對(duì)測試系統(tǒng)界面支持的導(dǎo)出類,對(duì)數(shù)據(jù)處理的算法、對(duì)硬件功能的封裝(初始化,中斷句柄傳遞,重置等),對(duì)動(dòng)態(tài)連接庫的設(shè)計(jì)布置等。各個(gè)功能模塊負(fù)責(zé)各功能的實(shí)現(xiàn)并zui終交給主線程綜合控制模塊來處理,其模塊化設(shè)計(jì)為軟件增添了靈活性和可靠性等諸多的優(yōu)勢。
用戶應(yīng)用層為用戶提供簡捷易用的可視化圖形界面操作流程,并減少了誤操作的可能。應(yīng)用層當(dāng)中值得注意的幾點(diǎn)分別是:自動(dòng)測試報(bào)表的生成、保存和打印需要用到CView類提供相關(guān)的成員虛函數(shù)來實(shí)現(xiàn),文字與表格線條輸出采用CDC類實(shí)現(xiàn),測試數(shù)據(jù)的保存需要用到CDocument類提供的服務(wù)對(duì)存儲(chǔ)串行化成員函數(shù)Serialize(CArchive&ar)的重載來實(shí)現(xiàn),而幫助文檔視圖則是通過HtmlView基類來實(shí)現(xiàn)的。整個(gè)軟件視圖設(shè)計(jì)采用多視圖構(gòu)架,特點(diǎn)是清晰且易操作。
3.3軟件設(shè)計(jì)流程
這里介紹了測試系統(tǒng)手動(dòng)調(diào)試測試的一般流程。測試的一般步驟包括軟件初始化,測試系統(tǒng)自身軟硬件自檢,被測設(shè)備狀態(tài)切換的測試,觀測返回?cái)?shù)字信號(hào)和模擬信號(hào)波形,模擬電機(jī)驅(qū)動(dòng)信號(hào)控制電機(jī)旋轉(zhuǎn),zui后保存結(jié)果。其簡要的軟件流程如圖3所示。而對(duì)于自動(dòng)測試來講,實(shí)質(zhì)上就是按照一定的工作流程和被測設(shè)備的工作狀態(tài)切換來進(jìn)行自主自動(dòng)化的測試,總體的過程與手動(dòng)調(diào)試測試相似,并生成測試報(bào)表進(jìn)行記錄保存。
3.4軟件設(shè)計(jì)相關(guān)關(guān)鍵技術(shù)
3.4.1面向?qū)ο笈c文檔視圖技術(shù)
文檔和視圖分離是MFC編程推薦的一種程序結(jié)構(gòu)。在這種結(jié)構(gòu)下,視圖類處理跟界面有關(guān)的內(nèi)容,而文檔類處理跟存儲(chǔ)有關(guān)的內(nèi)容,兩者通過GetDocument函數(shù)相關(guān)聯(lián)。這樣處理給編程帶來了很多好處,首先這種方法強(qiáng)調(diào)了模塊化的思想,兩個(gè)類中分別處理不同的任務(wù),而需要數(shù)據(jù)交換時(shí)再相關(guān),因此提高了程序的模塊化;其次兩個(gè)類中都有很多各自的支持類和函數(shù),特別是視圖類,這樣就不互相影響,zui大方便地實(shí)現(xiàn)每個(gè)類的功能。
3.4.2多線程相關(guān)技術(shù)
測試軟件實(shí)現(xiàn)中采用多線程處理技術(shù)來調(diào)度多達(dá)4個(gè)組件共同測試的流程,同時(shí)數(shù)據(jù)采集與波形顯示的同步也采用了多線程間的同步來進(jìn)行協(xié)調(diào)。當(dāng)然這些線程具體調(diào)度由操作系統(tǒng)完成,但從用戶角度來看是同時(shí)并行運(yùn)行的。Windows環(huán)境中系統(tǒng)通過時(shí)間片輪流的方式實(shí)現(xiàn)多線程,CPU為每個(gè)線程分配一個(gè)時(shí)間片,每個(gè)線程從被激活起,運(yùn)行到時(shí)間片被耗盡為止,此時(shí)另一個(gè)線程運(yùn)行。軟件設(shè)計(jì)時(shí)只需要將用戶界面消息循環(huán)和數(shù)據(jù)采集、處理分配在不同線程上,就可以避免計(jì)算機(jī)長時(shí)間不響應(yīng)操作的問題。在軟件具體設(shè)計(jì)過程中,使用了測試線程和界面線程。界面線程為主控線程,控制測試線程的開啟、掛起和結(jié)束,提供消息循環(huán)并負(fù)責(zé)界面的生成和程序與用戶的交互。測試線程為工作者線程,實(shí)現(xiàn)具體的測試功能,包括數(shù)據(jù)采集、數(shù)據(jù)處理和數(shù)據(jù)入庫等。另外,系統(tǒng)自檢測和自動(dòng)測試模塊也單獨(dú)各占有一個(gè)線程從而大大提高了測試系統(tǒng)的運(yùn)行效率。
3.4.3模擬信號(hào)狀態(tài)切換
在對(duì)控制性能要求較高的實(shí)時(shí)控制系統(tǒng)和數(shù)據(jù)采集系統(tǒng)中,就更需要定時(shí)操作。此系統(tǒng)在自動(dòng)測試當(dāng)中,需要對(duì)被測設(shè)備的各個(gè)工作狀態(tài)進(jìn)行模擬,其工作狀態(tài)的變換是依靠四路開關(guān)量和兩路串口命令的改變而切換的。而狀態(tài)的切換需要在800ms內(nèi)完成四個(gè)不同的狀態(tài)變換,這就需要在狀態(tài)變換線程中采取的定時(shí)來完成。在Windows中已經(jīng)封裝了計(jì)算機(jī)底層硬件的訪問,因此在實(shí)際應(yīng)用時(shí),應(yīng)針對(duì)具體定時(shí)精度的要求,采取相適應(yīng)的定時(shí)方法。在精度要求較高的情況下,VC中可以利用GetTickCount()函數(shù)。該函數(shù)的返回值是DWORD型,表示以ms為單位的計(jì)算機(jī)啟動(dòng)后經(jīng)歷的時(shí)間間隔。在較短的定時(shí)中其計(jì)時(shí)誤差為15ms,經(jīng)過調(diào)研該精度*該設(shè)備百微秒級(jí)的要求。
3.4.4容錯(cuò)處理
本測試系統(tǒng)采取了很多容錯(cuò)的處理手段。這里的容錯(cuò)不僅包括對(duì)用戶非法操作的承受能力,還包括編寫正確的、優(yōu)化的測試代碼。具體包括:C++語言本身容錯(cuò)的處理,VC++環(huán)境下容錯(cuò)的處理,強(qiáng)調(diào)Release版本的生成,模塊設(shè)計(jì)的容錯(cuò)處理,用戶界面的容錯(cuò)處理,測試軟件自檢測等。
4、測試結(jié)果
如圖4所示可以看到測試系統(tǒng)手動(dòng)調(diào)試測試的主界面。測試人員通過點(diǎn)擊測試的各個(gè)按鈕對(duì)被測組件進(jìn)行操作,從而判斷返回信號(hào)波形及參數(shù),模擬電機(jī)的旋轉(zhuǎn)和返回?zé)舻娘@示來判定測試結(jié)果。關(guān)于自動(dòng)測試、例行測試、自檢和報(bào)表的保存生成界面這里就不再羅列了。
5、結(jié)語
本系統(tǒng)設(shè)計(jì)完成后,經(jīng)過系統(tǒng)聯(lián)調(diào),功能上可以*代替原有手動(dòng)測試系統(tǒng),整套系統(tǒng)工作穩(wěn)定可靠,操作簡單方便,容易維護(hù)。無論是自動(dòng)測試、手動(dòng)調(diào)試測試還是例行測試都極大地提高了效率和可靠性。整個(gè)測試系統(tǒng)的實(shí)物圖如圖5所示。