APP下载

基于树形结构的ARINC429解码库设计方法研究*

2022-06-23樊智勇魏士皓崔海青

计算机工程与科学 2022年6期
关键词:数据类型航电二进制

樊智勇,魏士皓,崔海青

(1.中国民航大学工程技术训练中心,天津 300300;2.中国民航大学电子信息与自动化学院,天津 300300)

1 引言

随着航空领域计算机及通信技术的发展,航空电子设备由原来的局部独立系统逐渐走向了综合化和一体化。由于飞机各种复杂功能的实现需要不同航空电子设备间相互协作,因此设备之间数据高效率和可靠传输变得异常重要[1]。航空总线是航电设备之间信息传输与共享的通道,是航电系统之间进行信息传输的重要媒介,是实现航电设备综合化的基础[2]。ARINC429作为一种广泛应用于民航客机的航空数据总线,它详细说明了系统规范中所定义的电气和电子接口,将飞机的各系统通过双绞线互连起来,定义了航电系统之间以及航电与非航电系统之间的接口和传输数据的格式[3]。

在实际航电设备的检测与维护中,要重点考虑被检测设备和ARINC429总线间的接口是否存在问题[4],但是采集到的ARINC429数据是32位二进制总线数据,不能直观地反映系统状态和参数的变化。工程人员需要根据接口控制文件ICD(Interface Control Document)逐个查询并将采集到的二进制数换算为系统参数。而目前ICD都是基于文档,以表格和段落注释的方式进行描述,翻阅查询都十分不便,且增加了系统调试的时间,这与总线测试需要快速准确地分析数据,以便及时定位并排除故障产生了矛盾。因此,如何才能简化文档管理,高效、准确地利用ICD对航电系统进行测试成为了航空总线测试领域研究的热点[2]。

许多学者对ICD进行了研究并提出了不同的ARINC429数据描述方法。文献[5]提出了将ARINC429数据按照数据类型打断、拆分,使用数据类型与位定义描述的方法;文献[6]在对嵌入式软件进行测试时,将ARINC429数据以类的形式直接写在程序中;文献[7]则将ICD文件转换成文本形式,独立于测试软件。本文在前人研究的基础上再结合实际需求,提出基于树形结构的ARINC429数据描述方法,并基于可扩展标记语言XML(eXtensible Markup Language)建立了相应的解码库。该解码库使用同一种描述规范对ARINC429数据进行完整描述,能够很方便地使用程序进行解码,并且解码库独立于测试软件,实现了测试软件与解码库的分离,便于后期修改与移植。

2 ARINC429规范特征分析及树形结构建模

ICD定义了航电系统之间的接口关系,十分庞杂。它定义了一整套总线系统数据,包括系统的控制逻辑,信号类型和方向,传输速度,参数名称、意义和单位,最大值和最小值,分辨率,最大/小传输间隔,比例关系,编码形式,故障代码等各种信息[8]。本文基于“ARINC SPECIFICATION 429 PART 1-17”分析了ARINC429规范并对其数据特征进行了提取。

树的概念在计算机中随处可见,对树结构的检索只需要进行一次搜索就可以完成遍历,当根节点确定了,树中任意两点间的关系也唯一确定了。为了方便对树形结构进行处理,研究人员提出了许多专门针对树的算法,也通过树形结构解决了数据储存和程序调用问题。因此,本文利用树形结构来设计ARINC429解码库,并将ICD映射为树形结构。由于ICD包含了一整套总线数据的定义,本文设计了一套合理的描述规范,不仅包含信号类型、传输速度、参数名称和信号单位等各种在仿真测试中有用的信息,而且还方便工程人员查阅。

2.1 ARINC429数据字分析及树形结构规则制定

本文基于“ARINC SPECIFICATION 429 PART 1-17”对ARINC429数据进行分析。标准的32位ARINC429数据字被分为标志位(LABEL)、源/目的识别码(SDI)、数据区(DATA)、符号状态矩阵(SSM)和奇偶校验位(PARITY)5个部分,如表1所示。

Table 1 Typical dataword format of ARINC429

(1) ARINC429规范对传输的每一个数据字都规定了LABEL号来识别其数据类型和相关参数。标号采用八进制编码,将1~8位分成3组,代表八进制数0~377。每个ARINC429数据字都有自己的LABEL号,因此LABEL号可以作为数据检索标记,用来定位数据位置。下面给出树形结构规则1:

