(中國直升機設計研究所,江西 景德鎮 333001)
針對不同型號飛機航空電子系統不同分系統分設備測試需求存在較大差異的實際情況,根據測設需求的并集[1],研制規模合理航空電子系統綜合自動檢測設備可以提高其通用性,提高多型號飛機航空電子系統的維修保障效率。目前,自動測試領域中使用的測試程序(TP)開發環境主要有面向儀器和面向信號兩種[2]。面向儀器的開發環境需要把測試程序和測設設備驅動集合在一起,使測試程序設計與開發周期較長、維護困難,可移植性、可重用性較差[2]。而基于PAWS的面向信號的開發環境,測試程序中只包含被測對象(UUT)端口的信號激勵與測試要求,測試程序運行環境可自動分配測試資源和路由測試通道,開發的測試程序具有測試資源無關性,提高了平臺資源配置利用的效率,利于測試程序的再移植[2-3]。同時,提高自動檢測設備的通用性可以解決檢測設備和UUT生命周期不匹配的問題[4]?;赑AWS的面向信號的開發環境使用ATLAS語言開發測試程序。ATLAS作為廣泛應用于軍事和電子測試的通用標準測試語言,具有設備無關性、信號相關性、可擴展性、并行性和定時功能,語法接近自然語言,文法限制不嚴格的特點[5]。為便于航空電子系統設備TP的管理,在PAWS開發平臺上開發的TP一般以生成TP運行環境可執行的PAX文件進行交付。然而,TP運行環境功能單一,人機界面過于簡單,為對航空電子系統等大型系統的綜合自動檢測設備的測試程序、測試報告、使用者權限、測試日志等進行管理,需要開發便于人機交互的客戶端軟件。
MFC(microsoft foundation classes)是微軟提供框架類庫,提供了強大的可視化編程環境[6]。依據ABBET標準,PAWS提供了如COM/DCOM、ActiveX等流行的接口功能。針對PAWS的TP運行環境缺乏強大的測試系統文件管理功能等問題,本文在MFC應用程序框架下,利用COM、ActiveX等接口技術實現了測試系統客戶端軟件對TP運行環境組件和ACCESS數據庫的調用,編制了測試程序管理、測試報告管理、用戶權限管理、測試日志管理等模塊,極大地方便了整套系統的使用與管理。
航空電子系統綜合自動檢測設備由硬件系統和軟件系統兩大部分組成。硬件系統主要包括主控計算機、測試資源平臺、各被測件適配器(TUA)3大部分組成。其中,測試資源平臺是整個綜合自動檢測設備硬件的主干部分,由1553B總線類儀器、GPIB總線類儀器、VXI總線類儀器、ICA陣列接口、ITA測試接口組件組成。VXI總線類儀器由VXI總線零槽控制器、VXI總線測試儀器板卡、VXI總線開關板卡組成。測試資源平臺各儀器的輸入輸出信號引腳通過直通導線與ICA陣列接口的各信號孔相連。各被測件適配器的主要功能是用于航空電子系統各被測件(UUT)的信號引腳與平臺測試資源固定的ICA陣列接口進行匹配耦合,測試單元適配器通過各自的ITA測試接口組件與測試資源平臺的ICA陣列接口組件對接。主控計算機用于自動檢測設備的人機交互,完成所有測試任務的執行、控制與管理任務。為實現這些功能,計算機需安裝與VXI零槽控制器通訊的1394總線通訊卡,與GPIB測試儀器通訊的IEEE488總線通訊卡,與1553B測試儀器通訊的1553B總線通訊卡。計算機軟件則需安裝VISA庫,ACCESS數據庫,配置所有硬件資源的底層驅動和TP運行環境組件。設備的總體結構如圖1所示。

