1应用程序设计
(1)应用程序需求在AFDX实验系统上,开发AFDX端系统应用程序,测试AFDX网络的确定性、安全性、可靠性等性能参数,进一步验证AFDX的性能及其适航性。应用程序的核心是为了向用户提供友好的界面,使用户在不知道底层封装时,通过调用终端板卡接口函数,实现板卡初始化,数据帧配置,数据发送/接收功能以及数据的统计功能,具体如下:①板卡初始化,能够完成链路建立,实现计数器、计时器清零,以及相关历史信息的清除,实现系统复位。②数据配置功能,发送部分,要实现发送数据帧格式内容的配置,使发送数据帧满足正确性和完整性;接收部分,可以配置接收文件。③数据通信链路,如果不能正常通信,可以报错,并返回到初始状态;如果正常接收,接收部分,能够解析接收到的数据信息并显示。④数据通信的统计功能,能够对发送/接收的数据帧的总数做统计,同时可以分别完成对正确帧和错误帧的统计。⑤数据过滤功能,能够在接收端设置过滤条件,实现有条件的数据接收。
(2)应用程序模块组成应用程序分成7个模块,分别是初始化模块、数据发送配置模块、发送模块、数据接收配置模块、接收模块、统计模块、过滤模块,如图2所示。其中,初始化模块主要实现打开板卡、帧计数器清零的工作;数据帧发送配置模块,主要是实现对数据帧的端口号、虚拟链路号、带宽分配间隔(BAGValue)、端口(NetSel)A/B进行设置等工作;数据发送模块主要实现选择数据发送方式、启动端口发送、实现数据传输;接收数据配置模块主要实现对接收条件进行配置,从而实现普通接收和条件接收;数据接收模块主要是从缓冲区接收数据,并将接收到的数据写入文件,且文件要按照一定的格式存储等;统计模块实现对发送数据帧的总数、发送包速率、发送速率的统计功能;过滤模块是实现有选择性的接收数据,对接收数据提出一些约束条件,从而接收到用户希望得到的、符合条件的数据。
(3)应用程序详细设计此应用程序是利用基于HKS664ES监控卡的接口函数实现的。实现原理:利用监控卡打开函数monitor_card_open(),打开板卡,然后根据ARINC644协议,调用发送控制函数SendCtrl(),对发送的数据按照数据帧定义的格式进行配置,然后利用发送/接收线程,调用板卡发送/接收函数moni-tor_card_send/receive(),实现数据的发送、接收,最后,调用monitor_card_close()函数,关闭板卡。该应用程序采用多线程机制,数据发送线程从应用程序读数据,数据接收线程从AFDX终端设备读取数据,主线程负责设备控制、数据处理,其和设备间的通信通过动态链接库实现。下面详细介绍应用程序的主进程、发送线程、接收线程。(1)数据发送线程①发送数据配置模块在这个模块中,虚拟链路号配置是最关键的。因为AFDX采用静态路由,虚拟链路号唯一确定了目的端口,它是用目的MAC地址的后16位来表示的,且根据ARINC664协议第7部分可知,目的MAC地址的第一个字节默认为0x03。由于发送数据是按网络帧的格式定义的,因此,类似循环校验码FCS,序列号SN等,都会放置在数据帧固定的位置中,所以配置时,一定严格按照帧的定义填写,否则无法解析。同理,还要配置发送端口(A/B),带宽分配间隔(BAG),数据重复发送次数count、数据长度length,数据发送方式等。②数据发送模块将配置好的数据帧信息加载到板卡上,如果加载成功,就启动发送线程,调用发送函数(利用板卡提供的接口函数),发送数据;然后,当数据发送完,则终止发送线程。其中,定义一个标志量,通过判断它的值来决定是否停止调用发送函数,终止线程,例如定义sendflag,若sendflag=1,则停止发送,反之,继续发送。具体流程图见图3。③统计模块统计模块是对发送或者接收的数据作出统计,只需在发送/接收函数前,设置计数器和计时器即可。计数器分为数据包(帧)计数器和字节计数器,可分别用send_c和send_b来表示;对于发送函数,计数器用“T计”来表示,每调用一次发送函数,包计数器send_c加一次数据重复发送次数count,字节计数器自加length(IP),这是指每一帧数据的长度(用字节数表示);对于接收函数,同发送函数的情况。具体流程图见图4。(2)数据接收线程①接收数据配置模块主要实现存储位置的配置和滤波条件的配置。存储位置的选择,即选择接收数据所要存储的文件,或者给出存储路径;滤波部分只对虚拟链路号(VLID)、帧序列号(SQN)这两个条件进行设计,其他情况可推而广之。②数据接收模块在完成对接收数据存放位置的配置,以及过滤条件的配置后,启动接收线程,调用接收函数,实现数据的接收。其中,同发送过程,定义一个标志量,例如rcvflag,通过判断它的值来决定是否停止调用接收函数,终止线程。若recflag=1,则停止接收,反之,继续接收。具体流程图见图5。③过滤模块过滤功能,实际上就是按照用户输入的约束条件,对数据进行有选择的接收。过滤条件的种类很多,比如数据帧虚拟链路号,帧序列号,数据帧长度等。过滤条件也可以有各种组合形式,限于篇幅,这里不再详述。(3)主进程主进程完成工作:首先,打开板卡,对计数器和计时器清零,利用监控卡打开函数(monitor_card_open())获得设备句柄。然后,在板卡正常工作后,启动数据发送和接收线程,进行数据以及简单文件的传输,实现数据通信。此外,还可以通过设置计时器和计数器,实现传输数据的统计功能。具体流程图见图6所示。本文来自于《计算机测量与控制杂志简介详见
2程序运行结果
在实验中,硬件连接方面,用3根网线分别将交换机端口1、2、3与板卡1、2、3的端口A相连。首先,通过基于交换机调试用的软件,将一个配置好的静态路由表加载到交换机中,在此路由中,定义虚拟链路号VirtualLink为1的链路,是从交换机的端口1进,端口2出;虚拟链路号VirtualLink为2的链路,是从交换机的端口2进,端口1出;然后,打开利用VC++编写好的应用程序,选择虚拟链路号VirtualLink为1,即确定数据是从交换机端口1进,端口2出;选择板卡的端口为A(即NetSel为1),说明发送端的板卡是由端口A连接至交换机的;带宽分配间隔取BAGValue为1ms(即BAGValue为1);在数据配置完成并成功加载到板卡后,启动板卡,开始收发数据;程序转到数据发送/接收界面,通过“文件选择”,选择发送的文件,然后通过发送/接收按钮,实现数据的发送/接收。交换机配置表,见表1。
3结束语
AFDX应用程序设计完成了AFDX实验系统的数据传输,并具有AFDX网络数据传输的基本统计功能,在简单且易操作的图形界面下,可以和用户进化交互。该应用程序为开展AFDX系统的应用研究和网络的适航性提供了基础。在航空电子系统中,AFDX凭借延迟确定、传输速度高、可靠性高、维护性高、所需配线少等明显优势,势必成为新一代航空数据总线的主要选择[4]。在后续的研究中,可以加入高精度时间标记、虚链路层的故障注入等功能,可以更深入经济管理论文的开展AFDX网络的研究与应用。
作者:陈冬英 宋东 郭甲琦 单位:西北工业大学