1、2023 年第 9 期182信息技术与信息化网络与信息安全机电管理系统通信数据服务工具设计与实现刘水桥1 王佳明1 王丹丹1LIU Shuiqiao WANG Jiaming WANG Dandan 摘要 机载机电管理应用通信包括机电应用与机载总线的数据交互和机电管理应用间的交互。机载总线接口控制文件定义了系统与系统间的接口信息情况,即机电管理应用通信数据由机载总线接口文件控制。为了实现机电应用业务逻辑与数据解析功能解耦,需要对机载总线接口控制文件进行预处理,鉴于此,研究了机电管理系统的数据流,提供一种从机电接口控制文件解析数据为机电应用提供通信数据服务功能的设计与实现方法。关键词 机电管理;
2、分区操作系统;接口控制文件;数据解析 doi:10.3969/j.issn.1672-9528.2023.09.0401.航空工业西安计算技术研究所 陕西 西安 7100680 引言综合模块化航空电子系统(IMA)提出采用分区操作系统来确保应用间的时空隔离,从而满足机载应用高可靠性、高可用性以及高服务性的需求1。机电系统管理软件运行于符合 ARINC653 标准的分区操作系统上,将系统划分为不同的分区,每个分区中运行的应用不会受到其他分区应用的影响。在 IMA 系统中,应用与总线通信以及应用间通信是实现模块化集成的重要基础,是实现航空机电系统自动化的关键技术。飞机的机电管理系统为飞机正常运行时
3、的安全性、可靠性、机动性和战斗力等技术性所需的服务,由于其功能的复杂性,系统处理的信号数量大、逻辑关系复杂、系统关联关系多2。机载总线协议的接口控制文件(interface control document,ICD),用 于说明系统内部及系统与系统间的接口信息情况,记录了包括信号类型、信号值、信号偏移量、信号传输路径等各类信息,一般的机电 ICD 结构如图 1 所示。由于体量、安全性以及运行速率等原因,机电应用通常无法直接处理机电 ICD。需要一种通用的 ICD 解析工具将 ICD 的解析工作和机电应用的数据处理工作解耦。机电管理总线接口控制文件总线协议数据帧格式定义值域其他控制参数ARINC
4、429IEEE1394a其他航空总线类型信号名称信号源信号目的地所属消息ID数据类型发出该信号的设备目的设备模拟量离散量偏移量信号位宽范围数据单位分辨率所属分区其他参数起始位最大值最小值模拟量的物理单位mAkPa模拟量缩放系数处理该信号的分区图 1 机载 ICD 数据结构 2023 年第 9 期183信息技术与信息化网络与信息安全1 机电管理应用的数据流为了满足综合模块化电子系统(IMA)对实时操作系统提出的高可靠性、高可用性以及高服务性的需求,ARINC 在1997年1月发布了ARINC653(航空电子应用软件标准接口),并于 2003 年 7 月发布了 ARINC653 Supplemen
5、t 1,对区间管理、区间通信及健康监测部分进行了补充说明,用以规范航空电子设备和系统的开发3。为了达到这个目标,ARINC653标准将系统划分为不同的分区,每个分区中运行的应用不会受到其他分区应用的影响4。机电管理系统应用软件是一组运行在符合 ARINC653 标准的分区操作系统上的嵌入式软件,用来处理飞机的环控、液压、燃油等飞行相关的数据,难以直接处理 xml 或者 excel格式的总线接口控制文件数据,并且在软件开发迭代过程中不宜因为 ICD 文件的变更而频繁更改系统内部的数据处理逻辑,因此需要开发实现一种独立于机电管理软件开发之外的处理方法或技术,从总线接口控制文件中获取机电各应用需要处
6、理的信号,并根据信号属性生成机电应用可直接读取的文件,供机电应用运行或编译时使用5。如图 2 所示,分区操作系统上的数据传输包括 IO 分区与总线的信息传输以及 IO 分区与其他功能分区的分区间通信。IO 分区与总线信息交互时需要获取信号所属总线节点、所属消息 ID,信号在所属消息中的偏移等信息,IO 分区拿到信号值后将其存入提前开辟的缓冲区中。相应的,IO 分区通过总线驱动发送消息到总线时需要向驱动传输经过处理后的信号所在缓冲区地址、信号所属的消息 ID 以及发送给总线的节点号。分区间通信则是通过调用分区操作系统提供的通信接口如队列或采样端口,提供所要发送数据的首地址和数据大小以及目的地,分
7、区操作系统在底层通过共享内存等方式实现数据交互6。航空总线硬件设备测速传感器扭力传感器显示设备分区操作系统(POS)IO分区进程1进程2功能分区1功能分区2图 2 机电管理软件数据流图机电应用的总线接口控制文件已经定义了总线与系统的IO 分区之间需要交互哪些信号以及每种信号对应的相关属性,例如信号所属的消息 ID,在消息中的偏移、位宽等信息,此外,还包括信号的源设备和目的设备。本文提出的机电管理应用通信数据结构体生成工具用于为每个分区解析出其要处理的数据,生成代码可直接使用的文本文件。这个过程如果采用手动处理容易引入错误,并且效率不高,而且人工处理几乎无法处理超过上万行的机载信号,并且机电管理
8、系统开发过程中 ICD 的持续迭代更改也会为人工解析数据带来巨大工作量。因此需要设计实现一种通用的解析方法,以机载 ICD 为输入,对每条信号根据属性进行解析,自动生成机载应用程序可直接加载的文本文件,如 C 语言的头文件等。这个工具需要满足以下要求。(1)能快速处理大规模数据,能够高效支撑对复杂系统 ICD 的分析,满足一般开发过程中数据量的要求。(2)具有一定程度的兼容性,能在一定程度上适应机电管理系统开发迭代过程中的设计更改,如文件格式变更、某些数据范围的变更等。(3)具有可验证性,能通过插桩等测试方式验证生成结果的准确性。2 数据服务软件设计与实现机电管理应用通信数据服务软件的输入是机
9、电管理系统的 ICD 文件,ICD 文件定义了机载航电子系统在同一标准规范下设计的航电总线系统中各航电子系统需要发送和接收的所有信号信息。由于航空电子设备繁多,数据量庞大,ICD文件体量通常十分巨大。并且由于 ICD 文件的层级结构使得分区应用直接访问存在一定困难。设计面临以下问题。(1)机载应用系统涉及的信号复杂且数据量大,机电管理系统的业务逻辑涉及多种总线类型传输的消息,不同总线的消息组包格式、消息长度、数据类型存在差异,且由于飞机更复杂的功能设计,机电管理系统需要处理更加庞大的数据量。(2)多分区的处理,ICD 文件中定义的一些消息需要被发送到多个分区,并且分区应用之间存在数据交互。(3
10、)复杂性:机载总线接口控制文件是一种结构化文件,其中含有许多嵌套节点及引用,不同的 ICD 存在不同的表示格式,解析这些控制文件需要考虑许多复杂的语义规则。2.1 数据服务软件设计思路(1)根据机载总线协议规范,分析机载总线协议接口控制文件格式及相关数据结构。(2)使用相应编程语言,实现机载总线协议接口控制文件的解析程序,从而实现机载总线协议接口控制文件的读2023 年第 9 期184信息技术与信息化网络与信息安全取和解析。(3)将解析得到的数据结构存储在内存中,以便后续使用。(4)根据程序的需要,对读取和解析得到的数据结构进行相应的处理,实现解析结果的存储。软件由以下模块实现:文件路径读取模
11、块、处理模块以及输出模块。文件读取模块负责接收 ICD 文件路径,并做路径判断相关处理;处理模块是工具的核心部分,负责根据ICD 文件生成分区通信所需的结构体数组;输出模块负责以文本形式将处理模块生成的结果进行文本输出。2.2 文件路径读取模块实现提供字符串类型的接口来循环获取 ICD 路径,输入文件路径之后,首先进行字符串判断来实现格式验证处理,如果ICD 文件路径不是以“.xml”“.csv”或“.xlsx”等常见格式结尾,则提示格式错误,重新输入路径。格式验证完成后,进行空文件判断,若文件路径不存在或路径所指文件为空,则提示路径有误,重新输入路径。流程如图 3 所示。字符串路径接口输入I
12、CD路径文件格式匹配?文件路径非空?NNY保存路径Y图 3 文件路径读取模块流程图2.3 数据处理模块实现对于读入到内存中的总线接口控制文件内容,采用属性匹配的方法进行处理。首先创建信号类,该类对象的成员属性包括图 1 中总线协议、值域和其他控制参数中的内容,遍历 ICD,生成每个信号的类对象,并通过数组等容器保存这些类对象,以下称该数组为信号数组。2.3.1 多总线类型的处理机电应用对不同类型的总线数据分别进行处理,因此首先需要为各类型总线各维护一个缓冲区,在创建缓冲区时记录其与总线节点等关键因素的对应关系,用于 IO 分区与总线和其他功能分区进行数据传输。遍历信号数组,提取总线协议类型,将
13、信号数组按照总线类型划分为多个数组,以下称其为总线信号数组,所有总线信号数组的并集是整个 ICD 的信号数组,且各总线信号数组中不包含相同的信号类对象,因为每个信号由一种确定的总线传输。统计所有的总线信号数组大小,为所有总线信号划分对应的缓冲区,缓冲区名称由机电管理系统开发者提供,缓冲区大小即为总线数组大小乘以该总线类型数据大小。遍历信号数组,提取 IO 分区与总线驱动交互时所需的总线节点、消息 ID、偏移等信息,根据信号的源和目的设备,将信号数组区分为 IO 分区接收和 IO 分区发送两种类型,生成两个结构体数组,数组每一行表示一个信号,每一列根据系统需要表示该信号的相关属性。2.3.2 多
14、分区信号的处理每个信号根据系统设计需要交由一个或多个功能分区处理,遍历信号数组,提取信号相关属性。依据规则,判断信号属于单分区处理或是多分区处理,例如,在有些设计规则下,心跳字信号要转发给所属消息 ID 涉及的所有分区。首先处理单分区信号,在内存中初始化一组可变长度的数组,在每个数组中存储一个分区要处理的所有单分区信号,以下称其为分区信号数组,遍历信号数组,根据信号的源和目的属性,将单分区信号存储在对应的分区信号数组中。其次进行多分区信号的处理,依据分组规则,要将每个多分区信号划分到其所属消息 ID 发送的所有分区中,因此首先维护一个依照键存储元素的容器,例如 Java 中的 Map,它的键是
15、信号数组中的消息 ID,值是消息 ID 对应的分区集合,在遍历消息数组时动态更新这个消息 ID-分区集合的键-值容器,这样完成遍历后就获得了多分区信号处理的对应关系,这个过程的流程如图 4。信号数组sizeof(ICD)信号类ii属于单分区信号?判断分区分区数组1添加信号类i分区数组n添加信号类iY属于分区1属于分区nMap中存在消息类i的消息ID?N更新消息ID对应的值添加消息ID和其对应的值 2023 年第 9 期185信息技术与信息化网络与信息安全信号数组sizeof(ICD)信号类ii属于单分区信号?从Map中获取消息ID对应的分区数组N在每个分区数组中添加信号i跳过图 4 信 号的分
16、区处理2.3.3 信号位置的查找获得了按分区划分的信号数组之后,需要查找信号在结构体数组中的下标以提供给分区应用直接调用。采用和加载ICD 相同的接口及文件判断方式相同的操作获取结构体数组文件。将结构体数组文件按照文本文件的格式进行读取,结构体数据存储在内存中。获得信号位置的步骤。(1)获得信号所属分区。(2)获得信号所属分区结构体数组起始行号。(3)获得信号在分区结构体文件中的行号。(4)返回信号下标:信号行号 信号所属分区结构体数组起始行号-1。(5)判断下标是否为 0 到分区结构体数组大小 1 之间的整形数,如果是则返回信号下标,否则输出错误信息。2.3.4 释放内存工 具 由 Java
17、 语 言 实 现,在 程 序 运 行 过 程 中 调 用System.gc()函数释放内存以实现轻量化。具体的调用节点在输出完 IO 分区与总线交互数据之后以及输出完每个 IO分区与功能分区的交互数据之后,释放内存机制保障了工具的易用性。2.4 文件输出模块数据处理模块将划分后信号信息都保存在内存中,需要以机电应用可以直接读取或加载的文本文件的方式输出。提供用户指定字符串格式路径的接口,对获取到的路径进行判断,如果该路径不存在,则将文件保存在程序所在路径,否则保存到指定路径。调用宿主系统的文件生成接口,将生成的 IO 分区与总线交互数组以及分区间交互数组分别输出保存。3 工程实践本文提出的工具
18、用于飞机机电管理应用开发阶段的数据生成,已在工程实践中进行了使用。并对工具最大兼容能力进行了测试,参数如表 1 所示。表 1 工具性能参数环境Windows7/10,JDK1.8最大 ICD 容量10 万行支持 ICD 格式xml,csv,xlsx平均运行时间0.65 ms最大占用内存25 MB4 结束语本文介绍了一种操作友好的机电总线接口控制文件解析方法,目的是为机电管理应用与总线通信及机电管理应用间通信的过程提供数据支持服务,将机电管理系统应用开发与ICD 进行解耦,减少软件开发周期,减少软件开发过程中可能产生的错误信息。已在某型号机电应用开发中使用,满足开发人员的需求。参考文献:1 王明
19、明,胡军,张维珺,等.基于模型的 IMA 时间资源配置验证方法研究 J.计算机技术与发展,2018,28(5):32-37.2 吕大鹏,项涛.基于天脉 2 操作系统的弹载综合电子系统设计与实现 J.信息通信,2019(1):99-100.3 牛文生.机载计算机技术 M.航空工业出版社,2012.4 仝敏,张东.嵌入式实时多分区操作系统两态访问的研究J.航空计算技术,2014,44(6):88-91.5 李庆楠,刘宵辰,严琳等.基于天脉 2 操作系统的机载机电管理软件设计 J.山西电子技术,2022(6):50-52.6 孙沛,郭警涛.新型无人机机载机电管理计算机研究与设计 J.科技资讯,2016,14(32):5-6.【作者简介】刘水桥(1995),女,陕西宝鸡人,助理工程师,研究方向:机载工具链。(收稿日期:2023-07-31 修回日期:2023-08-26)