圖1 綜合自動檢測設備總體結構
綜合自動檢測設備客戶端軟件用于系統的人機交互,整個客戶端軟件由ACCESS數據庫、TP管理模塊、測試報告管理模塊、用戶權限管理模塊、測試日志管理模塊等組成。
ACCESS數據庫用于整個系統使用過程中信息的存儲,按存儲的信息分類,ACCESS數據庫包含UUT信息表、TP信息表、測試報告信息表、用戶信息表、日志信息表。UUT信息表用于存儲UUT的中文名稱,型號,生產廠家及年月,產品序列號等信息。TP信息表用于存儲各被測件(UUT)的測試程序(TP)及其編制人員,版本號,編寫年月,版本修改說明等信息。測試報告信息表的主要功能是存儲TP運行后生成的測試報告測試時間和對應的被測件型號等信息。用戶信息表用于存儲所有可以登錄客戶端軟件的用戶名、用戶密碼、用戶權限的信息。用戶權限分為管理員用戶和普通用戶。管理員用戶具備操作客戶端軟件所有功能的權限,包括添加刪除用戶信息等操作,普通用戶只限于運行TP,查看測試報告和瀏覽客戶端軟件運行日志等操作。客戶端軟件的登錄運行等信息則存儲于日志信息表中。
客戶端軟件功能模塊中的TP管理模塊的主要任務是完成被測件TP的加載運行,UUT目錄信息顯示以目錄樹的形式顯示航空電子系統所有被測件名稱或型號,點擊相應的被測件后再點擊TP加載則導入需要的TP。平臺自檢模塊用于TP運行前平臺狀態的檢查。測試報告管理模塊完成測試報告的查找瀏覽打印等需求。用戶權限管理模塊對客戶端軟件的使用者進行管理,可以添加用戶、刪除用戶、更改用戶密碼和權限。用戶使用測試日志管理模塊可以瀏覽客戶端軟件以往的運行使用信息,打印報告。綜合檢測設備客戶端軟件是Windows操作系統下的一款應用軟件。在Windows操作系統應用程序開發中,微軟基礎類(Microsoft Foundation Classes, MFC)提供了在C++環境下編寫應用程序的框架和引擎,豐富的類庫和開放的API接口特別便于開發者使用。整個軟件的總體結構如圖2所示。

