APP下载

机载网络数据总线仿真技术研究

2018-03-10付强

软件导刊 2018年2期
关键词:发送数据缓冲区队列

付强

摘 要:在机载网络通信领域,常见的总线通信技术有AFDX通信、A429(ARINC 429)通信和CPCI板间通信。在设计和开发机载软件的过程中,脱离机载环境,PC平台对机载软件进行前期验证是一种高效的仿真验证手段,为后期机载硬件平台系统级交联验证提供了功能级的保证。实现基于PC平台的机载软件仿真验证,其中一个核心技术就是模拟机载设备间数据交互的实现机制。本文通过研究以上三种机载网络通信的协议特点和处理机制,结合PC平台的网络通信和实现机制,搭建虚拟总线组件架构,设计适用于不同总线的缓存管理策略,以及基于虚拟共享内存的数据分发服务和基于以太网的数据分发服务,在PC平台下实现机载软件运行节点间的数据通信。

关键词:机载网络;AFDX;ARINC 429;CPCI;缓存管理;总线仿真技术

DOIDOI:10.11907/rjdk.172394

中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2018)002-0164-04

0 引言

机载软件在飞机整体研制过程中占用比重不断增加,在机载软件开发和调试过程中,需要底层嵌入式操作系统及BSP运行环境,机载软件的调试和验证依赖于机载硬件设备,同时需要外部交联系统设备或接口仿真器支持。这些原因会造成软件开发过程依赖于设备供应商的软硬件研制进度,在系统研制初期缺少软件功能仿真与验证手段。机载软件对真实设备的依赖所带来的问题主要体现在三个方面:

(1)资源争用:一方面表现在试验验证、软件测试、软件开发都依赖于机载系统环境;另一方面团队内部无法并行开展软件调试工作,只支持单功能模块的软件调试。

(2)调试效率:调试过程修改代码后需要重置硬件并加载软件,需要多个人来协作完成。

(3)硬件依赖:机载软件开发依赖设备成品厂软硬件研制进度,无法定制数据激励类型和方式,并且缺少虚拟化的仿真和验证手段。

摆脱对机载环境的依赖,在PC平台对机载软件进行前期验证是一种行之有效的开发手段。在对机载环境进行仿真的过程中,核心问题就是对机载网络数据总线的仿真。本文在研究相关的AFDX、A429和CPCI三种常用机载网络数据总线的基础上,构建虚拟总线组件架构,并设计对应的缓存管理策略,在PC平台上实现了机载网络数据总线的通信机制。

1 虚拟总线架构

应用层软件使用虚拟总线层提供的各类总线接口与其他交联子系统或虚拟机载设备进行通信。使用数据分发服务支持网络通信接口仿真和应用软件之间的通信,在传输层使用基于虚拟共享内存的总线通信模拟和基于以太网的总线通信模拟,软件架构如图1所示。

在仿真环境下定义的总线接口与真实机载代码所调用的接口完全一致,保证机载代码在虚拟开发环境与真实硬件设备之间的无缝移植。虚拟总线层向应用程序层提供与真实总线设备相同的通信接口,数据发送与接收通过各种虚拟总线(虚拟AFDX总线、虚拟A429总线、虚拟CPCI)完成。数据分发服务层向虚拟总线层提供数据分发服务,通过建立发送方与接收方的阅关系来绑定发送端口与接收端口,并建立发送方与接收方的数据传输通道。传输层使用两种方式来完成数据从源端到目的端发送:针对基于共享内存的数据分发服务,传输层采用内存管理服务来实现数据发送与接收;针对基于以太网的数据分发服务,传输层采用Winsock库提供的服务来完成数据发送与接收。

2 A429通信仿真

ARINC 429是机载设备间常用的数据通信方式,通过点到点互连,采用单信息源、多接收器传输方法,以半双工方式工作。对A429通信的虚拟化过程主要是模拟A429通道的初始化、对A429通道的读操作和写操作。

首先需要定义A429通道结构和缓冲区结构,A429通道结构包括通道对象ID、通道缓冲区最大尺寸以及通道对象的缓冲区偏移位置。A429缓冲区结构包括缓冲区中实际数据的尺寸、缓冲区中实际数据的首地址。在实现过程中可以为A429通道对象开辟一个共享数据区,该数据区中包括通道对象的定义和通道对应的缓冲区结构,A429的所有通道都在该共享内存区中,用于数据的共享和通信。下面具体介绍A429通道三类主要操作的仿真。