规则1树形结构的根元素定义为“ARINC429”,标志位定义为树形结构根元素的子元素,记作“LABEL”,并为其添加属性“LABEL ID”,用来存放LABEL号。

(2) 虽然每个数据字都有自己的LABEL号,但是一个LABEL号可能包含多种不同编码方式,一种编码方式又可能适用于多个设备,如图1所示。因此,只用LABEL号无法对数据进行准确定位,还需要配合其他参数进行数据定位。下面给出树形结构规则2:

规则2为LABEL元素定义子元素,包含该LABEL号下所有的编码方式,记作“Code”,为编码方式“Code”添加子元素——“设备”,记作“Equipment”。

Figure 1 Relationship between LABEL and encoding mode图1 LABEL与编码方式的关系

考虑到采用同一种编码方式的ARINC429数据字的传输速率、最小传输间隔和最大传输间隔是一致的,于是为“Code”元素添加属性“Speed”“MinInterval”和“MaxInterval”,分别用于表示传输速度、最小传输间隔和最大传输间隔。并为“Equipment”添加属性——“Equipment ID”,用来记录设备号。

(3)ARINC429规范将一个数据字分为5个部分,但是其中数据区可能包含多种数据类型或空闲位,因此除了按照ARINC429规范中给定的分割方式外还需要对数据区进一步分割。数据区按照数据类型(也可看作是按照不同的参数)可以被划分为多个部分,每个部分被称为一个数据块,用“Parameter”表示。“Parameter”中包含多种用来描述该数据块信息的属性。下面给出树形结构规则3:

规则3为元素“Code”添加子元素——参数,记作“Parameter”并添加名称、数据类型(包括BNR(Binary NumbeR)、DIS(DIScrete)和BCD(Binary-Coded Decimal))、数据起始位与结束位、单位和分辨率等属性。

补充:增加数据类型BCD3。如图2所示的LABEL号“031”、设备号“020”的“Beacon Transponder Code”,该数据的18~29位不是标准的BCD数据,这里不是用4位二进制数表示而是用3位二进制数表示1位BCD数据。为了方便起见把该类型命名为一个新的数据类型——BCD3。

Figure 2 Data section of Beacon Transponder Code图2 Beacon Transponder Code数据区

(4) ARINC429数据在按照数据类型进行解码之后得到的数据不一定有真实的物理含义,还需要根据分辨率或者基值等进行调整。例如,甚高频全向信标频率字“VOR/ILS Frequency”,如图3所示,LABEL号为“034”,设备号为“002”。

Figure 3 Data section of VOR/ILS Frequency图3 VOR/ILS Frequency 数据区

对图3直接进行解码,得到的数据为9.3 MHz,已知甚高频全向信标的频率范围为108.00~117.95 MHz,很明显解得的数据不正确。这是由于甚高频全向信标的频率需要精确到小数点后2位,如果要完整表示甚高频全向信标的频率需要5位BCD类型的数据,而每个BCD类型的数据需要4位二进制来表示,因此数据区需要20位才能精确到小数点后2位,这已经超出了数据区的长度,很显然用1个ARINC429数据字无法表示。考虑到甚高频全向信标的频率都大于100,所以利用ARINC429数据进行传输时不传输百位数,传输的数据范围缩小为8.00~17.95 MHz,这样就可以用1个ARINC429数据字来表示该数据。所以,直接解码得到的数据需要进行数据还原才能得到真实的物理含义,下面给出树形结构规则4:

规则4为“Parameter”添加属性——基值(调整数)和分辨率,分别记作“Adjustment”和“Resolution”,用来对数据进行还原。

(5) 除了以上情况之外仍然有一些数据值较大,单独使用1个ARINC429数据字无法完整表示的数据,必须要使用多个ARINC429数据字进行联合解码才能得到其完整的释义。因此,在利用树形结构进行表述时需要明确指出当前数据需要几个数据字联合解码,当前数据字是第几个。下面给出树形结构规则5:

规则5为“Code”添加属性——成员个数,记作“Index”,用来描述解码所需的ARINC429数据字个数以及当前数据字所处的位置。

使用一个分数的形式来表示Index信息,分母表示联合解码需要的数据字个数,分子表示当前数据字所处的位置。在对数据解码时先判断是否需要联合解码,例如若当前ARINC429数据字的“Index”值为“2/3”,则表示需要3个ARINC429数据字才能描述当前数据的完整含义,并且当前ARINC429数据字为联合解码数据字中的第2个;当只需要1个ARINC429数据字就可以完整表示当前数据时,“Index”属性的值为“1/1”,也可以简写为“1”。

