当前位置:首页 期刊杂志

通用航电总线驱动软件设计与应用*

时间:2024-07-28

马智骢

(中国西南电子技术研究所,成都 610036)



通用航电总线驱动软件设计与应用*

马智骢**

(中国西南电子技术研究所,成都 610036)

针对现有航电仿真系统中总线驱动软件存在的功能单一、可扩展性差、重复开发严重等问题,结合航电仿真系统数据驱动特点,提出了一种扩展便捷、配置灵活、运行稳定的通用航空总线驱动仿真软件的设计与实现方案。该方案基于面向对象设计思想,采用分层式软件架构与模块化设计,利用可扩展标记语言(XML)格式的灵活配置特性和发布/订阅式数据分发网络的动态性及传输优势进行设计,保证了方案的通用性和灵活性,提高了软件的健壮性和可重用性。基于该方案设计的通用总线驱动软件可显著提高航电仿真场景中多总线数据分发的效率。

航电仿真系统;通用总线驱动;分层开放架构;面向对象设计

1 引 言

随着航空总线技术发展和应用的日新月异,以及各类型航空总线技术标准、传输协议的不断更新,航空电子仿真应用中的总线驱动软件设计也日趋变得重要和复杂。近年出现并不断应用的RapidIO总线、AFDX(Avionics Full Duplex Switched Ethernet)总线等在传输速率和网络配置灵活性等方面均有不同的提升和改进[1],但由于设计初衷、应用时代背景等的差异,不同种类航空总线协议和规范不尽相同,如1553B总线协议、控制局域网(Controller Area Network,CAN)总线协议、RapidIO总线协议以及ARINC429总线协议、ARINC664总线协议等,如何提高总线驱动软件的灵活性和通用性成为航电仿真领域的又一研究热点。

目前,航电仿真测试环境中各类模拟器软件、总线监控软件往往需要针对某一特定航空总线进行开发,难以在不同型号航电系统中使用。为了支撑多型号、不同总线的数据激励,改善航电仿真测试系统的通用性和延续性以及可通用总线驱动软件的必要性尤为突出[2]。

国外业内研究工作起步较早,多种商用通用总线驱动工具已有相关研究,支持多重总线协议并具有完备总线测试仿真功能的总线驱动仿真系统已在国外市场上占有航电仿真系统中70%以上的市场份额[3]。如:AIM公司的PBA总线测试工具,作为AFDX及ARINC429总线的集成测试系统,该工具可在同一软件界面内对AFDX总线及ARINC429总线进行同时数据收发测试。而在国内,由于航空总线技术的外来引进性以及航空工业发展水平的限制,不同型号航电系统的接口控制文档(Interface Control Document,ICD)与相关总线驱动软件模块不具备通用性,而在实际应用中,总线驱动软件还停留在对单一总线及协议进行支持的层面上[4]。为此,本文提出一种通用型航空总线驱动软件的设计思路,以开发出多总线接收及发送模块的通用接口,并介绍了其实际工程应用效果。

2 通用总线驱动软件的设计

2.1 通用总线驱动软件的主要特征

传统的总线驱动由于没有通用性的设计,软件往往具有独立性、低内聚高耦合的特点,这使得在不同型号的研制任务中,需要重新对于相同总线协议进行重新封装和驱动。

基于总线驱动软件的功能任务,并结合实际应用中对总线驱动软件提出的需求,通用总线驱动软件应具有以下主要特征:

(1)通用性。能够同时支持多种总线协议,对不同总线、不同通道进行数据收/发操作。

(2)可扩展性。对于新增的总线协议能在不变动软件架构的情况下通过对总线板卡库文件进行包含、配置文件重新定义等方式灵活地进行扩展。

(3)实时性。通用总线驱动软件应具备对总线数据进行实时转发、实时接收的特征。

(4)可靠性。通用总线驱动软件应满足各类型总线协议规定的发送/接收速率,并在多总线同时驱动时提供可靠的数据收发支持。

2.2 通用总线驱动软件的架构设计

为了实现软件的通用性和可扩展性,按照面向对象设计思想,通用总线驱动软件的架构采用分模块、开放式架构,对于不同的总线协议采用工厂模式进行封装,对于新增的总线协议,只需按照工厂模式实现方式加以添加,即可在不改变程序结构的情况下达到效果。

通用总线驱动软件结构框图如图1所示。

