曹雄偉,倪琳軒,齊洪豪,鐘 媛
(航空工業(yè)洪都,江西 南昌,330024)
航空總線系統(tǒng)傳輸?shù)臄?shù)據(jù)通常種類繁多且數(shù)據(jù)量大,這就意味著其ICD 也比較復(fù)雜。傳統(tǒng)的ICD 管理軟件存在許多弊端,首先是數(shù)據(jù)庫結(jié)構(gòu)復(fù)雜,條理不清晰,不能對數(shù)據(jù)進(jìn)行分層批量修改[1]。二是兼容性、通用性不強(qiáng),只能對特定的航空總線ICD 進(jìn)行管理,很難在多種航空總線的測試中重復(fù)使用[2,3]。其三是軟件界面不夠友好,信號中各參數(shù)的顯示不能一目了然,ICD 包含的數(shù)據(jù)眾多且格式繁雜,界面設(shè)計的缺陷很容易使操作員在分析數(shù)據(jù)時出錯[4]。
針對傳統(tǒng)ICD 數(shù)據(jù)庫管理系統(tǒng)存在的上述問題,本文設(shè)計了ICD 數(shù)據(jù)庫管理系統(tǒng)。ICD 數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)模型如圖1 所示,數(shù)據(jù)模型采用鏈表結(jié)構(gòu)。此鏈表基于Visual C++的兩個模板類CTypedPtrList 和CArray 實(shí)現(xiàn),在數(shù)據(jù)庫中包括數(shù)據(jù)塊元素和數(shù)據(jù)元素。鏈表的每個節(jié)點(diǎn)對應(yīng)一個數(shù)據(jù)塊,包含數(shù)據(jù)塊屬性、數(shù)據(jù)屬性、下一數(shù)據(jù)塊的句柄,屬于該數(shù)據(jù)塊的信號數(shù)據(jù)子節(jié)點(diǎn)被鏈接到數(shù)據(jù)塊節(jié)點(diǎn)上。
圖1 ICD 數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)
ICD 數(shù)據(jù)庫管理系統(tǒng)基于數(shù)據(jù)描述表實(shí)現(xiàn),數(shù)據(jù)描述表代表了數(shù)據(jù)塊/信號的數(shù)據(jù)模型,我們把ICD的內(nèi)容按從屬關(guān)系分成三類數(shù)據(jù)描述表,它們分別是數(shù)據(jù)塊信息統(tǒng)計表、數(shù)據(jù)塊描述表和信號描述表。
數(shù)據(jù)塊信息統(tǒng)計表統(tǒng)計并列舉ICD 數(shù)據(jù)庫中全部數(shù)據(jù)塊的規(guī)范號、數(shù)據(jù)塊名稱、信號字?jǐn)?shù)等基本信息,該描述表的內(nèi)容在系統(tǒng)初始化和修改數(shù)據(jù)塊信息時刷新。數(shù)據(jù)塊描述表關(guān)聯(lián)了同源同目的的信號元素,描述了一個數(shù)據(jù)塊中全部信號元素的共同屬性,即塊屬性,根據(jù)塊屬性設(shè)計出以下字段:源、目標(biāo)、符合標(biāo)準(zhǔn)、傳輸類型、中斷、系統(tǒng)方式、允許重寫、更新周期和最大延遲時間。數(shù)據(jù)塊描述表還統(tǒng)計列舉了該塊中的全部信號,在數(shù)據(jù)塊描述表中對塊屬性的修改將使全部信號的塊屬性發(fā)生更新。信號描述表描述信號數(shù)據(jù)屬性,根據(jù)這些屬性設(shè)計出以下字段:碼制、更新速率、發(fā)送速率、單位、信號范圍、精度和分辨率。信號描述表會列舉屬于該信號的所有數(shù)據(jù)位,這些數(shù)據(jù)位可能單獨(dú)或組合在一起代表某種狀態(tài)組合,也可能代表某種參數(shù)值,用戶可以根據(jù)實(shí)際情況進(jìn)行編輯。信號數(shù)據(jù)位屬性如狀態(tài)描述、數(shù)據(jù)單位、起始位、停止位等均詳細(xì)描述于信號描述表中,對應(yīng)于各信號數(shù)據(jù)位字段。
為了兼容各種航空總線,本文設(shè)計了一個兼容各種航空總線標(biāo)準(zhǔn)的C++數(shù)據(jù)結(jié)構(gòu)來管理航空總線系統(tǒng)的數(shù)據(jù)塊元素和數(shù)據(jù)元素,該數(shù)據(jù)結(jié)構(gòu)如下所示:
軟件工作流程如圖2 所示:
圖2 軟件工作流程
根據(jù)軟件工作流程,ICD 數(shù)據(jù)庫管理系統(tǒng)的功能模塊劃分為:主模塊、初始化模塊、數(shù)據(jù)管理模塊、文件處理模塊、顯示模塊、數(shù)據(jù)庫模塊。各功能模塊間的關(guān)系見圖3。
圖3 系統(tǒng)各模塊間關(guān)系
主模塊是軟件運(yùn)行的主流程,根據(jù)用戶在ICD數(shù)據(jù)庫管理系統(tǒng)主界面進(jìn)行的添加、修改、刪除等操作,調(diào)用相應(yīng)的功能模塊完成對應(yīng)的功能。
初始化模塊實(shí)現(xiàn)主界面初始化和功能模塊初始化,其中功能模塊初始化包含數(shù)據(jù)管理模塊初始化、顯示模塊初始化和數(shù)據(jù)庫模塊初始化。數(shù)據(jù)管理模塊初始化ICD 數(shù)據(jù)結(jié)構(gòu);顯示模塊初始化樹形結(jié)構(gòu)和數(shù)據(jù)描述表;數(shù)據(jù)庫模塊初始化COM 庫,創(chuàng)建數(shù)據(jù)庫連接對象實(shí)例和記錄集對象實(shí)例。
數(shù)據(jù)管理模塊響應(yīng)顯示模塊發(fā)送的數(shù)據(jù)編輯消息,通過數(shù)據(jù)鏈表編輯數(shù)據(jù),并保存于ICD 數(shù)據(jù)庫中,同時向顯示模塊發(fā)送數(shù)據(jù)顯示消息,刷新數(shù)據(jù)描述表。消息結(jié)構(gòu)體定義如下:
對于某些航空總線,其ICD 數(shù)據(jù)要添加到數(shù)據(jù)中指定的記錄之后,由于ICD 中的數(shù)據(jù)之間是相互關(guān)聯(lián)的,添加數(shù)據(jù)可能會涉及到其他數(shù)據(jù)某些字段的改動,在此使用CArray 模板類,把指定記錄之后的數(shù)據(jù)臨時剪切到CArray 的對象中,待新數(shù)據(jù)插入記錄集后,把CArray 對象中數(shù)據(jù)的某些字段(如數(shù)據(jù)編號等)按照數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系做必要的修改后加入記錄集并刷新,保證了數(shù)據(jù)間的關(guān)聯(lián)性。
顯示模塊負(fù)責(zé)響應(yīng)數(shù)據(jù)管理模塊的數(shù)據(jù)顯示消息,加載指定的數(shù)據(jù)描述表,讀取用戶選擇的數(shù)據(jù)塊及數(shù)據(jù)信息并直觀地顯示在數(shù)據(jù)描述表中。用戶可在此模塊中修改數(shù)據(jù)塊和數(shù)據(jù)屬性,系統(tǒng)會向數(shù)據(jù)管理模塊發(fā)送修改消息,保存修改后的數(shù)據(jù),完成數(shù)據(jù)庫的修改更新。
文件處理模塊實(shí)現(xiàn)航空總線數(shù)據(jù)導(dǎo)入、查詢、分析、回放、報表生成和打印功能。根據(jù)通用性的設(shè)計思想,所有航空總線系統(tǒng)數(shù)據(jù)的定義都按特定的規(guī)范存儲在ICD 數(shù)據(jù)庫中,并且可以導(dǎo)出為db 格式的文件,實(shí)現(xiàn)了系統(tǒng)通用性。在對數(shù)據(jù)進(jìn)行事后分析時,可以通過此模塊導(dǎo)入db 格式的文件,完成數(shù)據(jù)回放功能。
ICD 數(shù)據(jù)庫管理系統(tǒng)采用ADO 技術(shù)訪問數(shù)據(jù)庫,它是基于OLE DB 接口上實(shí)現(xiàn)的COM 對象。
ADO 模型主要對象有3 個:Connection、Command 和Recordset,分別用來管理應(yīng)用程序與數(shù)據(jù)庫之間的通信,處理重復(fù)執(zhí)行的查詢,獲取數(shù)據(jù)。這些對象可以被獨(dú)立創(chuàng)建和釋放。為方便實(shí)現(xiàn)數(shù)據(jù)庫的訪問,我們將ADO 對象及其各自的方法封裝到數(shù)據(jù)庫模塊中,通過模塊對象調(diào)用其中的方法,實(shí)現(xiàn)數(shù)據(jù)庫的連接、打開、查詢和修改等操作。
系統(tǒng)基于MFC 的單文檔多視圖框架,ICD 數(shù)據(jù)庫采用Microsoft Office Access 2000,數(shù)據(jù)信息顯示在客戶區(qū)框架視圖的數(shù)據(jù)描述中,界面的初始化流程如圖4 所示。
圖4 界面的初始化流程
首先連接打開ICD 數(shù)據(jù)庫;然后初始化鏈表,打開數(shù)據(jù)塊記錄集,把塊屬性等信息加載于鏈表,遍歷記錄集,將該塊的信號數(shù)據(jù)生成該節(jié)點(diǎn)的子節(jié)點(diǎn),并依次將全部數(shù)據(jù)塊載入鏈表;其次關(guān)閉數(shù)據(jù)庫,初始化樹形結(jié)構(gòu),通過鏈表把ICD 數(shù)據(jù)庫的數(shù)據(jù)塊和信號名稱顯示于樹形結(jié)構(gòu);最后初始化數(shù)據(jù)描述表。軟件界面如圖5 所示。在界面中,左側(cè)樹形結(jié)構(gòu)供用戶選擇所需觀察的數(shù)據(jù)塊,樹形結(jié)構(gòu)的右鍵彈出菜單、系統(tǒng)菜單和工具欄提供了完整的數(shù)據(jù)操作功能,根據(jù)菜單,用戶可實(shí)現(xiàn)數(shù)據(jù)塊和信號數(shù)據(jù)的顯示、插入和刪除等操作。右側(cè)的數(shù)據(jù)描述表窗口供用戶瀏覽、維護(hù)及修改ICD 數(shù)據(jù)。
圖5 軟件界面
通過討論傳統(tǒng)ICD 數(shù)據(jù)庫管理軟件的弊端,本文提出了ICD 數(shù)據(jù)庫管理系統(tǒng)的設(shè)計思想,分析了ICD數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)、管理方式以及工作流程,介紹了系統(tǒng)各功能模塊的設(shè)計方法,得出了系統(tǒng)軟件界面,設(shè)計的軟件在實(shí)際運(yùn)行中取得了良好的效果。