2.2 ARINC429树形结构描述规范整体结构

2.1节基于“ARINC SPECIFICATION 429 PART 1-17”文件对ARINC429数据进行了分析,并根据数据特点定义了5条规则。本文使用这些规则建立了树形结构的描述规范。描述规范的整体结构图及释义分别如图4和表2所示。通过图4可以很明显地看出其树形结构以及解码所需的必要信息。

Figure 4 Representation rule structure of ARINC429 based on XML tree structure图4 基于XML树形结构的ARINC429描述规范结构图

Table 2 Description specification of ARINC429 based on XML tree structure

3 基于XML的ARINC429总线解码库的实现

3.1 使用XML语言的优势及实现

XML是一种标记性、半结构化语言[9],存储数据具有内容与样式分离的特点,使用时只需关心数据本身的含义,不需要考虑如何处理数据样式[10],可以对数据进行标记、对数据类型进行定义以使其具有结构性[11]。XML文档能够表示为有序的树结构。在XML树中,内部节点表示元素或者属性,叶节点表示元素或属性的值,边表示元素子元素、元素值和属性值等结构关系[12]。

XML提供一个跨平台机制,不仅能够完整清晰地表达数据的结构和内容,方便对数据进行管理、储存和沟通;而且还具有适应性强、灵活性高、扩展性好、语义性强、结构性强、格式简单、具备自描述性、独立性和支持丰富的数据类型等特点[13,14]。XML作为一种数据交换格式,能够实现数据内容与形式的分离,可以根据实际需求建立有复杂层次的数据模型,并能够保持严密的规范使之具有较高的可读性。XML还可以很方便地对各种不同类型的数据进行描述,便于对数据进行整合和处理,能够提升数据管理效率[15]。基于以上优势,XML在许多领域得到了广泛应用,具有良好的可靠性与互操作性[16]。因此,XML对于大型的复杂文档是一种较为理想的语言。

基于XML使用STDU XML Editor Portable建立的ARINC429总线数据解码库如图5所示。

Figure 5 Example of ARINC429 decoding library in XML format图5 XML格式的ARINC429解码库示例

3.2 基于XML的解码库解码算法

基于XML建立的ARINC429总线数据解码库需要配套的解码软件进行解码。解码软件对采集到的ARINC429数据字解码并展示当前数据字具体参数的含义,这样工程人员能够直观地看到系统状态和参数的变化,进而缩短系统调试时间。解码软件和解码数据库在仿真测试平台中的位置如图6所示。

Figure 6 Position of decoding software in simulation platform图6 解码软件在仿真平台中的位置

在ARINC429规范中,以BNR、BCD和DIS共3种数据类型组合而成的数据字最为常见。在对ARINC429数据字进行解码时,首先按照数据块Parameter的大小对ARINC429数据字进行分割,然后根据XML文件中的“DataType”属性获取当前数据块的数据类型,根据不同的数据类型执行相应的子函数进行解码。其中,离散型数据利用一个二进制位来表示,诸如开关的断开与闭合之类的状态量,比较简单不再做详细介绍,本文主要说明BNR和BCD类型的解码。

3.2.1 BNR数据类型的解码

BNR是二进制编码,解码时首先需要将二进制数据转化为十进制;然后根据“SigBits”获取BNR数据的起始位与终止位;接着判断符号位,若符号位为正则直接进行加权求和,反之需要先将有效位的二进制码取补码(即反码加一),对补码进行加权求和。

计算公式如式(1)所示:

(1)

其中,i表示当前二进制数的位置,即第几位;L表示二进制数的总位数减1;Ei表示当前二进制数的值。

3.2.2 BCD数据类型的解码

BCD码是二进制编码的十进制数,即用二进制数来表示十进制数。首先根据“SigBits”获取BCD数据的起始位与终止位;然后通过移位再相与的方式取出特定的部分;最后将取出来的数据转换为十进制数。

计算公式如式(2)所示:

(2)

其中,i表示当前BCD数的位置,即第几位;L表示BCD数的总位数减1;Bi表示当前BCD数转换的十进制数值。

3.2.3 数据还原

为了获取数据真实的物理含义,需要使用之前定义的调整数“Adjustment”和分辨率“Resolution”对数据进行还原,先用分辨率“Resolution”进行比例调整,再用调整数“Adjustment”进行基值调整。