2.1 A429通道初始化

在通道初始化時,主要根据A429的XML配置文件在共享数据区中开辟通道并进行初始化,包括初始化通道的ID、通道缓冲区偏移地址、通道缓冲区最大尺寸等。在通道缓冲区相对于大缓冲区块的偏移地址初始化过程为:缓冲区对象是由len(缓冲区中实际数据的尺寸)和buffer(缓冲区中实际数据的首地址)组成的,所以通道偏移地址是以上一个通道的偏移地址为首地址,以缓冲区对象中的len和XML文件中指定的通道的长度乘以传输数据类型之和为偏移地址得到的。对应关系如图2所示,其中NUM为前一个通道的长度。

2.2 A429总线数据发送

在应用层调用发送接口时,首先判断此应用层通道ID的有效性,然后判断要发送的数据长度是否大于该通道缓冲区的最大长度。若超过则返回“输入数据太长”的错误信息;若未超过,则将数据发送到指定的通道缓冲区中,同时返回“操作成功”的信息。数据存入的位置是由通道所在的大缓冲区的首地址和通道在大缓冲区中的偏移位置决定的。发送处理流程如图3所示。

2.3 A429总线数据接收

在数据接收过程中,将申请的通道ID,待发送数据首地址指针以及数据的长度传给该函数,函数接受到调用后,首先根据用户申请的通道ID判断ID号的有效性,然后判断通道中是否有数据存在。若不存在则返回“无接收数据”的信息,若存在数据则要判断该数据长度是否大于指定的缓冲区长度;若超过则返回“接收数据太长”的错误信息,若未超过,则将数据发送到指定的缓冲区中,同时返回“操作成功”的信息。要接收的数据位置是由通道所在的大缓冲区的首地址和通道在大缓冲区中的偏移位置决定的。该函数的实现流程如图4所示。endprint

3 AFDX通信仿真

AFDX端系统端口通信机制提供两种类型的航空电子通信服务:采样服务和队列服务。

采样服务包括采样发送数据服务和采样接收数据服务。其中,采样发送数据服务是指信息长度小于等于虚拟链路的有效负荷长度,不支持分包,支持组播或单播;采样接收数据服务是指最后的信息存储在特定采样端口中,可以被多个应用读取,每个采样端口都有更新标志符,对于每个读取信息的应用都是可见的。

队列服务包括队列发送数据服务和队列接收数据服务。队列发送数据服务支持数据分包,队列采用FIFO(先进先出原则),队列满后,新的帧将被丢弃;队列接收数据服务是指从队列中读取第一个消息,接收队列满后,新的帧将被丢弃,并向应用发送错误报告,如果涉及分包的情况,整个包组装完成后才允许应用读取数据。

3.1 分布式通信

如图5所示,分布式虚拟化节点间的通信采用基于以太网的UDP通信方式,通过定制网络传输协议,能够支持不同节点间进行AFDX通信数据收发。数据包格式定义顺次包含数据源ID、事件周期数据标识、数据长度、数据载荷。

3.2 AFDX总线数据发送

首次调用AFDX发送接口,需要根据配置的目标IP地址和端口号创建UDP套件字连接。当检测已建立UDP套件字连接后,采用下列步骤组建并发送数据包。

(1)在配置表中查找传入的ID号,在配置表中找到对应的配置条目后,检测数据接收发送标识是否为发送。

(2)数据发送接口根据传入参数组建数据包,包含数据源ID、事件周期数据标识、数据长度、数据载荷。

(3)调用UDP套件字发送函数,向接收端发送数据包,并向应用层返回状态。

3.3 AFDX总线数据接收

数据接收接口实现较为复杂,需要区分队列数据接收和采样数据接收。根据配置表在初始化阶段建立数据缓冲区,缓冲区结构如图6所示。接收到数据包后,首先根据数据包中的ID在配置表中查找对应的配置条目,校验有效性,并访问ICD条目对应的数据缓冲区。

采样数据的缓冲区和队列数据的缓冲区存在差异。采样端口中只存储最新到来的消息,到达的消息覆盖当前缓冲区中的消息,而不用判断是否已经被应用程序读取,同样从采样端口读取消息时,无需将消息移除,而是反复读取,在采样端口中都存在一个标志位,用来标识数据是否更新,当该标志为1时,说明当前端口缓冲区中存在新的消息。每个队列端口具有独立的缓冲队列,可以缓存一定数量的消息,消息被填充到队列中,从队列中按照先进先出的规则读取消息,并将消息从队列中移出。