图1 通用总线驱动软件结构框图Fig.1 General bus driver software structure diagram

2.3 总线驱动封装工厂的设计

在图1中,底层的各类型总线驱动均由中间层的总线驱动封装工厂进行实例化生成,在新增总线时,往往需要增加动态链接库和板卡自带的以C语言格式提供的板卡初始化、数据收发等操作函数。即便是同一种航空总线板卡,不同厂商所提供的API函数和板卡设置方式千差万别。若要实现通用型的总线驱动软件,则需要将不同航空总线板卡的操作由无规律的多样性统一为单一的调用格式和过程。

为了达到这一目的,需要在各类型航空总线板卡及与其提供的API函数进行统一化封装,以提供给上层软件统一的函数接口。事实证明,各类总线板卡虽然存在不同特性和操作方式,但基本都遵从着板卡初始化、参数设置、通道配置、板卡启动、数据收发这样的过程。有了这样的规律,结合面向对象编程思想,通用总线驱动软件中最核心的组成部分——总线驱动封装工厂采取了工厂模式的设计思想:事先将不同种类的航空总线API函数、所需的.lib文件及资源文件按照总线类的方式进行封装,将板卡的初始化过程封装到单独的总线类中,实际使用过程中再进行实例化。总线驱动封装工厂里的各类型总线类提供给上层软件的函数为统一函数名和参数格式,以提供通用总线数据驱动功能。总线驱动封装工厂的类结构图如图2所示。

图2 总线驱动封装工厂类结构图Fig.2 Bus driven packaging factory class diagram

2.3.1 总线驱动封装工厂基类的设计

总线驱动封装工厂类的组成包括基类、数据监听类和若干特定总线驱动类,其中,总线驱动基类定义了总线驱动提供给上层数据分发中心使用的驱动调用虚函数。基类的成员组成如表1所示。

表1 总线驱动基类函数定义Tab.1 The function definition of bus driver base class

根据前文将各类型总线按照类的方式封装,在使用中进行对象实例化的思路,需要设计出各类型总线驱动类的基类,该基类作为总线驱动封装工厂乃至整个通用总线驱动软件设计的基础,应当具备包含所有类型总线操作、易于被上层分发中心调用、便于扩展新总线驱动的特点。由于AFDX、ARINC 429总线等往往需要在初始化板卡后进行若干参数设置,只设置一个板卡设置函数是不够的,基类中的设计是将板卡初始化和设置板卡参数分成两个函数,在总线驱动对象实例化后,可根据需要分别调用初始化函数和设置参数函数。

同时,由于不同类型总线板卡配置所需的参数各不相同且彼此没有规律可循,如果将初始化板卡函数和设置板卡参数函数的参数设置为固定数据类型,如INT型、LONG型,均不能满足可扩展性的需求,为此,总线驱动基类将板卡操作相关的两个函数的参数定义为string类型的map,以达到最大限度地满足多样性和可扩展性的需要。在实际使用中,可将各类总线的不同参数以string-string的形式传至函数,再分别在不同的总线驱动对象中各取所需,如“arswitch”-“100k”。

在返回值的设计中,总线驱动基类将各类型总线常见出现的板卡操作返回值进行了总结归类,定义了枚举类型,以此来对各类型总线板卡操作中出现的问题进行统。返回值枚举类型定义如表2所示。

表2 总线板卡返回值定义Tab.2 The definition of bus card return value

2.3.2 总线驱动封装工厂数据监听类的设计

为了组建总线数据接收回调机制,总线驱动基类中包含了一个独立的类——数据监听类,该监听类的作用为提供接收回调函数,供上层数据分发工厂调用。

总线板卡的数据接收方式通常有查询式和中断式两种。查询式接收方式为板卡API函数提供数据接收的函数接口,用户调用此函数,通过函数返回值来确定是否正确接收到了总线数据,板卡运行时,不会主动通知用户和上层调用程序接收数据,而是需要用户在调用板卡接收函数时通过不间断地判断返回值的方式来进行数据接收判断。往往在设计查询式总线接收软件时,需要以板卡接收函数为基础设计独立的接收线程,通过若干接收线程来判断返回值,从而接收总线数据。如:GE公司AFDX板卡提供的板卡接收函数是此类型且以单个端口为接收单位,那么在实际程序中,AFDX端口将会产生相应数量的接收线程。此种方式的特点为运行稳定、不易发生异常,但效率低下、占用资源多。

