李 智
(中國電子科技集團公司 第十研究所信息中心,成都 610036)
在航空、通訊、航天等綜合電子系統中數據總線接口格式差異較大,如:端序方面即有大端序,也有小端序的接口格式;長度方面既存在長度固定的接口定義,又存在長度動態變化的定義。因此,為了匹配不同設備的接口,控制類、接口類、測試類等應用軟件代碼需要定義較多類型接口。當某一設備接口發生變化后,需要修改軟件代碼,從而導致軟件適應性以及通用性降低。如果軟件代碼與接口設計解耦,可降低軟件因接口變更的代碼修改,提升軟件的適應性和通用性[1]。本文提出基于XML語言統一描述多類型并適用動態可擴展接口的方法,全文首先分析了常規數據報文、動態可擴展數據報文結構,然后提出了適應動態可擴展報文的模型,最后給出了基于XML語言對動態可擴展報文的模型的實現方法。
常規數據報文一般由幀頭、長度、數據類型、數據內容、校驗位、幀尾等結構組成(如圖1所示)。接收系統根據幀頭、長度或幀尾接收完整的數據幀,并通過校驗位判斷接收的數據是否正確,校驗類型包括奇偶校驗、異或校驗及循環校驗等。接收系統根據數據報文中的數據類型調用對應的計算邏輯,將數據報文中的數據內容作為計算邏輯的輸入[2-3]。

圖1 常規數據報文結構
常規數據報文中具體的數據類型確定了報文的長度,以及數據內容區所攜帶的信息種類,因此,數據報文的封裝和解析邏輯較簡單,但一幀數據所攜帶的信息相對較少,可擴展性和適應性較差[4-5]。
為適應復雜綜合電子系統信息量大、靈活擴展等需求,出現大量動態可擴展數據報文的設計,具體表現為:一幀數據攜帶較多信息種類,并且數據種類可動態增減。
例如某信號分析系統,信號處理設備向頻譜處理軟件輸出信號處理結果,數據幀除攜帶信號頻率、帶寬、幅度等參數外,可選擇攜帶頻譜數據、信號結果數據等,其數據報文結構如圖2所示。當主偵功能項的值為“0001H”,數據內容中附加頻譜數據子幀,為“0000H”不附加該頻譜數據子幀。當頻譜子幀中擴展標志為1時嵌套接收機頻譜特性子子幀,為0則不嵌套。

圖2 動態可擴展數據報文
通過對常規數據報文、動態可擴展數據報文分析發現,數據報文具有以下特性:
1)數據報文具有可逐層分解到基本單元的特性:無論是常規數據報文,還是動態可擴展數據報文,均具有可逐層分解到基本信息單元的特性,如:圖1慣導數據分解為高度、角速度、加速度等信息,形成基本的信息單元存放于慣導數據報文;圖2信號處理結果報文可分解為頻率信息單元、頻譜子幀等,頻譜子幀可繼續分解為頻率、帶寬等基本信息單元。
2)基本信息單元具有應用信息表達或報文結構表達作用:應用信息用于物理信號量、系統參數等數據表達,如圖1數據報文中的元素1信息單元表示高度物理量。信息單元結構信息用于數據報文結構的邏輯控制,如圖1幀頭、幀尾、數據長度、校驗值等,該部分結構信息用于接收系統根據幀頭、長度或幀尾接收完整的數據幀,并通過校驗位判斷接收的數據是否正確。報文結構表達主要實現發送系統和接收系統之間如何編譯和解譯信息。
3)動態可擴展數據報文中結構表達類型增多:動態可擴展數據報文為適應報文長度變化,增加了數據結構表達的信息,如:圖2信號處理結果中功能項用于確定是否附加頻譜數據子幀,頻譜子幀中擴展標識用于確定是否附加接收機頻譜特性子子幀。
常規數據報文可一次分解到基本信息單元。動態可擴展數據報文在主幀中包含子幀,甚至子幀繼續嵌套子幀,通過逐級分解,仍然可分解到基本信息單元。因此,根據可逐級分解的特點,可將數據報文形式化為樹形模型,如圖3所示。