4 CPCI通信仿真

硬件设备内部处理模块板之间的数据交互称为CPCI通信。CPCI通道的仿真策略是创建一个共享内存区,主要完成不同模块板之间的数据通信。CPCI模块要完成通信功能,需要定义CPCI端口、CPCI通道。缓冲区端口分为采样和队列端口,采样端口一般用于传输周期性变化的数据,而队列端口一般用于传输非周期性变化的数据。

采样端口存储的是最新消息,当接收到新消息后,消息才会被更新,否则保持原先缓冲区内容不变。队列端口能够存储多条消息,后续发送的消息不会覆盖前面的消息,而是以队列的方式存储至消息尾部。当接收应用数据发送消息时,消息被存储到端口对应的消息队列中,如果消息队列满,该程序会被阻塞或取消发送;当端口向应用程序发送数据时,从端口消息队列中取第一个消息发送给应用程序;如果消息队列为空,系统阻塞应用程序或取消接收。端口的属性包含缓冲区的最大尺寸,在整体缓冲区中的偏移位置和目的端口的ID。CPCI的读写操作与A429类似。

5 结语

通过研究AFDX、A429和CPCI三种机载领域常用总线数据通信的协议特点和处理机制,在PC平台构建虚拟总线组件架构,仿真总线数据发送和接收处理机制,设计适用于不同总线的缓存管理策略,屏蔽网络环境的差异性,提供AFDX、A429、CPCI等网络通讯接口以及在PC端的仿真实现。通过使用已构建的虚拟总线,在PC端进行软件的前期联试和验证,能够发现软件设计和开发阶段存在的问题,为后期基于机载硬件平台的系统级交联验证提供了功能级的保证,降低系统交联过程中功能性问题的验证成本,提高系统验证效率。

参考文献:

[1] 杨峰,洪元佳,夏杰,等.AFDX网络技术综述[J].电子技术应用,2016,42(4):4-6.

[2] 刘瑞旸.AFDX端系统协议栈分析与设计[D].西安:西安电子科技大学,2015.

[3] 趙永库,李贞,唐来胜.AFDX网络协议研究[J].计算机测量与控制,2012,19(1):3137-3139.

[4] 解文涛.ARINC429总线采集器的设计和开发[J].测控技术,2010,29(7):24-27.

[5] 周前柏,马伟勃.ARINC429通信方式的研究与实现[J].航空计算技术,2010,40(4):121-124.

[6] 支超有.机载数据总线技术及其应用[M].北京:国防工业出版社,2009.

[7] 许燕婷.AFDX端系统协议桡虚拟链路层分析及仿真研究[D].上海:上海交通大学,2011.

[8] 杜宏伟,马捷中.航空电子全双工交换式以太网及其关机技术研究[J].测控技术,2008,27(12):65-67.

[9] 王绮卉.AFDX核心交换技术的研究与实现[D].西安:西安石油大学,2010.

[10] 钟杰,何民,王怀胜,等.AFDX架构及协议分析[J].电讯技术,2010,50(1):65-71.

[11] 徐科华.AFDX总线网络数据传输分析[J].民用飞机设计与研究,2009(2):35-40.

[12] 熊华钢,王中华.先进航空电子综合技术[M].北京:国防工业出版社,2009.

[13] 高扬,徐景硕.实现ARINC429总线数据传输的方法[J].测控技术,2002,21(8):64-65.

[14] 苗剑峰,刘建业,孙永荣,等.高性能导航计算机的ARINC429总线通讯研究与实现[J].计算机测量与控制,2007,15(11):1614-1617.endprint

猜你喜欢

发送数据缓冲区队列
队列里的小秘密
在队列里
基于马尔科夫链的LoRaWAN网络节点性能分析
带标记方式的CRDSA++协议性能分析*
嫩江重要省界缓冲区水质单因子评价法研究
丰田加速驶入自动驾驶队列
使用IPSec安全传输数据
关键链技术缓冲区的确定方法研究
地理信息系统绘图缓冲区技术设计与实现
AVS标准中的视频码流缓冲区校验模型分析