针对查询式方式存在的缺点,某些厂商提供了中断式板卡接收数据方式。中断式接收方式需要在板卡参数设置时设置接收函数对应的中断调用函数,并指定相应的函数参数。板卡运行后,监听数据接收状况的任务由板卡自身完成,当板卡内部机制查询到有新数据接收到时,即调用设置好的接收中断函数,同时将新接收的数据上报,以此来完成总线数据的接收。相比于查询式接收方式,中断式总线接收不需要程序开启单独的接收线程来进行总线数据监听,从而节约了系统资源,这对于总线接收数目或端口较多时效果较为明显。但中断式接收由于需要进行函数回调,存在数据传递效率不高的问题,当大量并发数据同时接收时,容易造成板卡接收队列满额或接收数据超时严重。

在设计通用总线驱动软件基类的数据监听类时,采用了设置回调函数的方式来建立总线数据接收机制,这是中断式数据接收方式的特点,当基类的接收回调函数上报数据时,数据监听类即接收总线驱动对象的回传数据并提供给数据转发中心调用。

2.3.3 总线驱动封装工厂继承类的设计

总线驱动封装工厂继承类包含封装工厂基类的各成员函数和参数,针对不同的航空总线实例化设计,从而满足总线驱动通用化的目标。在实际使用中,通用化驱动软件往往需要进行不同类型总线的配置。为了实现通用性,将这些配置信息固定到软件代码里是不现实的。XML数据格式具有定义清晰、结构清楚、便于读取、易于修改的特点,为了满足使用环境中对于总线配置信息动态化定义的需求,通用总线驱动软件将总线配置信息、数据流向、数据转发方式等一系列信息定义在XML格式的配置文件里,程序在运行时动态加载并将配置文件里定义的信息进行板卡的相关设置操作。总线板卡配置过程如图3所示。

图3 总线板卡配置过程Fig.3 The process of bus card configuration

由于不同总线以及各厂商之间对于板卡资源的定义和配置存在很大差异,在特定总线驱动继承类里需要针对不同总线所需参数进行规划,如:GE公司AFDX板卡(PCI接口,Version3.0及以下)所需参数资源为发送端口号、接收端口号、数据长度、端口类型、采样频率等,而国内某公司wt_429板卡(PCI接口,Version4.11及以下)所需参数资源为发送通道号、接收通道号、发送速率、接收速率、奇偶校验等。一个典型的总线驱动对象(以ARINC 429总线为例)如图4所示。

图4 ARINC 429总线驱动对象定义图Fig.4 ARINC 429 bus driver object definition diagram

通过XML格式的配置文件,可以将一个ARINC 429总线驱动对象所需的信息进行定义,ARINC 429总线驱动类将会解析到上述的“cardnumber”“sendrate”“recvrate”“arswitch”等信息,在ARINC 429驱动类实例化时,驱动类将会逐一获取上述信息进行相关板卡操作。

2.4 数据分发中心的设计

数据分发中心在通用总线驱动软件中处于最顶层,作用为接收并分发来自航电系统的业务数据,经筛选后分发数据至特定总线驱动对象,同时接收总线驱动对象上报的总线数据并将它们按照分发规则传送至航电系统,以起到数据周转、筛选、分发的作用。

为了达到这一目标,数据分发中心必须采用高效可靠的数据分发方案,通用总线驱动软件的这一方案采用了数据分发服务(Data Distribution Service,DDS)中间件技术。DDS数据分发系统是建立在传输层之上的中间件,如图5所示,DDS致力于数据实时数据传输,在传输层和应用程序中间构建中间件,具有QoS保证的数据传输,保障数据传输的实时性;DDS中间件体现了以数据为中心进行结构设计的方法学。

图5 DDS网络层次示意图Fig.5 Hierarchical diagram of DDS network

DDS中间件不同于以往的pear-pear通信和CS架构通信方式,采用特有的出版/订阅(Publish/ Subscribe)通信方式,在各个通信节点之间建立一个名为Topic的通信总线,发布方将数据发布,接收方从总线等待收到数据通知,非常适用于数据量大的多-多通信。同时,DDS中间件所采用的出版/订阅模式不同于中间采用过的以往点到点模式和服务器-客户端模式的最大优点在于它不需要建立显示的连接关系,非常适用于多-多的通信方式。中间件技术实现形式对比见图6。