圖2 客戶端軟件總體結構
綜合自動檢測設備在使用過程中涉及到較多的數據信息管理,如用戶的管理,UUT的管理,測試報告信息的管理等。采用數據庫技術對這些數據進行有效的組織和管理,能夠準確反映數據之間的聯系,方便用戶對整套檢測設備的操作。Access是一個關系數據庫管理系統,可以根據用戶定義的關系進行存儲、處理和管理數據,容量大,功能強,適合本客戶端軟件的開發。
客戶端軟件需要管理的信息包括使用者信息、被測件信息、TP信息、測試報告信息、客戶端軟件使用日志信息,根據這些信息分類制成5份數據表,各表根據各自需要管理的信息添加相應的字段。
基于MFC類庫,比較流行的兩種數據庫操作方式有開放數據庫連接(Open Database Connectivity, ODBC)和ADO(ActiveX Data Object)數據庫訪問接口。ODBC是一種直觀和常用的數據庫操作方式,但其執行速速與ADO方式相比存在一定劣勢,且ADO便于移植,不需要額外的配置,本客戶端軟件使用ADO對ACCESS數據庫進行操作。
2.2.1 ADO初始化
在本客戶端軟件應用程序的編制過程中,使用ADO操作數據庫時必須先在應用程序中首先初始化COM環境,做法是在MFC生成的應用程序框架下應用程序初始化子函數中加入API函數:AfxOleInit();。在COM環境初始化完成后需要配置ADO運行所指出的動態鏈接庫msado15.dll,所有ADO操作的接口函數與數據結構都依賴于該定義文件。在應用程序中引入該文件的一種簡便做法是在stdafx.h頭文件中加入語句:#import "C:programfilescommon filessystemadomsado15.dll" rename_namespace("ADOBS") rename("EOF","adoEOF");using namespace ADOBS;。文件的具體路徑根據操作系統的安裝情況而定。
2.2.2 數據庫連接
進行數據庫連接是使用ADO操作ACCESS數據庫必須建立與ACCESS數據庫服務器與ACCESS數據庫文件的連接。本客戶端所有的數據庫表都存儲在數據庫文件ATE.accdb文件中,數據庫服務器是微軟的Microsoft.ACE.OLEDB.12.0。ADO連接ACCESS數據庫通過ADO連接對象指針_ConnectionPtr和ADO記錄集對象指針_RecordsetPtr實現。具體代碼如下:
_ConnectionPtr m_pCon; //ADO連接對象
_RecordsetPtr m_pRs; //創建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 數據表的操作
本客戶端軟件使用ADO操作ACCESS數據庫數據表的常用操作包括打開數據表記錄、獲取記錄字段,刪除記錄字段、寫入記錄字段。以本客戶端軟件的“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();移動記錄集指針在表中指向的位置。
獲取字段“用戶名”的值使用函數GetCollect,參考代碼如下“
txt=m_pRs->GetCollect("用戶名").bstrVal;
新增一個空記錄則通過AddNew()方法,再用PuttCollect(字段名,值)輸入每個字段的值,最后再用Update()更新到數據庫中即可,參考代碼如下:
m_pRs ->AddNew();
m_pRs ->PutCollect(“用戶名”,_variant_t(Newname));
m_pRs ->Update();
要對數據庫中某一特定記錄進行刪除,需要移動記錄集指針定位到該記錄后再行刪除。移動記錄集指針使用MoveFirst()方法定位到表第一條記錄,使用MoveNext()方法往下移動記錄集指正,在通過獲取字段的值判斷是否是所需要刪除的記錄,刪除記錄時使用Delete(adAffectCurrent)方法刪除當前記錄。參考代碼如下:
m_pRs -> Delete(adAffectCurrent);
2.2.4 對象釋放
在MFC使用ADO操作數據庫后,需要人為釋放ADO操作對象,整個釋放過程需要先關閉記錄集對象后關閉連接對象的順序,參考代碼如下:
m_pRs ->Close();//關閉記錄集對象
m_pCon->Close();//關閉連接集對象
TP管理模塊的主要功能是實現對應被測件(UUT)測試程序的管理、加載、運行。航空電子系統各被測件(UUT)的測試程序(TP)根據測試需求文檔(TRD)使用ATLAS語言進行開發,使用PAWS作為開發平臺。為防止用戶對TP進行篡改,TP以編譯之后的可執行PAX文件的形式進行交付。PAX文件的運行環境為PAWS的RTS服務器,該系統是一個run-time測試執行系統,可實現自動測試控制、人工測試控制功能,但PAWS/RTS只有英文版,不便于航空電子系統維修人員使用,也不具備對測試系統信息的管理功能。

圖3 RTS服務器編程接口關系圖
RTS服務器可通過RTS控件集(RTS ActiveX controls)、RTS COM適配器(RTS COM Adapters)和TPS服務器(TPS Server)3種方式向客戶端程序提供服務[7],如圖3所示。在RTS服務器中,其中RTSMachine支持測試程序集TPS(Test Programe Set)的執行和監控,IOSubsystem為系統的輸入/輸出(I/O)操作提供支持,DataLogger提供系統的數據記錄功能,Debugger為系統提供給調試功能[7]。RTS控件集支持MFC、VB、Web瀏覽器等ActiveX容器,采用Idispatch自動化接口,使得腳本語言能夠驅動RTS服務。在本客戶端軟件中采用RTS控件集接口的方式進行開發。

圖4 MFC插入RTS ActiveX控件

