王瑞雪,張振華,張 賓,程子兵,段笑笑
(北方自動控制技術研究所, 太原 030006)
元數(shù)據(jù)是描述數(shù)據(jù)的數(shù)據(jù),描述了資源信息所具有的根本特征信息,數(shù)據(jù)字典是一種元數(shù)據(jù)的管理系統(tǒng),為元數(shù)據(jù)提供了一個集中存儲空間。經常使用可擴展標記語言(XML)來描述元數(shù)據(jù),將元數(shù)據(jù)描述集中存儲生成數(shù)據(jù)字典。
參考文獻就關于XML和數(shù)據(jù)字典的開發(fā)與應用進行了研究與探討,其中有的針對XML文件在邊境指揮信息系統(tǒng)領域、軍事裝配技術和武器裝備保障領域中存儲模型數(shù)據(jù)、實現(xiàn)數(shù)據(jù)格式互轉和傳輸協(xié)議互通進行了研究。有的基于元數(shù)據(jù)描述語言構建了海量實驗數(shù)據(jù)管理平臺[1]、實現(xiàn)格式化數(shù)據(jù)鏈消息向結構化XML文檔的轉化[2]和消息字典[3]。有的在工業(yè)控制領域提出了多協(xié)議報文解析方法[4]、通用電文解析技術[5],在指揮信息系統(tǒng)領域設計了可變消息格式的報文解析工具,在多平臺數(shù)據(jù)環(huán)境下設計了解析工具[6]?,F(xiàn)在元數(shù)據(jù)和數(shù)據(jù)字典在指揮系統(tǒng)和工業(yè)等領域多有使用,雖然在國內的火控領域也提出了元數(shù)據(jù)和數(shù)據(jù)字典概念,但只是用于規(guī)范數(shù)據(jù)本身。
在炮兵壓制武器領域,指揮信息系統(tǒng)報文變更、報文類型隨炮兵各系列武器差異較大、彈種和設備擴展改進等導致的報文變更問題較為突出。首先,隨著各級指揮信息系統(tǒng)報文不斷優(yōu)化變更(“067”報文協(xié)議2015年9月版和2016年8月版),導致炮兵壓制武器火控系統(tǒng)報文協(xié)議進行適應性改進。其次,不同炮兵武器平臺和不同系列火箭炮、身管炮火控系統(tǒng)往往開發(fā)了各自的報文編解碼應用軟件,導致編解碼軟件通用性差。最后,隨著新型傳感器的發(fā)展,火控系統(tǒng)中新增彈種和設備,也對火控系統(tǒng)報文解碼提出了報文解析的可擴展性要求。
為了解決上述的3個問題,結合數(shù)據(jù)字典領域的當前研究現(xiàn)狀,和數(shù)據(jù)字典可以將數(shù)據(jù)流分解為具有實際含義數(shù)據(jù)值的功能。采用XML描述報文數(shù)據(jù)結構和約束條件的方法,建立指揮信息系統(tǒng)報文變更、炮兵各系列武器平臺火控系統(tǒng)不同以及彈種和設備擴展等原因導致的火控系統(tǒng)報文變更的通用報文解碼方法。
為了保證火控系統(tǒng)通信的安全可靠與實時性,經常使用CAN協(xié)議作為通信報文的傳輸協(xié)議。CAN通信報文的結構如圖1所示。
圖1 CAN報文結構
其中CAN報文由CAN報頭與CAN數(shù)據(jù)組成。其中CAN報頭由報文端口號等信息組成,報文數(shù)據(jù)項里包含真正需要傳輸?shù)臄?shù)據(jù)信息內容。一般都為顯示為十六進制數(shù)的二進制原始數(shù)據(jù),具有編碼性質和內容“塊”的特點,根據(jù)不同的通信協(xié)議,有不同的編碼含義。
對于每一個火控系統(tǒng)數(shù)據(jù)元,都要對它的所有約束信息和火控系統(tǒng)協(xié)議數(shù)據(jù)的組織結構進行規(guī)范化定義。這些信息就是描述報文元數(shù)據(jù)結構的關鍵信息。包括元數(shù)據(jù)ID、元數(shù)據(jù)名稱、元數(shù)據(jù)長度、長度單位、編碼類型、編碼名稱和編碼描述等內容。其中,元數(shù)據(jù)ID用于報文描述時確定元數(shù)據(jù);元數(shù)據(jù)名稱用于報文可視化組裝過程,將數(shù)據(jù)信息注入,是元數(shù)據(jù)全局使用的標識;元數(shù)據(jù)長度用于確定元數(shù)據(jù)在報文中占據(jù)的數(shù)據(jù)長度,長度單位分為Byte和Bit兩種(Byte是1個字節(jié)有8位,而Bit就是一位,是0或1);編碼類型、編碼名稱和編碼描述主要用于報文在可視化組裝過程中,解析代碼的自動生成過程。根據(jù)元數(shù)據(jù)名稱,應用元數(shù)據(jù)組建火控系統(tǒng)數(shù)據(jù)池,包含了所有要用到的火控系統(tǒng)元數(shù)據(jù)。
由于炮兵壓制武器領域存在的報文頻繁變更問題,對元數(shù)據(jù)提出了可以進行動態(tài)添加、刪除和修改的操作的需求。同時也要對火控系統(tǒng)數(shù)據(jù)元的約束信息和協(xié)議數(shù)據(jù)的組織結構進行描述和限制??紤]到這些需求,為了達到更好描述火控系統(tǒng)報文數(shù)據(jù)信息和方便對報文數(shù)據(jù)信息進行修改和擴展的目的,結合XML允許用戶自定義所需標記、可進行無限擴展、定義任意復雜度結構等性質,采用XML文件描述對于火控系統(tǒng)元數(shù)據(jù)的所有約束信息和報文數(shù)據(jù)組織結構。
根據(jù)第1節(jié)中的報文的數(shù)據(jù)結構,設計火控系統(tǒng)報文協(xié)議的XML描述格式,使用前需要事先編輯好XML配置文件,保存至本地,等待使用。
由于XML具有良好的可擴展性,XML非常適合用來描述元數(shù)據(jù)。采用XML文件描述元數(shù)據(jù)的約束信息和數(shù)據(jù)結構信息,這樣做的優(yōu)點是:數(shù)據(jù)字典結構清晰,具有良好的可維護性和可擴展性,而且在生成難度較低的同時具有很高的生成效率。下面以定位信息報文為例,展示存儲數(shù)據(jù)字典的XML配置文件內容格式。
下面是XML配置文件的一個示例,主要展示了定位信息的XML描述,這段代碼對報文里每個元數(shù)據(jù)的約束信息都清晰詳細的進行了描述:
Protocol>
針對XML協(xié)議配置文件,引用TinyXML開源庫,設計一種解析原始數(shù)據(jù)流的方法,將數(shù)據(jù)流與配置文件中的內容一一匹配,刷新數(shù)據(jù)池中的元數(shù)據(jù)值。流程如下:
1) 讀取XML配置文件后,判斷文件是否存在且格式正確,如果正確進入下一步,如果不正確,直接結束進程;
2) 讀取報文標識位,計算報文類型ID,判斷與XML配置文件中的默認報文ID是否一致,如果一致則進入下一步,如果不一致,則返回上一步,遍歷報文標識位,匹配相應的報文配置段;
3) 校驗報文字段的位置與長度,與元數(shù)據(jù)池中對應的元數(shù)據(jù)名的變量相對應進行復制,更新數(shù)據(jù)池中的元數(shù)據(jù)值。
報文解析工具由五個模塊組成:數(shù)據(jù)讀取模塊、數(shù)據(jù)處理模塊、讀取XML配置文件模塊、數(shù)據(jù)字典模塊和結果顯示模塊。
各個組成模塊的具體功能:
1) 數(shù)據(jù)讀取模塊:訪問數(shù)據(jù)庫,在線查詢數(shù)據(jù),將查詢后的數(shù)據(jù)緩存到內存中,進入數(shù)據(jù)處理模塊處理后解析;
2) 數(shù)據(jù)處理模塊:判別原始數(shù)據(jù)中的偽報頭與校驗碼,根據(jù)各個協(xié)議的具體要求,輸出相應的數(shù)據(jù)結構;
3) 讀取XML配置文件模塊:XML配置文件是數(shù)據(jù)字典的存儲形式,用來描述元數(shù)據(jù)模型,保存了對于元數(shù)據(jù)的所有約束信息和報文數(shù)據(jù)的組織結構,通過這個模塊將XML文件讀入;
4) 數(shù)據(jù)字典模塊:數(shù)據(jù)處理模塊輸出的數(shù)據(jù)結構與讀取XML配置文件模塊中的報文數(shù)據(jù)信息進行匹配,同時與數(shù)據(jù)字典對應元數(shù)據(jù)進行匹配,將數(shù)據(jù)信息賦值給數(shù)據(jù)池中的元數(shù)據(jù),向結果顯示模塊輸出數(shù)據(jù)信息,完成二進制數(shù)據(jù)向可視化數(shù)據(jù)轉化的解碼工作;
5) 結果顯示模塊:將數(shù)據(jù)解析的結果信息顯示在界面,將報文數(shù)據(jù)信息可視化。
Qt是一個用C++編寫的跨平臺開發(fā)框架,具有良好的跨平臺界面開發(fā)軟件,對象主要采用了信號和槽的通信方式,信號和槽機制可實現(xiàn)各模塊間的松耦合,使用Qt編程可以增強軟件的可擴展性和可移植性。
在開發(fā)時,采用Qt軟件開發(fā)C++程序,使用QtCreator完成:使用MySQL與C++的接口函數(shù)操作數(shù)據(jù)庫讀取相應數(shù)據(jù);對數(shù)據(jù)庫中查詢到的原始數(shù)據(jù)進行數(shù)據(jù)處理;調用數(shù)據(jù)字典方法;讀取XML配置文件。采用QtDesigner設計用戶界面,提高軟件的人機交互性能。
運行系統(tǒng)為Linux系統(tǒng),軟件為已完成的報文解析工具。
數(shù)據(jù)來源為已存儲在數(shù)據(jù)庫的CAN通信原始數(shù)據(jù),是火控系統(tǒng)在正常工作狀態(tài)下,各個單體相互通信的數(shù)據(jù)。
實驗過程是:啟動解析工具,選擇查詢條件參數(shù),從數(shù)據(jù)庫查找出信息后會在界面顯示原始數(shù)據(jù),選中待解析的一條數(shù)據(jù),加載XML配置文件,進行匹配解析,將解析結果顯示在界面。
功能檢測:可擴展性,改變協(xié)議內容,如交換兩個元數(shù)據(jù)的位置,只更改XML配置文件的內容,將X,Y位置交換,然后解析數(shù)據(jù),發(fā)現(xiàn)解析后數(shù)據(jù)的值位置發(fā)生變化。
圖2為某火控系統(tǒng)中,兩個單體通信數(shù)據(jù)的解析結果,可以看出解析工具將元數(shù)據(jù)清晰地解析并顯示。
圖2 數(shù)據(jù)解析結果
原始配置文件如第二節(jié)所示,修改后的配置文件如下:
圖3為在XML配置文件中修改了經度、緯度的相關描述信息,經緯度位置互換,對經度和緯度的編碼類型和描述進行了更改,并且刪除了高度信息的描述。
圖3 修改XML后解析結果
本文按照火控系統(tǒng)協(xié)議的數(shù)據(jù)結構,針對火控系統(tǒng)報文信息的組成原則和數(shù)據(jù)特征,結合XML的優(yōu)勢,用XML配置文件描述元數(shù)據(jù)信息,設計了通用的協(xié)議解析方法,解決了指揮信息系統(tǒng)報文變更、各系列炮兵壓制武器平臺差異和彈種設備擴展導致報文解碼擴展性差的問題。同時,基于數(shù)據(jù)字典技術開發(fā)了一個火控系統(tǒng)報文解析工具,具有界面操作和顯示功能,既可以驗證數(shù)據(jù)字典的可擴展性,又可以作為輔助軟件應用在火控系統(tǒng)中。
本文首次將數(shù)據(jù)字典應用于火控系統(tǒng)軟件應用開發(fā)中,建立了火控系統(tǒng)跨平臺通用報文解析方法;增強了火控系統(tǒng)報文解碼的可擴展性;實現(xiàn)了火控軟件與協(xié)議松耦合,削弱了協(xié)議信息組織方式變化對上層應用的影響。