李 智
(中國電子科技集團(tuán)公司 第十研究所信息中心,成都 610036)
在航空、通訊、航天等綜合電子系統(tǒng)中數(shù)據(jù)總線接口格式差異較大,如:端序方面即有大端序,也有小端序的接口格式;長度方面既存在長度固定的接口定義,又存在長度動態(tài)變化的定義。因此,為了匹配不同設(shè)備的接口,控制類、接口類、測試類等應(yīng)用軟件代碼需要定義較多類型接口。當(dāng)某一設(shè)備接口發(fā)生變化后,需要修改軟件代碼,從而導(dǎo)致軟件適應(yīng)性以及通用性降低。如果軟件代碼與接口設(shè)計解耦,可降低軟件因接口變更的代碼修改,提升軟件的適應(yīng)性和通用性[1]。本文提出基于XML語言統(tǒng)一描述多類型并適用動態(tài)可擴展接口的方法,全文首先分析了常規(guī)數(shù)據(jù)報文、動態(tài)可擴展數(shù)據(jù)報文結(jié)構(gòu),然后提出了適應(yīng)動態(tài)可擴展報文的模型,最后給出了基于XML語言對動態(tài)可擴展報文的模型的實現(xiàn)方法。
常規(guī)數(shù)據(jù)報文一般由幀頭、長度、數(shù)據(jù)類型、數(shù)據(jù)內(nèi)容、校驗位、幀尾等結(jié)構(gòu)組成(如圖1所示)。接收系統(tǒng)根據(jù)幀頭、長度或幀尾接收完整的數(shù)據(jù)幀,并通過校驗位判斷接收的數(shù)據(jù)是否正確,校驗類型包括奇偶校驗、異或校驗及循環(huán)校驗等。接收系統(tǒng)根據(jù)數(shù)據(jù)報文中的數(shù)據(jù)類型調(diào)用對應(yīng)的計算邏輯,將數(shù)據(jù)報文中的數(shù)據(jù)內(nèi)容作為計算邏輯的輸入[2-3]。
圖1 常規(guī)數(shù)據(jù)報文結(jié)構(gòu)
常規(guī)數(shù)據(jù)報文中具體的數(shù)據(jù)類型確定了報文的長度,以及數(shù)據(jù)內(nèi)容區(qū)所攜帶的信息種類,因此,數(shù)據(jù)報文的封裝和解析邏輯較簡單,但一幀數(shù)據(jù)所攜帶的信息相對較少,可擴展性和適應(yīng)性較差[4-5]。
為適應(yīng)復(fù)雜綜合電子系統(tǒng)信息量大、靈活擴展等需求,出現(xiàn)大量動態(tài)可擴展數(shù)據(jù)報文的設(shè)計,具體表現(xiàn)為:一幀數(shù)據(jù)攜帶較多信息種類,并且數(shù)據(jù)種類可動態(tài)增減。
例如某信號分析系統(tǒng),信號處理設(shè)備向頻譜處理軟件輸出信號處理結(jié)果,數(shù)據(jù)幀除攜帶信號頻率、帶寬、幅度等參數(shù)外,可選擇攜帶頻譜數(shù)據(jù)、信號結(jié)果數(shù)據(jù)等,其數(shù)據(jù)報文結(jié)構(gòu)如圖2所示。當(dāng)主偵功能項的值為“0001H”,數(shù)據(jù)內(nèi)容中附加頻譜數(shù)據(jù)子幀,為“0000H”不附加該頻譜數(shù)據(jù)子幀。當(dāng)頻譜子幀中擴展標(biāo)志為1時嵌套接收機頻譜特性子子幀,為0則不嵌套。
圖2 動態(tài)可擴展數(shù)據(jù)報文
通過對常規(guī)數(shù)據(jù)報文、動態(tài)可擴展數(shù)據(jù)報文分析發(fā)現(xiàn),數(shù)據(jù)報文具有以下特性:
1)數(shù)據(jù)報文具有可逐層分解到基本單元的特性:無論是常規(guī)數(shù)據(jù)報文,還是動態(tài)可擴展數(shù)據(jù)報文,均具有可逐層分解到基本信息單元的特性,如:圖1慣導(dǎo)數(shù)據(jù)分解為高度、角速度、加速度等信息,形成基本的信息單元存放于慣導(dǎo)數(shù)據(jù)報文;圖2信號處理結(jié)果報文可分解為頻率信息單元、頻譜子幀等,頻譜子幀可繼續(xù)分解為頻率、帶寬等基本信息單元。
2)基本信息單元具有應(yīng)用信息表達(dá)或報文結(jié)構(gòu)表達(dá)作用:應(yīng)用信息用于物理信號量、系統(tǒng)參數(shù)等數(shù)據(jù)表達(dá),如圖1數(shù)據(jù)報文中的元素1信息單元表示高度物理量。信息單元結(jié)構(gòu)信息用于數(shù)據(jù)報文結(jié)構(gòu)的邏輯控制,如圖1幀頭、幀尾、數(shù)據(jù)長度、校驗值等,該部分結(jié)構(gòu)信息用于接收系統(tǒng)根據(jù)幀頭、長度或幀尾接收完整的數(shù)據(jù)幀,并通過校驗位判斷接收的數(shù)據(jù)是否正確。報文結(jié)構(gòu)表達(dá)主要實現(xiàn)發(fā)送系統(tǒng)和接收系統(tǒng)之間如何編譯和解譯信息。
3)動態(tài)可擴展數(shù)據(jù)報文中結(jié)構(gòu)表達(dá)類型增多:動態(tài)可擴展數(shù)據(jù)報文為適應(yīng)報文長度變化,增加了數(shù)據(jù)結(jié)構(gòu)表達(dá)的信息,如:圖2信號處理結(jié)果中功能項用于確定是否附加頻譜數(shù)據(jù)子幀,頻譜子幀中擴展標(biāo)識用于確定是否附加接收機頻譜特性子子幀。
常規(guī)數(shù)據(jù)報文可一次分解到基本信息單元。動態(tài)可擴展數(shù)據(jù)報文在主幀中包含子幀,甚至子幀繼續(xù)嵌套子幀,通過逐級分解,仍然可分解到基本信息單元。因此,根據(jù)可逐級分解的特點,可將數(shù)據(jù)報文形式化為樹形模型,如圖3所示。
圖3 適應(yīng)動態(tài)可擴展報文的模型
信息單元具有應(yīng)用信息表達(dá)或報文結(jié)構(gòu)表達(dá)作用的特性。通過分析大量采用動態(tài)可擴展報文的項目,發(fā)現(xiàn)表達(dá)結(jié)構(gòu)信息的信息單元越多,報文結(jié)構(gòu)形式越多。進(jìn)一步分析結(jié)構(gòu)信息表達(dá)的邏輯與報文動態(tài)擴展形式的關(guān)系,發(fā)現(xiàn)其邏輯控制類型可歸納為4類:選擇控制、位開關(guān)控制、循環(huán)控制、占位鏈接控制等4種。
綜上研究,如圖4所示,基本信息單元可歸納為應(yīng)用信息和結(jié)構(gòu)信息兩大類,結(jié)構(gòu)信息可分為幀結(jié)構(gòu)信息、邏輯控制信息。其中,邏輯控制信息包括:選擇控制、位開關(guān)控制、循環(huán)控制、占位鏈接控制等,各類控制定義和擴展方式如下:
圖4 基本信息單元分類歸納
選擇控制是指數(shù)據(jù)報文中所附加的子幀由邏輯控制信息單元的數(shù)值確定,即每一個數(shù)值對應(yīng)一種具體的子幀。例如圖5所示,主幀中功能項即為選擇控制信息單元,當(dāng)功能項值為1時,主幀動態(tài)擴展子幀1;當(dāng)功能項值為2時,主幀動態(tài)擴展子幀2;圖5當(dāng)功能項值為n時,主幀動態(tài)擴展子幀n。
圖5 選擇控制抽象示例
位開關(guān)控制是指數(shù)據(jù)報文中邏輯控制信息單元的二進(jìn)制比特位對應(yīng)一個具體的子幀,二進(jìn)制比特位值為1表示動態(tài)附加某對應(yīng)子幀,0表示不附加。例如圖6所示,主幀中功能項即為位開關(guān)控制信息單元,功能項的二進(jìn)制比特位對應(yīng)一個具體的子幀,如Bit0對應(yīng)子幀1,Bit7對應(yīng)子幀k。當(dāng)Bit0值為1時,附加子幀1,為0時不附加;當(dāng)Bit1為1時,附加子幀2,為0時不附加;當(dāng)Bit2為1時,附加子幀3,為0時不附加。
圖6 位開關(guān)控制抽象示例
循環(huán)控制是指數(shù)據(jù)報文中邏輯控制信息單元的值確定了子幀重復(fù)添加的次數(shù)。例如圖7所示,主幀中功能項即為循環(huán)控制信息單元,功能項的值為1時子幀在主幀中重復(fù)1次;功能項的值為2時子幀在主幀中重復(fù)2次;功能項的值為k時子幀在主幀中重復(fù)k次。
圖7 循環(huán)控制抽象示例
占位鏈接控制信息單元是一個虛擬的邏輯控制信息單元,在實際數(shù)據(jù)報文中不占空間,主要用于標(biāo)記子幀在主幀中動態(tài)擴展的位置,與選擇控制、位開關(guān)控制、循環(huán)控制搭配使用,如圖5、圖6、圖7中灰色底紋信息單元。
數(shù)據(jù)報文可分解到基本信息單元的特性使其可形式化為樹形表達(dá)結(jié)構(gòu),XML語言恰好具備樹形結(jié)構(gòu)的展現(xiàn)形式,而且XML節(jié)點屬性化描述方式可表述信息單元的大量信息,如:信息單元名稱、類型、值、數(shù)據(jù)類型、長度等等。同時,XML語言便于計算機對模型的識別,以及跨平臺之間信息傳遞。因此,XML語言是對動態(tài)可擴展報文的模型的最佳實現(xiàn)方式之一[6-7]。
框架結(jié)構(gòu)如下所示,Message為根節(jié)點,表示數(shù)據(jù)報文集合,多個數(shù)據(jù)報文并列作為兄弟節(jié)點,構(gòu)成Message的子節(jié)點集合。數(shù)據(jù)報文MsgData是由多個信息單元集合構(gòu)成,多個信息單元MsgDataElement并列作為兄弟節(jié)點。數(shù)據(jù)報文、信息單元所具有的特性通過XML節(jié)點屬性表述。如下所示:
……
……
……
子幀報文與主幀報文描述方式一樣,并作為主幀報文的兄弟節(jié)點。主幀報文中邏輯控制信息單元與占位鏈接控制信息單元配合使用,LinkTo屬性表示映射、鏈接關(guān)系。占位鏈接控制信息單元也通過其LinkTo屬性建立與具體子幀的映射關(guān)系[8]。
信息單元節(jié)點定義為MsgDataElement,是數(shù)據(jù)報文MsgData的子節(jié)點,多個信息單元并列作為兄弟節(jié)點。信息單元具有的特性通過XML節(jié)點的屬性進(jìn)行表達(dá),如:名稱、長度、信息單元類型、值類型、值、最小值、最大值、大小端、擴展標(biāo)識等。如下所示[9-10]:
Name表示信息單元名稱。NodeType表示信息單元類型,其值有應(yīng)用信息DataNode、選擇控制SelectCtrNode、位開關(guān)控制BitCtrlNode、循環(huán)控制CycleCtrlNode、占位鏈接控制LinkNode等。Length表示信息單元長度。Type表示信息單元數(shù)據(jù)值Value的數(shù)據(jù)類型,包括:整型Int、字符串String、布爾型Bool、IP地址型IP、浮點型Float、高精度Double、日期DataTime等等。Extend表示信息單元是否為擴展,邏輯控制類型信息單元值為True,應(yīng)用信息類型值為False。Endian表示信息單元大小端屬性。LValue、HValue表示信息單元值Value的取值范圍。LinkTo表示與其匹配的占位鏈接控制信息單元[8]。
根據(jù)動態(tài)可擴展報文模型,占位鏈接控制標(biāo)記子幀在主幀中的擴展位置,子幀動態(tài)添加方式主要通過選擇控制、位開關(guān)控制、循環(huán)控制等信息單元表示,并與占位鏈控制信息單元配合使用。
3.3.1 XML語言描述選擇控制邏輯
選擇控制信息單元與占位鏈接信息單元共同實現(xiàn)多個子幀的選擇添加。如下代碼片段所示,Name屬性為“選擇控制信息單元|【選擇控制】”的XML節(jié)點表示子幀在主幀中擴展的位置,Name屬性為“選擇控制信息單元”的XML節(jié)點和其子節(jié)點決定在占位鏈接中擴展的具體子幀。EnumElement節(jié)點集合通過LinkTo屬性與被選擇的子幀映射,當(dāng)Value屬性值為1時,表示EnumElement節(jié)點中“子幀1”被選中,其LinkTo屬性所指向的“子幀1”子報文動態(tài)添加到占位鏈接節(jié)點。如下所示:
……
……
3.3.2 XML語言描述位開關(guān)控制邏輯
位開關(guān)控制信息單元與占位鏈接信息單元共同實現(xiàn)多個子幀在指定位置是否添加的控制。如下代碼片段所示,Name屬性為“位控制節(jié)點|子消息1”的占位鏈接控制節(jié)點表示子幀1在主幀中擴展的位置,子幀2、子幀3在主幀中的位置描述與上類似。Name屬性為“位控制節(jié)點”的XML節(jié)點和其子節(jié)點決定對應(yīng)占位鏈接控制節(jié)點的子幀是否添加。Name屬性為“位控制節(jié)點”的XML節(jié)點按位拆分成ExtendElement節(jié)點集合,其每一個節(jié)點對應(yīng)一個子節(jié)點控制,例如:“子消息1”ExtendElement節(jié)點,其Start和End屬性代表在字節(jié)中的啟始BIT位置,LinkTo屬性指向其對應(yīng)的占位控制節(jié)點,當(dāng)“子消息1”ExtendElement節(jié)點Value值為0時表示不添加子幀1,否則添加子幀。如下所示:
……
……
3.3.3 XML語言描述循環(huán)控制邏輯
循環(huán)控制信息單元與占位鏈接信息單元共同實現(xiàn)子幀在指定位置重復(fù)添加次數(shù)。如下代碼片段所示,Name屬性為“循環(huán)控制信息單元|【循環(huán)控制】”的占位鏈接控制節(jié)點表示子幀1在主幀中重復(fù)添加的位置。Name屬性為“循環(huán)控制信息單元”的XML節(jié)點決定對應(yīng)占位鏈接控制節(jié)點所指向的子幀重復(fù)添加的次數(shù)。例如:當(dāng)“循環(huán)控制信息單元”的XML節(jié)點Value屬性值為2時,表示其LinkTo屬性指向的占位鏈接控制對應(yīng)子幀重復(fù)添加2次。
........
........
3.3.4 XML語言描述占位鏈接控制邏輯
占位鏈接控制信息單元是一個虛擬的信息單元,在實際數(shù)據(jù)報文中不占空間,無具體值。它表示對應(yīng)子幀在主幀中出現(xiàn)的位置,需要與選擇控制、位開關(guān)控制、循環(huán)控制等信息單元配對使用。選擇控制、位開關(guān)控制、循環(huán)控制等信息單元的LinkTo屬性指向?qū)?yīng)的占位鏈接控制信息單元。
........
本文通過分析常規(guī)數(shù)據(jù)報文格式以及動態(tài)可擴展數(shù)據(jù)報文格式,歸納出基本信息單元的類型和用途,以及具有的3種特性: 數(shù)據(jù)報文具有可逐層分解到基本單元的特性;基本信息單元具有應(yīng)用信息表達(dá)或報文結(jié)構(gòu)表達(dá)作用;動態(tài)可擴展數(shù)據(jù)報文中結(jié)構(gòu)表達(dá)類型增多等。根據(jù)分析結(jié)果,提出了適應(yīng)動態(tài)可擴展的數(shù)據(jù)報文描述模型。最后,使用XML語言給出了模型的框架描述方法,以及選擇控制、位開關(guān)控制、循環(huán)控制、占位鏈接控制的描述方法。以上方法已在配套多個型號工程的總線接口測試軟件中應(yīng)用,可有效實現(xiàn)軟件代碼與接口定義的解耦,提高軟件代碼的通用性和適應(yīng)性。