图6 中间件技术实现形式对比图Fig.6 Comparison of middleware implementation form

通用总线驱动软件与业务处理软件之间的连接是通过DDS网络来完成的,可部署在DDS网络中的不同节点,用以收发不同类型总线板卡的数据,而处理业务逻辑的软件也分布在DDS网络中,它们与通用总线驱动软件中的数据分发中心联系,通过DDS网络订阅、发布所需的总线数据。通用总线驱动软件数据分发网络如图7所示。

图7 通用总线驱动分发网络图Fig.7 General bus driver distribution network diagram

3 通用总线驱动软件在工程中的应用

3.1 应用项目来源

通用总线驱动软件来源于某航电系统联试环境需求,在分系统航电联试环境需使用AFDX和ARINC 429两种总线,由于联试环境的集成性、实时性需求较高,同时需要保证各总线数据驱动软件的完整性、稳定性。

通过在型号联试环境中使用该通用总线驱动软件,减轻了环境软件开发人员的开发工作量和维护工作量,减少了人为误差,加快了科研进度。同时,由于该系统具备良好的配置方式,可以加快总线驱动软件部署、更新速度,降低了联试成本。

3.2 系统组成

该型号联试环境的组成是基于DDS中间件的分布式测试验证平台,由若干AFDX收/发客户端和ARINC 429收/发客户端组成,相互之间通过DDS局域网进行数据传输,每个客户端分别部署通用总线驱动软件,根据使用目的不同进行有针对性的配置。型号联试环境仿真测试系统如图8所示。

图8 系统仿真测试环境组成图Fig.8 The composition diagram of system simulation test environment

3.3 实现效果

通用总线驱动软件在实际使用中,达到了很好的效果。

(1)ARINC 429总线数据驱动

通用总线驱动软件能够完成ARINC 429总线的板卡初始化、通道速率设置、奇偶校验设置、发送/接收通道设置,并能够实时发送/采集总线上的数据,记录发送/接收时间(精确到0.1 ms),组装AIM数据包。

(2)AFDX总线数据驱动

通用总线驱动软件能够完成AFDX总线的VL定义、Port定义、UdpPort定义、数据长度定义、端口类型定义等,并能够实时发送/接收总线上的数据并记录时间(精确到1 ms)。

(3)DDS数据分发

通用总线驱动软件能够定义并管理DDS数据分发网络,能够灵活配置数据项的流向、发送者、接收者、转发者,同时能够对于转发的二进制数据通过封装头的方式打上标签。

通用总线驱动软件运行时,可以转发不同总线数据并进行记录和分析,并可根据航电ICD格式进行数据解析。解析状态的运行效果如图9所示。

图9 通用总线驱动软件实现效果Fig.9 The realization effect of general bus driver software

4 结 论

本文提出了一种通用型的航空总线数据驱动软件,能提供各类型总线数据的采集、传输、分发功能,提高了综合化航电系统联试工作中数据分发效率,便于推广应用。项目充分结合DDS数据传输技术和XML文件定义的技术特点,设计开发了一套支持不同航空总线数据的监视回放产品。目前,依据此方案设计的通用总线驱动软件已应用于实际工程中,其功能与性能均满足工程需求。

[1] 陈社华,郭磊,孙辉. 通用航空总线实时测试与分析技术探讨[J].军民两用技术与产品,2016(2):6. CHEN Shehua,GUO Lei,SUN Hui. Discussion on real time test and analysis technology of general aviation bus[J].Dual Use Technologies & Products,2016(2):6.(in Chinese)

[2] 朱珂,刘彦伟,丁凯,等. 一种快速可重构的1553B总线测试软件设计[J].现代电子技术,2015,38(14):59-63. ZHU Ke,LIU Yanwei,DING Kai,et al.Design of rapidly reconfigurable 1553B bus testing software[J].Modern Electronics Technique,2015,38(14):59-63.(in Chinese)

[3] 王鑫玮,赵天永,王新波. 总线监控在综合航电系统仿真试验中的应用[J].企业导报,2016(1):193-193. WANG Xinwei,ZHAO Tianyong,WANG Xinbo.Application of bus monitoring in integrated avionics system simulation test[J].Guide To Business,2016(1):193-193.(in Chinese)