计算公式如式(3)所示:

Dacc=Value×Res+Adj

(3)

其中,Dacc表示精确值;Value表示直接解码得到的数据;Res表示分辨率;Adj表示调整数。

以图2所示的甚高频全向信标频率字为例进行解码,如式(4)所示:

100×0+101×3+102×9+103×0=930 MHz

(4)

由于甚高频全向信标频率字的分辨率为0.01 MHz,调整数为100,因此精确值如式(5)所示:

Dacc=Value×Res+Adj=

930×0.01+100=109.3 MHz

(5)

4 实验结果及分析

将建立的XML解码库接入到某型国产飞机航电系统通信导航半实物仿真平台上对本文提出的描述进行验证。该平台主要仿真部分通信和导航组件的输入输出接口特性,包含HF(High Frequency)、VHF(Very High Frequency)、NAV(NAVigation)、DME(Distance Measuring Equipment)、GPS(Global Positioning System)5类10个组件的接口仿真,具体表现为VHF4000、HF9301A、DME4000和NAV4000系列组件的逻辑功能仿真以及符合 ARINC429标准的电气接口仿真。仿真平台从数据采集板卡接收组件的ARINC429数据字,按照组件工作逻辑完成数据字的解码和转译,然后根据组件功能逻辑在对应的ARINC429输出接口上输出数据。

以该型飞机航电系统通信导航半实物仿真平台中DME的动态仿真为例,在进行总线数据测试时,通过编写的程序调用XML格式的解码库查找该数据并进行解析。解码结果如图7所示。

Figure 7 Dynamic simulation interface of DME in simulation platform图7 仿真平台中DME的动态仿真界面

由图7可知,DME仿真组件的“Tune Port A”接收到的ARINC429数据字为0x060001B8,查找相应的DME频率数据字定义可知,解析结果应为:

DME频率:118.00 MHz;

NAV模式:VOR;

DME模式:Standby Off。

仿真平台解析得到的结果与预期结果一致。

为了验证该解码库的普适性,对该平台采集到的所有数据进行测试。经测试,仿真平台中的5类10个仿真组件共32路数据都可以正确地对ARINC429数据字进行解码,这表明基于XML建立的ARINC429数据解码库能够对航电系统通信导航半实物仿真平台采集到的数据进行正确解码。

利用这种方法进行总线测试时,工程人员不需要翻阅查询ICD就可以快速获取到直观的测试数据,缩短了故障定位时间。通过对比在半实物仿真平台中使用基于XML建立解码库的方式与原系统直接将数据写入到程序中的方式,前者具有以下优势:

(1) 实现了测试软件与数据库的分离。编码库与测试软件相互独立,测试软件中不直接包含编码库,而是以调用的方式进行使用。还可以方便地修改解码库中编码的定义,无需再修改软件代码和重新编译。

(2) 降低了软件维护的工作量。相同的数据类型具有相同的解码算法,可以使用同一个解码子函数进行解码,与将ICD中的数据直接写入到程序中相比减少了代码量。

(3) XML具有良好的跨平台性,为后期系统的扩展性以及数据库的移植提供了便利。

5 结束语

本文基于ARINC429规范中的“MARK 33 DIGITAL INFORMATION TRANSFER SYSTEM (DITS) PART 1”文件分析了ARINC429编码的一般类型,提出了使用树形结构的ARINC429数据映射方法,并基于XML的树形结构与相关ICD文件建立了ARINC429数据的解码库。该解码库保留了数据的原结构,能够使用一个节点对数据进行完整描述;而且该解码库独立于仿真测试软件,采用调用解码库的方式进行解码,相较于之前将数据定义写入解码程序中的方式,该描述方法实现了编码库与编程语言、开发平台的分离,因此不需要修改解码程序就能够方便地对数据的定义进行增减删改,统一的描述规则使得解码程序可以复用,降低了编解码代码总量,大大降低了维护难度,且具有高度可移植性。

猜你喜欢

数据类型航电二进制
用二进制解一道高中数学联赛数论题
岷江犍为航电枢纽三期工程实施方案研究
如何理解数据结构中的抽象数据类型
民用飞机综合模块化航电系统资源状态监控技术研究
有趣的进度
二进制在竞赛题中的应用
民用飞机航电系统虚拟教学资源建设
基于SeisBase模型的地震勘探成果数据管理系统设计
线上众筹产品的特征分析与研究
相似度计算及其在数据挖掘中的应用