APP下载

基于XML描述的动态可扩展数据报文的模型构建方法

2020-04-29

计算机测量与控制 2020年4期
关键词:报文动态节点

李 智

(中国电子科技集团公司 第十研究所信息中心,成都 610036)

0 引言

在航空、通讯、航天等综合电子系统中数据总线接口格式差异较大,如:端序方面即有大端序,也有小端序的接口格式;长度方面既存在长度固定的接口定义,又存在长度动态变化的定义。因此,为了匹配不同设备的接口,控制类、接口类、测试类等应用软件代码需要定义较多类型接口。当某一设备接口发生变化后,需要修改软件代码,从而导致软件适应性以及通用性降低。如果软件代码与接口设计解耦,可降低软件因接口变更的代码修改,提升软件的适应性和通用性[1]。本文提出基于XML语言统一描述多类型并适用动态可扩展接口的方法,全文首先分析了常规数据报文、动态可扩展数据报文结构,然后提出了适应动态可扩展报文的模型,最后给出了基于XML语言对动态可扩展报文的模型的实现方法。

1 数据报文结构分析

1.1 常规数据报文

常规数据报文一般由帧头、长度、数据类型、数据内容、校验位、帧尾等结构组成(如图1所示)。接收系统根据帧头、长度或帧尾接收完整的数据帧,并通过校验位判断接收的数据是否正确,校验类型包括奇偶校验、异或校验及循环校验等。接收系统根据数据报文中的数据类型调用对应的计算逻辑,将数据报文中的数据内容作为计算逻辑的输入[2-3]。

图1 常规数据报文结构

常规数据报文中具体的数据类型确定了报文的长度,以及数据内容区所携带的信息种类,因此,数据报文的封装和解析逻辑较简单,但一帧数据所携带的信息相对较少,可扩展性和适应性较差[4-5]。

1.2 动态可扩展数据报文

为适应复杂综合电子系统信息量大、灵活扩展等需求,出现大量动态可扩展数据报文的设计,具体表现为:一帧数据携带较多信息种类,并且数据种类可动态增减。

例如某信号分析系统,信号处理设备向频谱处理软件输出信号处理结果,数据帧除携带信号频率、带宽、幅度等参数外,可选择携带频谱数据、信号结果数据等,其数据报文结构如图2所示。当主侦功能项的值为“0001H”,数据内容中附加频谱数据子帧,为“0000H”不附加该频谱数据子帧。当频谱子帧中扩展标志为1时嵌套接收机频谱特性子子帧,为0则不嵌套。

图2 动态可扩展数据报文

1.3 常规和动态可扩展数据报文分析

通过对常规数据报文、动态可扩展数据报文分析发现,数据报文具有以下特性:

1)数据报文具有可逐层分解到基本单元的特性:无论是常规数据报文,还是动态可扩展数据报文,均具有可逐层分解到基本信息单元的特性,如:图1惯导数据分解为高度、角速度、加速度等信息,形成基本的信息单元存放于惯导数据报文;图2信号处理结果报文可分解为频率信息单元、频谱子帧等,频谱子帧可继续分解为频率、带宽等基本信息单元。

2)基本信息单元具有应用信息表达或报文结构表达作用:应用信息用于物理信号量、系统参数等数据表达,如图1数据报文中的元素1信息单元表示高度物理量。信息单元结构信息用于数据报文结构的逻辑控制,如图1帧头、帧尾、数据长度、校验值等,该部分结构信息用于接收系统根据帧头、长度或帧尾接收完整的数据帧,并通过校验位判断接收的数据是否正确。报文结构表达主要实现发送系统和接收系统之间如何编译和解译信息。

3)动态可扩展数据报文中结构表达类型增多:动态可扩展数据报文为适应报文长度变化,增加了数据结构表达的信息,如:图2信号处理结果中功能项用于确定是否附加频谱数据子帧,频谱子帧中扩展标识用于确定是否附加接收机频谱特性子子帧。

2 构建适应动态可扩展报文的模型

常规数据报文可一次分解到基本信息单元。动态可扩展数据报文在主帧中包含子帧,甚至子帧继续嵌套子帧,通过逐级分解,仍然可分解到基本信息单元。因此,根据可逐级分解的特点,可将数据报文形式化为树形模型,如图3所示。

图3 适应动态可扩展报文的模型

信息单元具有应用信息表达或报文结构表达作用的特性。通过分析大量采用动态可扩展报文的项目,发现表达结构信息的信息单元越多,报文结构形式越多。进一步分析结构信息表达的逻辑与报文动态扩展形式的关系,发现其逻辑控制类型可归纳为4类:选择控制、位开关控制、循环控制、占位链接控制等4种。