[4] 李晓颖,刘航航,李云矫,等. 某导弹武器系统1553B总线监测系统设计[J].弹箭与制导学报,2016,36(1):171-173. LI Xiaoying,LIU Hanghang,LI Yunjiao,et al.Design of 1553B Bus monitoring system of missile weapon system[J].Journal of Projectiles,Rockets,Missiles and Guidance,2016,36(1):171-173.(in Chinese)

[5] 杨峰,洪元佳,夏杰,等. AFDX网络技术综述[J].电子技术应用,2016,42(4):4-6,10. YANG Feng,HONG Yuanjia,XIA Jie,et al.Summary of AFDX network technology[J].Application of Electronic Technique,2016,42(4):4-6,10.(in Chinese)

[6] 周实奇. 通过经验值提高速度的XML解析算法[J].移动通信,2017,41(2):68-73. ZHOU Shiqi.Improving the speed of XML parsing algorithm to improve the speed using the experience value[J].Mobile Communications,2017,41(2):68-73.(in Chinese)

[7] 张妙琳. 基于VxWorks的ARINC429总线驱动开发[J].工业控制计算机,2016,29(11):3-4. ZHANG Miaolin.Development of ARINC429 bus driver based on VxWorks[J].Industrial Control Computer,2016,29(11):3-4.(in Chinese)

[8] 师维. 基于DDS的航空数据模拟工具研究与实现[D].吉林:吉林大学,2016. SHI Wei. Research and implementation of aviation data simulation tools based on DDS[D].Jilin:Jilin University,2016.(in Chinese)

[9] 赵文龙,张杰,曹峰,等. 一种基于AFDX总线的可靠文件传输机制研究[J].单片机与嵌入式系统应用,2016,16(4):14-17. ZHAO Wenlong,ZHANG Jie,CAO Feng,et al.Research of reliable file tansfer mechanism based on AFDX Bus[J].Microcontrollers & Embedded Systems,2016,16(4):14-17.(in Chinese)

[10] 贺星,王涛. 通用航空综合化航电系统技术研究与设计[J].现代导航,2016(1):40-46. HE Xing,WANG Tao. Study and design on integrated avionics system of general aviation[J].Modern Navigation,2016(1):40-46.(in Chinese)

[11] 魏立峰,李洪亮,王庆辉,等. 一种基于CAN总线的通信系统设计与实现[J].沈阳化工大学学报,2015,29(1):59-64. WEI Lifeng,LI Hongliang,WANG Qinghui,et al.Design and implementation of CAN bus-based communication system[J].Journal of Shenyang Institute of Chemical Technology,2015,29(1):59-64.(in Chinese)

Design and Application of Universal Bus Driver Software for Avionics Systems

MA Zhicong

(Southwest China Institute of Electronic Technology,Chengdu 610036,China)

In consideration of the existing problems of bus driver software in avionics simulation system,such as single function,poor scalability and immoderately repeated development,and according to the features of data driven in avionics simulation system,this paper puts forward a design and implementation scheme of bus driver software for avionics simulation system,which is easy to expand,flexible to configure and stable to run. This scheme bases on the object-oriented design principle,and uses a layered software architecture and modular design. It takes advantage of the flexibly of extensible markup language(XML) and the dynamics and transmission advantage of publish/subscribe data distribution networks. Thus,the versatility and flexibility of the scheme are guaranteed and the robustness and reusability of the software are enhanced. In conclusion,through the design of this scheme,bus driver software remarkably improves the efficiency of multi-bus data distribution in the avionics simulation environment.Key words:avionics simulation system;universal bus driver;layered open architecture;object-oriented design

10.3969/j.issn.1001-893x.2017.07.018

马智骢.通用航电总线驱动软件设计与应用[J].电讯技术,2017,57(7):834-840.[MA Zhicong.Design and application of universal bus driver software for avionics systems[J].Telecommunication Engineering,2017,57(7):834-840.]

2017-03-05;

2017-05-31 Received date:2017-03-05;Revised date:2017-05-31

TP336

A

1001-893X(2017)07-0834-07

马智骢(1983—),男,四川泸州人,2009年于重庆大学获硕士学位,现为工程师,主要研究方向为航空电子信息系统、工程管理、计算机软件工程等。

Email:49601434@qq.com

**通信作者:49601434@qq.com Corresponding author:49601434@qq.com

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!