圖5 RTS服務器狀態與動作邏輯
在MFC下開發RTS ActiveX控件集應用程序需要創建RTS ActiveX類庫,安裝PAWS軟件會自帶創建該類庫。該類庫提供了RtsCombo Class、RtsControl Class、RtsMonitor Class三類ActiveX控件,如圖4所示。本客戶端軟件調用RTS的RTSMachine服務,對應在對話框中插入RtsCombo Class控件,同時會在MFC工程中添加rtscombo.h和rtscombo.cpp兩個文件。在rtscombo.cpp文件中定義了RTS ActiveX控件對應的類class CRtscomno,其類屬性指向RTS服務器運行時的信息,類方法是與RTS服務器交互的接口函數。RTS服務器的動作邏輯如圖5所示。代碼編寫時使用類class CRtscomno創建RTS ActiveX控件對象,通過對象調用Attach方法連接RTS服務器,Load方法加載PAX格式TPS,Run方法運行TPS,Halt方法暫停TPS的運行,Unload方法卸載RTS服務器中的TP,get_StmInfo等方法獲取PAX運行中的信息。
為方便用戶快速準確導入需要的TP,在TP管理模塊中還集成了UUT目錄樹,航空電子系統的UUT名稱通過ACCESS數據庫導入到UUT目錄樹中。用戶需要測試某一UUT時,只要選中對應的UUT名稱或型號,點擊對話框中的加載按鈕,則其PAX文件將自動傳到RTS服務器的Load方法,進行TP加載。
測試報告管理模塊主要實現用戶對平臺自檢、UUT測試歷次報告的查閱,其對話框如圖6所示。對話框分為自檢報告查閱欄、UUT測試報告查閱欄。在自檢報告查閱欄點擊下拉框會顯示以往所有平臺自檢報告名稱。自檢報告由平臺自檢TP生成,文件名按自檢時間命名。選中要查看的自檢報告名稱,點擊查看記錄該報告文檔將自動彈出。打印文檔時點擊文檔中的打印設置進行打印。UUT測試報告根據UUT的名稱進行分類,查閱UUT測試報告首先要從產品名稱下拉框中選中產品,選中產品后,點擊測試數據下拉框會顯示以往該產品的所有測試報告名稱。UUT測試報告由UUT測試TP生成,文件名按時間命名。選中測試報告名稱,點擊查看記錄,測試報告將自動彈出,打印操作同平臺自檢報告。

圖6 測試報告管理模塊對話框
用戶權限管理模塊實現對自動檢測設備使用著權限的授予與管理,其對話框如圖7所示。根據權限管理模塊的基本功能,對話框分為添加用戶欄、用戶名和密碼修改欄、刪除用戶欄。添加用戶欄用于添加新用戶,需要設置新用戶的用戶名、密碼和身份。用戶身份有兩種,分別是管理員和普通用戶,管理員用戶具備系統日志刪除、ATE平臺自檢和UUT測試的權限,普通用戶只具備ATE平臺自檢和UUT測試的權限。用戶名和密碼修改可以分別實現對用戶名和密碼的修改。刪除用戶可以根據實際需要把授予平臺使用權限的用戶刪除。錄入客戶端軟件的信息由ADO添加到ACCESS數據庫的用戶信息表中,用戶密碼信息在添加到數據表之前使用加密算法進行加密。信息加入數據表后將對應的增加一條記錄。進行用戶名密碼修改時,ADO首先定位到用戶信息表中與舊用戶名或舊密碼相符的記錄,再將對話框中輸入的信息更新到對應記錄的相關字段中。刪除用戶下拉欄會通過ADO獲取用戶信息表中所有用戶名,根據需要選擇要刪除的用戶名點擊刪除按鈕后,ADO將用戶信息表中與此用戶名對應的記錄刪除。

