(中國直升機設(shè)計研究所,江西 景德鎮(zhèn) 333001)
針對不同型號飛機航空電子系統(tǒng)不同分系統(tǒng)分設(shè)備測試需求存在較大差異的實際情況,根據(jù)測設(shè)需求的并集[1],研制規(guī)模合理航空電子系統(tǒng)綜合自動檢測設(shè)備可以提高其通用性,提高多型號飛機航空電子系統(tǒng)的維修保障效率。目前,自動測試領(lǐng)域中使用的測試程序(TP)開發(fā)環(huán)境主要有面向儀器和面向信號兩種[2]。面向儀器的開發(fā)環(huán)境需要把測試程序和測設(shè)設(shè)備驅(qū)動集合在一起,使測試程序設(shè)計與開發(fā)周期較長、維護困難,可移植性、可重用性較差[2]。而基于PAWS的面向信號的開發(fā)環(huán)境,測試程序中只包含被測對象(UUT)端口的信號激勵與測試要求,測試程序運行環(huán)境可自動分配測試資源和路由測試通道,開發(fā)的測試程序具有測試資源無關(guān)性,提高了平臺資源配置利用的效率,利于測試程序的再移植[2-3]。同時,提高自動檢測設(shè)備的通用性可以解決檢測設(shè)備和UUT生命周期不匹配的問題[4]?;赑AWS的面向信號的開發(fā)環(huán)境使用ATLAS語言開發(fā)測試程序。ATLAS作為廣泛應(yīng)用于軍事和電子測試的通用標準測試語言,具有設(shè)備無關(guān)性、信號相關(guān)性、可擴展性、并行性和定時功能,語法接近自然語言,文法限制不嚴格的特點[5]。為便于航空電子系統(tǒng)設(shè)備TP的管理,在PAWS開發(fā)平臺上開發(fā)的TP一般以生成TP運行環(huán)境可執(zhí)行的PAX文件進行交付。然而,TP運行環(huán)境功能單一,人機界面過于簡單,為對航空電子系統(tǒng)等大型系統(tǒng)的綜合自動檢測設(shè)備的測試程序、測試報告、使用者權(quán)限、測試日志等進行管理,需要開發(fā)便于人機交互的客戶端軟件。
MFC(microsoft foundation classes)是微軟提供框架類庫,提供了強大的可視化編程環(huán)境[6]。依據(jù)ABBET標準,PAWS提供了如COM/DCOM、ActiveX等流行的接口功能。針對PAWS的TP運行環(huán)境缺乏強大的測試系統(tǒng)文件管理功能等問題,本文在MFC應(yīng)用程序框架下,利用COM、ActiveX等接口技術(shù)實現(xiàn)了測試系統(tǒng)客戶端軟件對TP運行環(huán)境組件和ACCESS數(shù)據(jù)庫的調(diào)用,編制了測試程序管理、測試報告管理、用戶權(quán)限管理、測試日志管理等模塊,極大地方便了整套系統(tǒng)的使用與管理。
航空電子系統(tǒng)綜合自動檢測設(shè)備由硬件系統(tǒng)和軟件系統(tǒng)兩大部分組成。硬件系統(tǒng)主要包括主控計算機、測試資源平臺、各被測件適配器(TUA)3大部分組成。其中,測試資源平臺是整個綜合自動檢測設(shè)備硬件的主干部分,由1553B總線類儀器、GPIB總線類儀器、VXI總線類儀器、ICA陣列接口、ITA測試接口組件組成。VXI總線類儀器由VXI總線零槽控制器、VXI總線測試儀器板卡、VXI總線開關(guān)板卡組成。測試資源平臺各儀器的輸入輸出信號引腳通過直通導(dǎo)線與ICA陣列接口的各信號孔相連。各被測件適配器的主要功能是用于航空電子系統(tǒng)各被測件(UUT)的信號引腳與平臺測試資源固定的ICA陣列接口進行匹配耦合,測試單元適配器通過各自的ITA測試接口組件與測試資源平臺的ICA陣列接口組件對接。主控計算機用于自動檢測設(shè)備的人機交互,完成所有測試任務(wù)的執(zhí)行、控制與管理任務(wù)。為實現(xiàn)這些功能,計算機需安裝與VXI零槽控制器通訊的1394總線通訊卡,與GPIB測試儀器通訊的IEEE488總線通訊卡,與1553B測試儀器通訊的1553B總線通訊卡。計算機軟件則需安裝VISA庫,ACCESS數(shù)據(jù)庫,配置所有硬件資源的底層驅(qū)動和TP運行環(huán)境組件。設(shè)備的總體結(jié)構(gòu)如圖1所示。
圖1 綜合自動檢測設(shè)備總體結(jié)構(gòu)
綜合自動檢測設(shè)備客戶端軟件用于系統(tǒng)的人機交互,整個客戶端軟件由ACCESS數(shù)據(jù)庫、TP管理模塊、測試報告管理模塊、用戶權(quán)限管理模塊、測試日志管理模塊等組成。
ACCESS數(shù)據(jù)庫用于整個系統(tǒng)使用過程中信息的存儲,按存儲的信息分類,ACCESS數(shù)據(jù)庫包含UUT信息表、TP信息表、測試報告信息表、用戶信息表、日志信息表。UUT信息表用于存儲UUT的中文名稱,型號,生產(chǎn)廠家及年月,產(chǎn)品序列號等信息。TP信息表用于存儲各被測件(UUT)的測試程序(TP)及其編制人員,版本號,編寫年月,版本修改說明等信息。測試報告信息表的主要功能是存儲TP運行后生成的測試報告測試時間和對應(yīng)的被測件型號等信息。用戶信息表用于存儲所有可以登錄客戶端軟件的用戶名、用戶密碼、用戶權(quán)限的信息。用戶權(quán)限分為管理員用戶和普通用戶。管理員用戶具備操作客戶端軟件所有功能的權(quán)限,包括添加刪除用戶信息等操作,普通用戶只限于運行TP,查看測試報告和瀏覽客戶端軟件運行日志等操作??蛻舳塑浖牡卿涍\行等信息則存儲于日志信息表中。
客戶端軟件功能模塊中的TP管理模塊的主要任務(wù)是完成被測件TP的加載運行,UUT目錄信息顯示以目錄樹的形式顯示航空電子系統(tǒng)所有被測件名稱或型號,點擊相應(yīng)的被測件后再點擊TP加載則導(dǎo)入需要的TP。平臺自檢模塊用于TP運行前平臺狀態(tài)的檢查。測試報告管理模塊完成測試報告的查找瀏覽打印等需求。用戶權(quán)限管理模塊對客戶端軟件的使用者進行管理,可以添加用戶、刪除用戶、更改用戶密碼和權(quán)限。用戶使用測試日志管理模塊可以瀏覽客戶端軟件以往的運行使用信息,打印報告。綜合檢測設(shè)備客戶端軟件是Windows操作系統(tǒng)下的一款應(yīng)用軟件。在Windows操作系統(tǒng)應(yīng)用程序開發(fā)中,微軟基礎(chǔ)類(Microsoft Foundation Classes, MFC)提供了在C++環(huán)境下編寫應(yīng)用程序的框架和引擎,豐富的類庫和開放的API接口特別便于開發(fā)者使用。整個軟件的總體結(jié)構(gòu)如圖2所示。
圖2 客戶端軟件總體結(jié)構(gòu)
綜合自動檢測設(shè)備在使用過程中涉及到較多的數(shù)據(jù)信息管理,如用戶的管理,UUT的管理,測試報告信息的管理等。采用數(shù)據(jù)庫技術(shù)對這些數(shù)據(jù)進行有效的組織和管理,能夠準確反映數(shù)據(jù)之間的聯(lián)系,方便用戶對整套檢測設(shè)備的操作。Access是一個關(guān)系數(shù)據(jù)庫管理系統(tǒng),可以根據(jù)用戶定義的關(guān)系進行存儲、處理和管理數(shù)據(jù),容量大,功能強,適合本客戶端軟件的開發(fā)。
客戶端軟件需要管理的信息包括使用者信息、被測件信息、TP信息、測試報告信息、客戶端軟件使用日志信息,根據(jù)這些信息分類制成5份數(shù)據(jù)表,各表根據(jù)各自需要管理的信息添加相應(yīng)的字段。
基于MFC類庫,比較流行的兩種數(shù)據(jù)庫操作方式有開放數(shù)據(jù)庫連接(Open Database Connectivity, ODBC)和ADO(ActiveX Data Object)數(shù)據(jù)庫訪問接口。ODBC是一種直觀和常用的數(shù)據(jù)庫操作方式,但其執(zhí)行速速與ADO方式相比存在一定劣勢,且ADO便于移植,不需要額外的配置,本客戶端軟件使用ADO對ACCESS數(shù)據(jù)庫進行操作。
2.2.1 ADO初始化
在本客戶端軟件應(yīng)用程序的編制過程中,使用ADO操作數(shù)據(jù)庫時必須先在應(yīng)用程序中首先初始化COM環(huán)境,做法是在MFC生成的應(yīng)用程序框架下應(yīng)用程序初始化子函數(shù)中加入API函數(shù):AfxOleInit();。在COM環(huán)境初始化完成后需要配置ADO運行所指出的動態(tài)鏈接庫msado15.dll,所有ADO操作的接口函數(shù)與數(shù)據(jù)結(jié)構(gòu)都依賴于該定義文件。在應(yīng)用程序中引入該文件的一種簡便做法是在stdafx.h頭文件中加入語句:#import "C:programfilescommon filessystemadomsado15.dll" rename_namespace("ADOBS") rename("EOF","adoEOF");using namespace ADOBS;。文件的具體路徑根據(jù)操作系統(tǒng)的安裝情況而定。
2.2.2 數(shù)據(jù)庫連接
進行數(shù)據(jù)庫連接是使用ADO操作ACCESS數(shù)據(jù)庫必須建立與ACCESS數(shù)據(jù)庫服務(wù)器與ACCESS數(shù)據(jù)庫文件的連接。本客戶端所有的數(shù)據(jù)庫表都存儲在數(shù)據(jù)庫文件ATE.accdb文件中,數(shù)據(jù)庫服務(wù)器是微軟的Microsoft.ACE.OLEDB.12.0。ADO連接ACCESS數(shù)據(jù)庫通過ADO連接對象指針_ConnectionPtr和ADO記錄集對象指針_RecordsetPtr實現(xiàn)。具體代碼如下:
_ConnectionPtr m_pCon; //ADO連接對象
_RecordsetPtr m_pRs; //創(chuàng)建ADO記錄集對象
_bstr_t strConnect="Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + bstr_t(DataPath) + "DataATE.accdb";
m_pCon.CreateInstance(_uuidof(Connection));
m_pCon->Open(strConnect,"","",adModeUnknown);
m_pRs.CreateInstance(_uuidof(Recordset));
2.2.3 數(shù)據(jù)表的操作
本客戶端軟件使用ADO操作ACCESS數(shù)據(jù)庫數(shù)據(jù)表的常用操作包括打開數(shù)據(jù)表記錄、獲取記錄字段,刪除記錄字段、寫入記錄字段。以本客戶端軟件的“ATE用戶信息管理”表為例,ADO定位到該表用戶名的代碼為:
theApp.IniAdo();
sql.Format("select 用戶名from ATE用戶信息管理");//格式化一個字符串寫入字符串變量sql中
m_pRs->Open((_variant_t)sql,_variant_t((IDispatch*)m_pCon,true), adOpenDynamic, adLockOptimistic, adCmdUnknown);
使用m_pRs->MoveNext();移動記錄集指針在表中指向的位置。
獲取字段“用戶名”的值使用函數(shù)GetCollect,參考代碼如下“
txt=m_pRs->GetCollect("用戶名").bstrVal;
新增一個空記錄則通過AddNew()方法,再用PuttCollect(字段名,值)輸入每個字段的值,最后再用Update()更新到數(shù)據(jù)庫中即可,參考代碼如下:
m_pRs ->AddNew();
m_pRs ->PutCollect(“用戶名”,_variant_t(Newname));
m_pRs ->Update();
要對數(shù)據(jù)庫中某一特定記錄進行刪除,需要移動記錄集指針定位到該記錄后再行刪除。移動記錄集指針使用MoveFirst()方法定位到表第一條記錄,使用MoveNext()方法往下移動記錄集指正,在通過獲取字段的值判斷是否是所需要刪除的記錄,刪除記錄時使用Delete(adAffectCurrent)方法刪除當(dāng)前記錄。參考代碼如下:
m_pRs -> Delete(adAffectCurrent);
2.2.4 對象釋放
在MFC使用ADO操作數(shù)據(jù)庫后,需要人為釋放ADO操作對象,整個釋放過程需要先關(guān)閉記錄集對象后關(guān)閉連接對象的順序,參考代碼如下:
m_pRs ->Close();//關(guān)閉記錄集對象
m_pCon->Close();//關(guān)閉連接集對象
TP管理模塊的主要功能是實現(xiàn)對應(yīng)被測件(UUT)測試程序的管理、加載、運行。航空電子系統(tǒng)各被測件(UUT)的測試程序(TP)根據(jù)測試需求文檔(TRD)使用ATLAS語言進行開發(fā),使用PAWS作為開發(fā)平臺。為防止用戶對TP進行篡改,TP以編譯之后的可執(zhí)行PAX文件的形式進行交付。PAX文件的運行環(huán)境為PAWS的RTS服務(wù)器,該系統(tǒng)是一個run-time測試執(zhí)行系統(tǒng),可實現(xiàn)自動測試控制、人工測試控制功能,但PAWS/RTS只有英文版,不便于航空電子系統(tǒng)維修人員使用,也不具備對測試系統(tǒng)信息的管理功能。
圖3 RTS服務(wù)器編程接口關(guān)系圖
RTS服務(wù)器可通過RTS控件集(RTS ActiveX controls)、RTS COM適配器(RTS COM Adapters)和TPS服務(wù)器(TPS Server)3種方式向客戶端程序提供服務(wù)[7],如圖3所示。在RTS服務(wù)器中,其中RTSMachine支持測試程序集TPS(Test Programe Set)的執(zhí)行和監(jiān)控,IOSubsystem為系統(tǒng)的輸入/輸出(I/O)操作提供支持,DataLogger提供系統(tǒng)的數(shù)據(jù)記錄功能,Debugger為系統(tǒng)提供給調(diào)試功能[7]。RTS控件集支持MFC、VB、Web瀏覽器等ActiveX容器,采用Idispatch自動化接口,使得腳本語言能夠驅(qū)動RTS服務(wù)。在本客戶端軟件中采用RTS控件集接口的方式進行開發(fā)。
圖4 MFC插入RTS ActiveX控件
圖5 RTS服務(wù)器狀態(tài)與動作邏輯
在MFC下開發(fā)RTS ActiveX控件集應(yīng)用程序需要創(chuàng)建RTS ActiveX類庫,安裝PAWS軟件會自帶創(chuàng)建該類庫。該類庫提供了RtsCombo Class、RtsControl Class、RtsMonitor Class三類ActiveX控件,如圖4所示。本客戶端軟件調(diào)用RTS的RTSMachine服務(wù),對應(yīng)在對話框中插入RtsCombo Class控件,同時會在MFC工程中添加rtscombo.h和rtscombo.cpp兩個文件。在rtscombo.cpp文件中定義了RTS ActiveX控件對應(yīng)的類class CRtscomno,其類屬性指向RTS服務(wù)器運行時的信息,類方法是與RTS服務(wù)器交互的接口函數(shù)。RTS服務(wù)器的動作邏輯如圖5所示。代碼編寫時使用類class CRtscomno創(chuàng)建RTS ActiveX控件對象,通過對象調(diào)用Attach方法連接RTS服務(wù)器,Load方法加載PAX格式TPS,Run方法運行TPS,Halt方法暫停TPS的運行,Unload方法卸載RTS服務(wù)器中的TP,get_StmInfo等方法獲取PAX運行中的信息。
為方便用戶快速準確導(dǎo)入需要的TP,在TP管理模塊中還集成了UUT目錄樹,航空電子系統(tǒng)的UUT名稱通過ACCESS數(shù)據(jù)庫導(dǎo)入到UUT目錄樹中。用戶需要測試某一UUT時,只要選中對應(yīng)的UUT名稱或型號,點擊對話框中的加載按鈕,則其PAX文件將自動傳到RTS服務(wù)器的Load方法,進行TP加載。
測試報告管理模塊主要實現(xiàn)用戶對平臺自檢、UUT測試歷次報告的查閱,其對話框如圖6所示。對話框分為自檢報告查閱欄、UUT測試報告查閱欄。在自檢報告查閱欄點擊下拉框會顯示以往所有平臺自檢報告名稱。自檢報告由平臺自檢TP生成,文件名按自檢時間命名。選中要查看的自檢報告名稱,點擊查看記錄該報告文檔將自動彈出。打印文檔時點擊文檔中的打印設(shè)置進行打印。UUT測試報告根據(jù)UUT的名稱進行分類,查閱UUT測試報告首先要從產(chǎn)品名稱下拉框中選中產(chǎn)品,選中產(chǎn)品后,點擊測試數(shù)據(jù)下拉框會顯示以往該產(chǎn)品的所有測試報告名稱。UUT測試報告由UUT測試TP生成,文件名按時間命名。選中測試報告名稱,點擊查看記錄,測試報告將自動彈出,打印操作同平臺自檢報告。
圖6 測試報告管理模塊對話框
用戶權(quán)限管理模塊實現(xiàn)對自動檢測設(shè)備使用著權(quán)限的授予與管理,其對話框如圖7所示。根據(jù)權(quán)限管理模塊的基本功能,對話框分為添加用戶欄、用戶名和密碼修改欄、刪除用戶欄。添加用戶欄用于添加新用戶,需要設(shè)置新用戶的用戶名、密碼和身份。用戶身份有兩種,分別是管理員和普通用戶,管理員用戶具備系統(tǒng)日志刪除、ATE平臺自檢和UUT測試的權(quán)限,普通用戶只具備ATE平臺自檢和UUT測試的權(quán)限。用戶名和密碼修改可以分別實現(xiàn)對用戶名和密碼的修改。刪除用戶可以根據(jù)實際需要把授予平臺使用權(quán)限的用戶刪除。錄入客戶端軟件的信息由ADO添加到ACCESS數(shù)據(jù)庫的用戶信息表中,用戶密碼信息在添加到數(shù)據(jù)表之前使用加密算法進行加密。信息加入數(shù)據(jù)表后將對應(yīng)的增加一條記錄。進行用戶名密碼修改時,ADO首先定位到用戶信息表中與舊用戶名或舊密碼相符的記錄,再將對話框中輸入的信息更新到對應(yīng)記錄的相關(guān)字段中。刪除用戶下拉欄會通過ADO獲取用戶信息表中所有用戶名,根據(jù)需要選擇要刪除的用戶名點擊刪除按鈕后,ADO將用戶信息表中與此用戶名對應(yīng)的記錄刪除。
圖7 權(quán)限管理模塊對話框
客戶端軟件日志管理模塊只有管理員用戶具備權(quán)限查看,用于查找綜合自動檢測設(shè)備的每一次使用記錄,其對話框如圖8所示。其中事件類型下拉框分為全部事件、平臺自檢事件、UUT測試事件、更改用戶信息事件,日期下拉框顯示全部日期和客戶端軟件所有使用被記錄的日期,用戶下拉框可選擇全部用戶和具有客戶端軟件使用權(quán)限的某一具體用戶。日志記錄顯示對話框顯示信息包括登錄時間、操作用戶、事件類型、事件標題、事件內(nèi)容。在事件類型選擇全部事件,用戶選擇全部用戶、日期選擇全部日期時,點擊查看記錄按鈕ADO將把記錄在ACCESS數(shù)據(jù)庫中客戶端軟件的每一次使用記錄傳至日志管理模塊對話框進行顯示。選中某一條記錄再點擊刪除記錄,管理員用戶可將顯示在對話框中的該記錄進行刪除,同時ACCESS數(shù)據(jù)庫中的記錄一并刪除。事件類型、用戶、日期下拉框選擇其他選項,對話框中顯示的記錄信息只顯示符合下拉框條件的信息,管理員可快速定位要查找的日志記錄。
圖8 日志管理模塊對話框
綜合自動檢測設(shè)備客戶端軟件作為用戶與檢測設(shè)備硬件系統(tǒng)交互的主要工具,其主要功能是實現(xiàn)用戶操作設(shè)備實現(xiàn)對各UUT的自動檢測功能,其人機對話窗口如圖9所示。選擇測試對象時可根據(jù)顯示UUT名稱或顯示UUT型號,下方樹狀目錄將顯示各UUT的名稱或型號。在樹狀目錄中選中要測試的UUT,點擊左下角加載按鈕,則該UUT的TP將導(dǎo)入RTS服務(wù)器,TP在RTS中運行時的打印信息將顯示在圖9對話框的測試過程信息顯示框中。如圖10所示是進行飛控計算機測試時,TP打印的測試過程信息。如圖9所示,在綜合自動檢測設(shè)備開啟后進行飛控計算機測試前TP會給出測試前準備信息,主要工作有安裝TUA連接設(shè)備。在設(shè)備安裝無誤之后,TP開始進行飛控計算機測試。首先TP程序要控制平臺電源給飛控計算機通電使飛控計算機進入運行狀態(tài)。上電過程中RTS根據(jù)TP中的上電程序代碼從ATLAS設(shè)備庫中分配電源資源并調(diào)用該資源的底層驅(qū)動與平臺電源通訊執(zhí)行對應(yīng)動作。上電之后,通過TP程序中使用萬用表測量飛控計算機電壓輸出引腳的電壓確定上電是否完成,RTS調(diào)用萬用表資源的過程同調(diào)用電源資源的過程。萬用表測得正常電壓后在測試過程信息中顯示“27V輸入電源正確!”后進入后續(xù)與飛控計算機的握手測試。握手測試過程中,TP驅(qū)動ATE平臺RS422總線仿真卡向飛控計算機發(fā)送“7F7F7F”命令字,飛控計算機進入維護測試模式后向外發(fā)送“8A8A8A”狀態(tài)字。TP驅(qū)動平臺RS422總線卡處于偵聽狀態(tài),當(dāng)接收到飛控計算機返回的狀態(tài)字后將測試過程信息顯示在測試過程信息顯示界面上。經(jīng)實際使用驗證,客戶端軟件運行飛控計算機TP進行后續(xù)模擬輸入測試、模擬輸出測試等測試操作均正常無誤。通過調(diào)用客戶端軟件的日志管理模塊可以查閱到用戶的該次測試登錄信息和測試項目信息,通過調(diào)用測試報告管理模塊可以調(diào)閱本次飛控計算機測試生成的測試報告。
圖9 UUT測試對話框及運行結(jié)果
圖10 UUT測試過程信息
航空電子系統(tǒng)綜合自動檢測設(shè)備作為集成度較高的信息化儀器平臺用于航空電子系統(tǒng)的維修保障可提高航空電子設(shè)備故障檢測的自動化水平與故障隔離率。平臺高度的信息化程度,較多的管理信息和自動化測試要求綜合自動檢測設(shè)備具備高效的人機交互能力。本文設(shè)計的基于MFC的航空電子系統(tǒng)綜合自動檢測設(shè)備客戶端軟件集合ACCESS數(shù)據(jù)庫的信息管理與RTS驅(qū)動TP自動測試的功能,使用戶可快速便捷與平臺會話進行UUT測試。通過交付使用驗證該客戶端軟件運行穩(wěn)定,能夠很好的控制ATE平臺完成型號直升機各電子設(shè)備的自動測試任務(wù),其用戶信息管理、測試報告管理、日志信息管理等功能極大地方便了用戶對整套系統(tǒng)的信息管理。