圖3 適應動態可擴展報文的模型
信息單元具有應用信息表達或報文結構表達作用的特性。通過分析大量采用動態可擴展報文的項目,發現表達結構信息的信息單元越多,報文結構形式越多。進一步分析結構信息表達的邏輯與報文動態擴展形式的關系,發現其邏輯控制類型可歸納為4類:選擇控制、位開關控制、循環控制、占位鏈接控制等4種。
綜上研究,如圖4所示,基本信息單元可歸納為應用信息和結構信息兩大類,結構信息可分為幀結構信息、邏輯控制信息。其中,邏輯控制信息包括:選擇控制、位開關控制、循環控制、占位鏈接控制等,各類控制定義和擴展方式如下:

圖4 基本信息單元分類歸納
選擇控制是指數據報文中所附加的子幀由邏輯控制信息單元的數值確定,即每一個數值對應一種具體的子幀。例如圖5所示,主幀中功能項即為選擇控制信息單元,當功能項值為1時,主幀動態擴展子幀1;當功能項值為2時,主幀動態擴展子幀2;圖5當功能項值為n時,主幀動態擴展子幀n。

圖5 選擇控制抽象示例
位開關控制是指數據報文中邏輯控制信息單元的二進制比特位對應一個具體的子幀,二進制比特位值為1表示動態附加某對應子幀,0表示不附加。例如圖6所示,主幀中功能項即為位開關控制信息單元,功能項的二進制比特位對應一個具體的子幀,如Bit0對應子幀1,Bit7對應子幀k。當Bit0值為1時,附加子幀1,為0時不附加;當Bit1為1時,附加子幀2,為0時不附加;當Bit2為1時,附加子幀3,為0時不附加。

圖6 位開關控制抽象示例
循環控制是指數據報文中邏輯控制信息單元的值確定了子幀重復添加的次數。例如圖7所示,主幀中功能項即為循環控制信息單元,功能項的值為1時子幀在主幀中重復1次;功能項的值為2時子幀在主幀中重復2次;功能項的值為k時子幀在主幀中重復k次。

