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