一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

适用于多种运载器的1553B数据总线处理方法与流程

2022-07-16 22:04:43 来源:中国专利 TAG:

适用于多种运载器的1553b数据总线处理方法
技术领域
1.本发明属于航天测量与控制方法技术领域,具体涉及一种适用于多种运载器的1553b数据总线处理方法。


背景技术:

2.1553b数据总线最初是美国军方专为飞机上设备制定的一种信息传输总线标准,它的全称为“飞机内部时分制指令/响应型多路传输数据总线”,由于它具有双向输出特性,实时性和可靠性高,广泛应用于军事、工业和科技领域。我国于1997年颁布的国军标289a(gjb289a),成为我国航天领域主流数据总线标准,目前许多型号运载器均采用gjb289a数据总线。1553b数据总线典型的网络拓扑结构中包括一个总线控制器bc(bus controller),最多31个远程终端rt(remote terminal),以及总线监视器mt(monitor termina1)。bc通过传送数据命令或总线管理控制命令控制总线上各子系统的通信,rt是总线上的各子节点,对于飞行器来说导航系统、控制系统、遥测系统都属于rt,mt是记录总线上传输信息并有选择性提取的终端。飞行器遥测系统分时对各测量系统的输出信号进行采集,形成由子帧和副帧构成的全帧数据,mt记录的总线上的传输信息以字节流的形式编排在全帧数据中传递到地面。地面处理系统对接收到的数据通过缓冲、解析、降频、选择等步骤处理出遥测参数。
3.目前,不同运载器基于自身的任务特点开发了独立的数据总线处理软件。虽然现阶段各处理软件在运行中没有任何问题,但是随着不同批次任务的执行,新的需求或变更会不断出现,其导致的结果就是软件频繁更动,可维护性和可读性大大降低。由于软件内部各模块间耦合度高,也给软件的并行开发带来风险。如软件的处理过程中缓冲、解析、降频、选择等步骤的任何一步编码没有完成,将导致整个软件无法编译测试。既然各运载器的数据总线处理软件都是基于相同的标准开发,其中一定存在相似的处理环节和处理方法,但是由于各软件的独立性,彼此间的代码不能复用,造成代码冗余和软件的重复开发。


技术实现要素:

4.本发明的目的在于提供一种适用于多种运载器的1553b数据总线处理方法,解决了现有方式造成的代码冗余和软件的重复开发问题。
5.本发明所采用的技术方案是:适用于多种运载器的1553b数据总线处理方法,包括以下步骤:
6.步骤1、将数据处理线程类czjthdbus、数据预处理接口czjprebus、数据解析接口czjdecbus、数据发送接口czjsndbus、缓冲区操作类czjslickbuf五个基类编译为动态链接库;
7.步骤2、各运载器分别建立独立的软件工程,将步骤1中编译的动态链接库引入工程中;
8.步骤3、根据任务需求设计配置文件的管理类,将数据总线的帧结构及合法包结构在配置文件中描述,并编写需要的操作方法。
9.本发明的特点还在于,
10.步骤1具体包括以下步骤:
11.步骤1.1、新建一个动态链接库工程;
12.步骤1.2、将数据处理线程类czjthdbus、数据预处理接口czjprebus、数据解析接口czjdecbus、数据发送接口czjsndbus、缓冲区操作类czjslickbuf五个基类的头文件及源文件加入工程;
13.步骤1.3、修改make文件,增加编译选项-fpic,既编译地址无关代码;
14.步骤1.4、修改make文件,将生成文件设置为libzj.so;
15.步骤1.5、编译工程,生成动态链接库libzj.so。
16.步骤2具体包括以下步骤:
17.步骤2.1、新建一个控制台应用程序工程;
18.步骤2.2、修改make文件,在依赖共享库中增加-lzj,既libzj.so;
19.步骤2.3、在工程中新建一个接口czjprebus的子类,并覆写接口中定义的三个方法,在子类中定义一个czjslickbuf的数据成员;
20.步骤2.4、在工程中新建一个接口czjdecbus的子类,并覆写接口中定义的六个方法,在子类中定义一个czjdecbus的数据成员;
21.步骤2.5、在工程中新建一个接口czjsndbus的子类,并覆写接口中定义的四个方法,根据不同运载器对数据总线上包的选择要求和采样频率设计发送缓冲区,并以结构体的形式进行定义,完成初始化工作;
22.步骤2.6、在主程序中定义变量存储czjthdbus对象,在对象构造函数中将步骤2.3、步骤2.4、步骤2.5定义的子类对象传入其中,启动线程。
23.步骤3中配置文件的管理类设置为静态类。
24.步骤3中将数据总线的帧结构及合法包结构在配置文件中描述具体包括:设计配置文件,包括输入帧格式、命令字格式及挑路方法的描述信息,并在配置文件管理类中定义相应的数据结构与配置文件中的字段一一对应。
25.步骤3中编写需要的操作方法具体包括:帧格式信息获取、命令字格式信息获取及挑路方法信息获取。
26.本发明的有益效果是:本发明适用于多种运载器的1553b数据总线处理方法,采用面向接口的编程思想,通过定义接口,在上层模块和下层模块间建立依赖关系,减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。
附图说明
27.图1是本发明适用于多种运载器的1553b数据总线处理方法的uml静态结构图;
28.图中czjthdbus是数据处理线程类;
29.图中czjprebus是数据预处理接口,cvehicleapre是该接口的实现类;
30.图中czjdecbus是数据解析接口,cvehicleadec是该接口的实现类;
31.图中czjsndbus是数据发送接口,cvehicleasnd是该接口的实现类;
32.图中czjslickbuf是缓冲区操作类。
33.图2是类czjthdbus的主处理函数handle()的处理流程图。
34.图3是图2流程图中解析数据步骤的流程图。
具体实施方式
35.下面结合附图以及具体实施方式对本发明进行详细说明。
36.本发明提供了一种适用于多种运载器的1553b数据总线处理方法,如图1所示,可以在逻辑上划分为上层模块和下层模块两层。数据处理线程类czjthdbus属于上层模块,其主要功能是实现数据总线的一套处理流程。其流程反映的是数据总线的一般处理过程,是对目前各运载器数据总线处理软件进行梳理,分析各种处理方所具有的共同特征,得出的各处理软件必须遵守的处理步骤。本处理方法的下层模块是数据预处理接口czjprebus、数据解析接口czjdecbus、数据发送接口czjsndbus,其主要功能是对不同型号的运载器的行为进行约束,对外提供统一的调用接口,它是各运载器的接口实现类与数据处理线程类czjthdbus之间的桥梁。操作步骤如下:
37.步骤1、本发明设计的数据处理线程类czjthdbus、数据预处理接口czjprebus、数据解析接口czjdecbus、数据发送接口czjsndbus、缓冲区操作类czjslickbuf五个基类作为运载器数据总线处理软件开发的基础,编译为动态链接库,供各运载器的处理软件共享。具体包括以下步骤:
38.步骤1.1、新建一个动态链接库工程(share library);
39.步骤1.2、将数据处理线程类czjthdbus、数据预处理接口czjprebus、数据解析接口czjdecbus、数据发送接口czjsndbus、缓冲区操作类czjslickbuf五个基类的头文件及源文件加入工程;
40.步骤1.3、修改make文件,增加编译选项-fpic,既编译地址无关代码;
41.步骤1.4、修改make文件,将生成文件设置为libzj.so;
42.步骤1.5、编译工程,生成动态链接库libzj.so。
43.步骤2、各运载器分别建立独立的软件工程,将步骤1编译的动态链接库引入工程中。工程中设计实现数据预处理接口czjprebus、数据解析接口czjdecbus、数据发送接口czjsndbus中定义的处理方法。其中czjprebus、czjdecbus的实现类包含czjslickbuf类型的数据成员,用于处理缓冲区的相关操作。将czjprebus、czjdecbus、czjsndbus的实现类作为数据处理线程类czjthdbus构造函数的参数传递到处理对象内部。具体包括以下步骤:
44.步骤2.1、新建一个控制台应用程序工程(console application);
45.步骤2.2、修改make文件,在依赖共享库中增加-lzj,既libzj.so;
46.步骤2.3、在工程中新建一个接口czjprebus的子类,并覆写接口中定义的三个方法,在子类中定义一个czjslickbuf的数据成员;
47.步骤2.4、在工程中新建一个接口czjdecbus的子类,并覆写接口中定义的六个方法,在子类中定义一个czjdecbus的数据成员;
48.步骤2.5、在工程中新建一个接口czjsndbus的子类,并覆写接口中定义的四个方法,根据不同运载器对数据总线上包的选择要求和采样频率设计发送缓冲区,并以结构体的形式进行定义,完成初始化工作;
49.如图2、图3所示,流程图中以pre开始的处理步骤就是由接口czjprebus提供的处理方法,以decode开始的处理步骤就是由接口czjdecbus提供的处理方法,以snd开始的处
理步骤就是由接口czjsndbus提供的处理方法。
50.接口czjprebus的处理方法有:
51.czjprebus:chk_frm(),字节流数据合法性检查;
52.czjprebus:buffer_data(),字节流数据缓冲;
53.czjprebus:construct_raw_frm(),对缓冲的数据进行简单加工,方便后续步骤处理;
54.czjprebus:reset(),接收缓冲区重置,以便接收下一帧字节流数据。
55.接口czjdecbus的处理方法有:
56.czjdecbus:load_buf(),将预处理的数据加载到处理缓冲区;
57.czjdecbus:search_sync(),搜索同步码;
58.czjdecbus:chk_data(),对搜索到的数据包进行合法性检查;
59.czjdecbus:select_package(),将有效包提取出来;
60.czjdecbus:update_buf(),更新处理缓冲区;
61.czjdecbus:is_reload(),判断是否需要重新加载数据。
62.接口czjsndbus的处理方法有:
63.czjsndbus:create_buf(),创建发送数据缓冲区,此处可根据不同运载器对数据总线的处理要求定义发送的数据格式;
64.czjsndbus:insert_frm(),将有效包写入相应的发送格式中;
65.czjsndbus:send_msg(),将处理后的有效包按定义的数据类型发送;
66.czjsndbus:destroy_buf(),释放缓冲区。
67.类czjslickbuf是缓冲区操作类,其中封装了缓冲区的操作方法,接口czjprebus的实现类cvehicleapre、接口czjdecbus的实现类cvehicleadec均含有该类型的数据成员,这样使缓冲区的操作更加规范和统一。其主要处理方法有:
68.czjslickbuf:init(),完成缓冲区的建立等工作;
69.czjslickbuf:load(),向缓冲区内追加数据;
70.czjslickbuf:move(),移动缓冲区内的数据;
71.czjslickbuf:reset(),重置缓冲区;
72.czjslickbuf:getvalidlen(),返回缓冲区内有效数据长度;
73.czjslickbuf:getasembuf(),返回缓冲区指针;
74.czjslickbuf:getasemlen(),返回缓冲区长度。
75.步骤2.6、在主程序中定义变量存储czjthdbus对象,在对象构造函数中将步骤2.3、步骤2.4、步骤2.5定义的子类对象传入其中,启动线程。
76.步骤3、根据任务需求设计配置文件的管理类,将数据总线的帧结构、合法包结构等内容在配置文件中描述,并编写需要的操作方法。具体为:设计配置文件的管理类为静态类;设计配置文件,应包括输入帧格式、命令字格式及挑路方法的描述信息,并在配置文件管理类中定义相应的数据结构与配置文件中的字段一一对应;并提供输入帧格式信息获取、命令字格式信息获取、挑路方法信息获取等公有方法,作为其他类的调用接口。
77.本发明是基于面向接口编程提出的适应多种飞行器的1553b总线数据处理方法。面向接口编程的本质就是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,不互
相影响,实现模块间的松耦合。针对目前处理软件需求变化造成软件频繁更动的问题,在进行软件设计时把主要处理逻辑作为软件的上层模块进行封装,功能相对稳定;把需求易变的部分定义为接口,通过继承接口将实现延迟到子类,如果需求变化时,只需要扩展接口的实现类即下层模块,程序的处理逻辑保持不变。针对软件各功能耦合度高,并行开发困难的问题,在进行软件设计时,上层模块对下层模块的调用通过接口实现,接口定义好之后即可开展编码工作,各个接口也可以分开实现,分别测试彼此保持独立互不影响。针对软件可读性、可维护性降低的问题,将数据总线的处理过程分解为预处理、数据解析、数据发送三个接口,利用上层模块的稳定性,使处理流程固定下来,对于不同的运载器呈现的是一致的处理逻辑。针对软件代码复用率低的问题,在进行软件设计时将缓冲区的处理方法进行封装,编写了通用的缓冲区操作类,通过优化设计使操作的可靠性更高、通用性更强。
78.通过上述方式,本发明适用于多种运载器的1553b数据总线处理方法具备的有益效果有:
79.1)本发明通过对各运载器数据总线的处理过程梳理,把类似的处理过程进行抽象,定义出一组接口。接口针对相应的处理步骤提供一致的处理方法,各运载器继承接口并实现各接口中定义的处理方法。这样的实现方法既体现了各运载器数据总线的处理差异又实现了细节对上层模块的屏蔽,保持了类的封装性,同时也对软件的扩展提供了条件。
80.2)本发明将数据总线的一般处理过程封装为软件的上层模块,主要负责维护处理软件的一般流程。其通过调用接口提供的一致处理方法,保持上层处理逻辑的一致性,在程序执行时通过动态绑定,执行各运载器实现类的方法,表现出差异化的运行效果。这样的实现方法利用接口确定的约束关系,保持处理逻辑的稳定性,屏蔽具体实现,在需求变更时软件的上层模块不需要更动,保证了软件的健壮性,软件的处理逻辑更加清晰、可读性更强。
81.3)本发明将各运载器处理数据总线时采取的一些通用的处理方法进行封装,并对各自的功能进行了优化设计,使各处理功能适应性更强、通用性更高,有利于减少重复开发带来的人力资源浪费,提高了软件开发的效率。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献