1553B 总线数据快速处理软件的设计与实现
2022-10-11张志国刘学
张志国,刘学
(91550 部队,辽宁 大连 116023)
在飞行实验结束后,需要对1553B 数据进行事后处理与分析[1]。传统做法是首先将1553B 控制文档(Interface Control Document,ICD)录入到数据库中,然后调用ICD数据库进行检索查询处理。而ICD一般比较复杂,一条消息需要多层数据库表才能完整表述,因此数据库录入人员工作量大,维护成本高。在数据处理阶段,需要调用多层父子表进行查询,取出基本信息再重新组合出命令字进行检索,大大影响了数据处理速度。针对以上不足,该文设计并实现了1553B总线数据快速处理系统,内部采用自定义数据模型简化ICD 结构,处理时运用多线程技术,提高了数据处理效率。
1 MIL-STD-1553总线介绍
MIL-STD-1553 全称为“飞机内部时分制命令/响应式多路复用数据总线”,它是一种总线标准,20世纪70 年代由美国军方公布[2-3],一般缩写为1553B,其国内对应标准为GJB289A-97。相比于其他总线,其具有高效灵活、配置性较强的特点[4]。随着武器系统的升级换代和测控装备、被试品数据传输能力的提高,1553B 协议在靶场遥测数据处理中得到了广泛应用。
图1 1553B总线网络拓扑结构
终端是使数据总线和子系统相连接的电子组件。子系统为从多路数据总线上接收数据传输服务的装置或功能单元。总线控制器(BC)是总线系统组织信息传输的终端。总线监视器(BM)是总线系统中指定作接收且记录总线上传输的信息并有选择地提取信息以备后用的终端。远程终端(RT)是总线系统中不作为总线控制器或总线监视器的所有终端[5-6]。1553B 总线的传输速度是1 MB/s,采用曼切斯特Ⅱ型编码,半双工工作方式。
2 快速处理软件设计
2.1 命令字生成
命令字由20 个信息位组合而成,这些组合信息包括3 位同步头、5 位远程终端地址字段、1 位发送(接收)位(T/R)、5 位子地址(方式)字段、5 位数据字计数(方式代码)字段及1 位奇偶校验位(P)[7-9],按照从高到低的顺序依次排列,其结构如图2 所示。在软件生成命令字时,不考虑同步头和校验位作为输入项,命令字占16 位,共两个字节。
图2 1553B命令字结构
远程终端地址段占用16 位命令字的高5 位[10]。总线上的每一个远程终端分配有一个地址编号,编号范围从0 到30。地址值31 为广播地址,其被系统保留不可占用[11-12]。发送/接收位(即第11 位)定义远程终端操作模式,逻辑0 表示远程终端接收数据,逻辑1 表示远程终端发送数据。子地址(方式)字段(即第6-10 位)用来表示远程终端的子地址编号,编号范围为1~30[13]。数据字计数(方式代码)字段(即第1-5 位)表示数据发送、接收字节数[14],其长度最大值为32 字节。其中,最大值32 字节的表示方式比较特殊,用全0 表示。
命令字分为发送命令字和接收命令字,其区别仅仅在于发送/接收位不同,0为接收命令字,1为发送接收字。在软件生成命令字时,只需输入相应的远程终端地址、T/R、子地址、数据字计数,按照相应的位置顺序进行组合,采用位移操作即可完成命令字生成。
2.2 消息结构定义
被测参数测量值封装成消息(Message)的形式进行数据传输,消息最大长度为32 个字长度[15]。消息分别由三部分组成:命令字、数据字和状态字。每条消息以命令字开头,命令字分为接收命令字和发送接收字,根据传输模式不同,确定命令字排列结构。状态字位于每条消息结尾或者紧邻命令字,它用于标识该条消息格式是否正确、消息来自哪条总线等信息[16]。数据字位于命令字或状态字后面,记录了所有被测参数。在事后处理时,一般只考虑BC-RT、RT-BC、RT-RT 这3 种传输模式。1553B 消息结构如图3 所示。
图3 1553B消息结构
接收命令字和发送命令字的组合能够唯一确定一条消息,因此可以此作为全局消息标识。消息定义还应包含参数个数、命令长度、传输模式,此3 项用以计算接收命令字和发送命令字。针对消息里的每一个测量参数,通过参数序号、参数名称、代号、单位、数据类型、输出类型、系数等属性加以描述。
2.3 消息解析
消息解析的目的是将1553B 文件中的每一条消息提取出来,按照数据字协议进行参数物理量还原,并按用户要求的格式进行输出。首先,将文件读入到内存中,便于后续进行数组下标操作;然后读取消息配置文件,读取命令字、参数个数、传输模式等消息基本信息,包括每个参数的参数序号、参数名称、代号、单位、数据类型、输出类型、系数等属性;最后根据命令字头提取每条消息,对消息中每个参数按处理公式进行物理量还原。为提高处理效率,使用多线程技术对每一个消息单独启动一个线程进行消息解析。
把握了上述三类“道”义,我们不难看出作者的思想,这有助于对“道”的英译。然而,文中“道”的含义广博,尤其是儒道之“道”,很难在英语世界找到相应的对应词,获得传神达意的得体译本。笔者姑且选取刘师舜、杨宪益、戴乃迭夫妇以及罗经国这三个经典译本(以下分别简称刘译、杨译、罗译),将对应的“道”的译文摘出,按上文“道”的释义及分类顺序分别列举如下(粗体为笔者所加):
3 快速处理软件实现
软件系统主要由命令字生成模块、消息结构定义模块、消息解析模块构成。系统的结构如图4 所示。
图4 软件系统结构
3.1 命令字生成模块
命令字生成模块接收界面输入的信源信息(远程终端地址、子地址)、信目信息(远程终端地址、子地址)、数据字计数,根据命令字编码规则生成命令字。操作界面如图5 所示。
图5 命令字生成操作界面
命令字生成流程根据三种不同的消息结构流程有所不同:
1)首先判断数据字计数是否等于32 字节,若相等,长度变为0;
2)针对BC-RT 传输模式,设置T/R 数据位为0,将信目终端地址左移11 位、T/R 左移10 位、信目子地址左移5 位,与数据字计数执行按位与操作,得到接收命令字;
3)针对RT-BC 传输模式,设置T/R 数据位为1,将信目终端地址左移11 位、T/R 左移10 位、信目子地址左移5 位,与数据字计数执行按位与操作,得到发送命令字;
4)针对RT-RT 传输模式,首先参照BC-RT 模式得到接收命令字,然后参照RT-BC 模式得到发送命令字,最后将接收命令字左移16 位与发送命令字取与得到命令字组合。
命令字生成流程如图6 所示。
图6 命令字生成流程
3.2 消息结构定义模块
一条1553B 信息由命令字、多个数据字、状态字组成。状态字不参与解析,因此消息结构只需包括基本信息和参数信息两大部分。其中命令字是全局唯一的,可以此为关键字作为记录索引。命令字由用户界面输入的命令长度、传输模式、参数个数计算得出,因此基本信息部分包括命令字组合、命令长度、传输模式、参数个数4 个元素。参数信息由多个参数组成,每一个测量参数包含参数名称、代号、单位、数据类型、输出类型、系数、位控位置等属性。消息结构如图7 所示。
图7 消息结构
考虑到数据录入、查询的便利性和后续并行化快速解析,每一条消息结构用ini 配置文件进行存储,这样可同时避免命令字与参数之间的复杂关联。
3.3 消息解析模块
该模块读取配置文件的基本信息和参数信息,对每一条1553B 消息进行解析、处理,并按用户要求的格式进行输出。为提高处理速度,以多线程方式调用解析模块,每一个1553B 配置文件启动一个线程。其具体流程如下:
1)读取配置文件,获取命令字、命令长度、参数个数、传输模式等消息基本信息和参数类型、系数等属性;
2)读取原始数据文件到内存,并构造CRC 校验表;
3)以读入的命令字为查询条件在内存块中进行遍历,定位后将指针以命令长度进行偏移得到CRC校验码,并与计算得到的CRC 校验码进行比较;
4)按照数据类型逐个读取参数,并调用系数进行量纲还原。考虑到大量的磁盘I/O 操作会耗时明显,将结果缓存到一定大小再一次性输出到文本文件。
消息解析流程如图8 所示。
图8 消息解析流程
4 实验验证
分三次采集1553B 原始数据进行文件存盘,大小分别为58 MB、116 MB、232 MB,每个数据包含BC-RT、RT-BC、RT-RT 三种传输模式和72 个命令字组合。处理计算机配置为32 GB 内存、1 T 固态硬盘、双Intel Xeon 4110 CPU。采用传统处理方法和快速处理方法两种方式,对采集的3 次1553B 数据进行耗时统计,结果如表1 所示。
表1 处理耗时统计对比
从实验结果可知,快速处理方法相比传统处理方法耗时显著减少,处理效率有较大提升。快速处理方法耗时与数据大小、需要处理的命令字数量正相关。
5 结论
针对当前1553B 总线消息处理软件参数装订复杂、处理速度慢的问题,该文提出了一种快速解析处理方法。提前解算命令字,并以此为消息唯一标识符进行多线程检索;自定义消息结构,取代复杂的ICD 数据库结构。实测处理结果表明,该方法可维护性较强,处理速度快,对1553B 数据处理效率有较大的提升。