圖7 循環控制抽象示例
占位鏈接控制信息單元是一個虛擬的邏輯控制信息單元,在實際數據報文中不占空間,主要用于標記子幀在主幀中動態擴展的位置,與選擇控制、位開關控制、循環控制搭配使用,如圖5、圖6、圖7中灰色底紋信息單元。
數據報文可分解到基本信息單元的特性使其可形式化為樹形表達結構,XML語言恰好具備樹形結構的展現形式,而且XML節點屬性化描述方式可表述信息單元的大量信息,如:信息單元名稱、類型、值、數據類型、長度等等。同時,XML語言便于計算機對模型的識別,以及跨平臺之間信息傳遞。因此,XML語言是對動態可擴展報文的模型的最佳實現方式之一[6-7]。
框架結構如下所示,Message為根節點,表示數據報文集合,多個數據報文并列作為兄弟節點,構成Message的子節點集合。數據報文MsgData是由多個信息單元集合構成,多個信息單元MsgDataElement并列作為兄弟節點。數據報文、信息單元所具有的特性通過XML節點屬性表述。如下所示:
……
……
……
子幀報文與主幀報文描述方式一樣,并作為主幀報文的兄弟節點。主幀報文中邏輯控制信息單元與占位鏈接控制信息單元配合使用,LinkTo屬性表示映射、鏈接關系。占位鏈接控制信息單元也通過其LinkTo屬性建立與具體子幀的映射關系[8]。
信息單元節點定義為MsgDataElement,是數據報文MsgData的子節點,多個信息單元并列作為兄弟節點。信息單元具有的特性通過XML節點的屬性進行表達,如:名稱、長度、信息單元類型、值類型、值、最小值、最大值、大小端、擴展標識等。如下所示[9-10]:
Name表示信息單元名稱。NodeType表示信息單元類型,其值有應用信息DataNode、選擇控制SelectCtrNode、位開關控制BitCtrlNode、循環控制CycleCtrlNode、占位鏈接控制LinkNode等。Length表示信息單元長度。Type表示信息單元數據值Value的數據類型,包括:整型Int、字符串String、布爾型Bool、IP地址型IP、浮點型Float、高精度Double、日期DataTime等等。Extend表示信息單元是否為擴展,邏輯控制類型信息單元值為True,應用信息類型值為False。Endian表示信息單元大小端屬性。LValue、HValue表示信息單元值Value的取值范圍。LinkTo表示與其匹配的占位鏈接控制信息單元[8]。
根據動態可擴展報文模型,占位鏈接控制標記子幀在主幀中的擴展位置,子幀動態添加方式主要通過選擇控制、位開關控制、循環控制等信息單元表示,并與占位鏈控制信息單元配合使用。
3.3.1 XML語言描述選擇控制邏輯
選擇控制信息單元與占位鏈接信息單元共同實現多個子幀的選擇添加。如下代碼片段所示,Name屬性為“選擇控制信息單元|【選擇控制】”的XML節點表示子幀在主幀中擴展的位置,Name屬性為“選擇控制信息單元”的XML節點和其子節點決定在占位鏈接中擴展的具體子幀。EnumElement節點集合通過LinkTo屬性與被選擇的子幀映射,當Value屬性值為1時,表示EnumElement節點中“子幀1”被選中,其LinkTo屬性所指向的“子幀1”子報文動態添加到占位鏈接節點。如下所示:
……
……
3.3.2 XML語言描述位開關控制邏輯
位開關控制信息單元與占位鏈接信息單元共同實現多個子幀在指定位置是否添加的控制。如下代碼片段所示,Name屬性為“位控制節點|子消息1”的占位鏈接控制節點表示子幀1在主幀中擴展的位置,子幀2、子幀3在主幀中的位置描述與上類似。Name屬性為“位控制節點”的XML節點和其子節點決定對應占位鏈接控制節點的子幀是否添加。Name屬性為“位控制節點”的XML節點按位拆分成ExtendElement節點集合,其每一個節點對應一個子節點控制,例如:“子消息1”ExtendElement節點,其Start和End屬性代表在字節中的啟始BIT位置,LinkTo屬性指向其對應的占位控制節點,當“子消息1”ExtendElement節點Value值為0時表示不添加子幀1,否則添加子幀。如下所示:
……
……
3.3.3 XML語言描述循環控制邏輯
循環控制信息單元與占位鏈接信息單元共同實現子幀在指定位置重復添加次數。如下代碼片段所示,Name屬性為“循環控制信息單元|【循環控制】”的占位鏈接控制節點表示子幀1在主幀中重復添加的位置。Name屬性為“循環控制信息單元”的XML節點決定對應占位鏈接控制節點所指向的子幀重復添加的次數。例如:當“循環控制信息單元”的XML節點Value屬性值為2時,表示其LinkTo屬性指向的占位鏈接控制對應子幀重復添加2次。
........
........
3.3.4 XML語言描述占位鏈接控制邏輯
占位鏈接控制信息單元是一個虛擬的信息單元,在實際數據報文中不占空間,無具體值。它表示對應子幀在主幀中出現的位置,需要與選擇控制、位開關控制、循環控制等信息單元配對使用。選擇控制、位開關控制、循環控制等信息單元的LinkTo屬性指向對應的占位鏈接控制信息單元。
........
本文通過分析常規數據報文格式以及動態可擴展數據報文格式,歸納出基本信息單元的類型和用途,以及具有的3種特性: 數據報文具有可逐層分解到基本單元的特性;基本信息單元具有應用信息表達或報文結構表達作用;動態可擴展數據報文中結構表達類型增多等。根據分析結果,提出了適應動態可擴展的數據報文描述模型。最后,使用XML語言給出了模型的框架描述方法,以及選擇控制、位開關控制、循環控制、占位鏈接控制的描述方法。以上方法已在配套多個型號工程的總線接口測試軟件中應用,可有效實現軟件代碼與接口定義的解耦,提高軟件代碼的通用性和適應性。