圖7 權限管理模塊對話框
客戶端軟件日志管理模塊只有管理員用戶具備權限查看,用于查找綜合自動檢測設備的每一次使用記錄,其對話框如圖8所示。其中事件類型下拉框分為全部事件、平臺自檢事件、UUT測試事件、更改用戶信息事件,日期下拉框顯示全部日期和客戶端軟件所有使用被記錄的日期,用戶下拉框可選擇全部用戶和具有客戶端軟件使用權限的某一具體用戶。日志記錄顯示對話框顯示信息包括登錄時間、操作用戶、事件類型、事件標題、事件內容。在事件類型選擇全部事件,用戶選擇全部用戶、日期選擇全部日期時,點擊查看記錄按鈕ADO將把記錄在ACCESS數據庫中客戶端軟件的每一次使用記錄傳至日志管理模塊對話框進行顯示。選中某一條記錄再點擊刪除記錄,管理員用戶可將顯示在對話框中的該記錄進行刪除,同時ACCESS數據庫中的記錄一并刪除。事件類型、用戶、日期下拉框選擇其他選項,對話框中顯示的記錄信息只顯示符合下拉框條件的信息,管理員可快速定位要查找的日志記錄。

圖8 日志管理模塊對話框
綜合自動檢測設備客戶端軟件作為用戶與檢測設備硬件系統交互的主要工具,其主要功能是實現用戶操作設備實現對各UUT的自動檢測功能,其人機對話窗口如圖9所示。選擇測試對象時可根據顯示UUT名稱或顯示UUT型號,下方樹狀目錄將顯示各UUT的名稱或型號。在樹狀目錄中選中要測試的UUT,點擊左下角加載按鈕,則該UUT的TP將導入RTS服務器,TP在RTS中運行時的打印信息將顯示在圖9對話框的測試過程信息顯示框中。如圖10所示是進行飛控計算機測試時,TP打印的測試過程信息。如圖9所示,在綜合自動檢測設備開啟后進行飛控計算機測試前TP會給出測試前準備信息,主要工作有安裝TUA連接設備。在設備安裝無誤之后,TP開始進行飛控計算機測試。首先TP程序要控制平臺電源給飛控計算機通電使飛控計算機進入運行狀態。上電過程中RTS根據TP中的上電程序代碼從ATLAS設備庫中分配電源資源并調用該資源的底層驅動與平臺電源通訊執行對應動作。上電之后,通過TP程序中使用萬用表測量飛控計算機電壓輸出引腳的電壓確定上電是否完成,RTS調用萬用表資源的過程同調用電源資源的過程。萬用表測得正常電壓后在測試過程信息中顯示“27V輸入電源正確!”后進入后續與飛控計算機的握手測試。握手測試過程中,TP驅動ATE平臺RS422總線仿真卡向飛控計算機發送“7F7F7F”命令字,飛控計算機進入維護測試模式后向外發送“8A8A8A”狀態字。TP驅動平臺RS422總線卡處于偵聽狀態,當接收到飛控計算機返回的狀態字后將測試過程信息顯示在測試過程信息顯示界面上。經實際使用驗證,客戶端軟件運行飛控計算機TP進行后續模擬輸入測試、模擬輸出測試等測試操作均正常無誤。通過調用客戶端軟件的日志管理模塊可以查閱到用戶的該次測試登錄信息和測試項目信息,通過調用測試報告管理模塊可以調閱本次飛控計算機測試生成的測試報告。

圖9 UUT測試對話框及運行結果

圖10 UUT測試過程信息
航空電子系統綜合自動檢測設備作為集成度較高的信息化儀器平臺用于航空電子系統的維修保障可提高航空電子設備故障檢測的自動化水平與故障隔離率。平臺高度的信息化程度,較多的管理信息和自動化測試要求綜合自動檢測設備具備高效的人機交互能力。本文設計的基于MFC的航空電子系統綜合自動檢測設備客戶端軟件集合ACCESS數據庫的信息管理與RTS驅動TP自動測試的功能,使用戶可快速便捷與平臺會話進行UUT測試。通過交付使用驗證該客戶端軟件運行穩定,能夠很好的控制ATE平臺完成型號直升機各電子設備的自動測試任務,其用戶信息管理、測試報告管理、日志信息管理等功能極大地方便了用戶對整套系統的信息管理。