综上研究,如图4所示,基本信息单元可归纳为应用信息和结构信息两大类,结构信息可分为帧结构信息、逻辑控制信息。其中,逻辑控制信息包括:选择控制、位开关控制、循环控制、占位链接控制等,各类控制定义和扩展方式如下:

图4 基本信息单元分类归纳

2.1 选择控制

选择控制是指数据报文中所附加的子帧由逻辑控制信息单元的数值确定,即每一个数值对应一种具体的子帧。例如图5所示,主帧中功能项即为选择控制信息单元,当功能项值为1时,主帧动态扩展子帧1;当功能项值为2时,主帧动态扩展子帧2;图5当功能项值为n时,主帧动态扩展子帧n。

图5 选择控制抽象示例

2.2 位开关控制

位开关控制是指数据报文中逻辑控制信息单元的二进制比特位对应一个具体的子帧,二进制比特位值为1表示动态附加某对应子帧,0表示不附加。例如图6所示,主帧中功能项即为位开关控制信息单元,功能项的二进制比特位对应一个具体的子帧,如Bit0对应子帧1,Bit7对应子帧k。当Bit0值为1时,附加子帧1,为0时不附加;当Bit1为1时,附加子帧2,为0时不附加;当Bit2为1时,附加子帧3,为0时不附加。

图6 位开关控制抽象示例

2.3 循环控制

循环控制是指数据报文中逻辑控制信息单元的值确定了子帧重复添加的次数。例如图7所示,主帧中功能项即为循环控制信息单元,功能项的值为1时子帧在主帧中重复1次;功能项的值为2时子帧在主帧中重复2次;功能项的值为k时子帧在主帧中重复k次。

图7 循环控制抽象示例

2.4 占位链接控制

占位链接控制信息单元是一个虚拟的逻辑控制信息单元,在实际数据报文中不占空间,主要用于标记子帧在主帧中动态扩展的位置,与选择控制、位开关控制、循环控制搭配使用,如图5、图6、图7中灰色底纹信息单元。

3 XML语言实现动态可扩展报文模型

数据报文可分解到基本信息单元的特性使其可形式化为树形表达结构,XML语言恰好具备树形结构的展现形式,而且XML节点属性化描述方式可表述信息单元的大量信息,如:信息单元名称、类型、值、数据类型、长度等等。同时,XML语言便于计算机对模型的识别,以及跨平台之间信息传递。因此,XML语言是对动态可扩展报文的模型的最佳实现方式之一[6-7]。

3.1 动态可扩展报文XML框架结构

框架结构如下所示,Message为根节点,表示数据报文集合,多个数据报文并列作为兄弟节点,构成Message的子节点集合。数据报文MsgData是由多个信息单元集合构成,多个信息单元MsgDataElement并列作为兄弟节点。数据报文、信息单元所具有的特性通过XML节点属性表述。如下所示:

……

……

……

子帧报文与主帧报文描述方式一样,并作为主帧报文的兄弟节点。主帧报文中逻辑控制信息单元与占位链接控制信息单元配合使用,LinkTo属性表示映射、链接关系。占位链接控制信息单元也通过其LinkTo属性建立与具体子帧的映射关系[8]。

3.2 信息单元的XML节点定义

信息单元节点定义为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 XML语言描述对动态可扩展报文控制逻辑

根据动态可扩展报文模型,占位链接控制标记子帧在主帧中的扩展位置,子帧动态添加方式主要通过选择控制、位开关控制、循环控制等信息单元表示,并与占位链控制信息单元配合使用。

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属性指向对应的占位链接控制信息单元。

........

4 总结

本文通过分析常规数据报文格式以及动态可扩展数据报文格式,归纳出基本信息单元的类型和用途,以及具有的3种特性: 数据报文具有可逐层分解到基本单元的特性;基本信息单元具有应用信息表达或报文结构表达作用;动态可扩展数据报文中结构表达类型增多等。根据分析结果,提出了适应动态可扩展的数据报文描述模型。最后,使用XML语言给出了模型的框架描述方法,以及选择控制、位开关控制、循环控制、占位链接控制的描述方法。以上方法已在配套多个型号工程的总线接口测试软件中应用,可有效实现软件代码与接口定义的解耦,提高软件代码的通用性和适应性。

猜你喜欢

报文动态节点
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
国内动态
国内动态
国内动态
基于图连通支配集的子图匹配优化算法
基于报文类型的限速值动态调整
结合概率路由的机会网络自私节点检测算法
面向复杂网络的节点相似性度量*
采用贪婪启发式的异构WSNs 部分覆盖算法*