- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于AFDX的跨总线ARINC615协议软件设计及实现
摘要:ARINC615协议定义了一种基于ARINC429总线的数据加卸载方法,在以AFDX网络为核心的航电网络中,数据加载器一般为基于AFDX通信的端系统设备,为了完成航电网络加载器对ARINC429总线设备的加载,文章提出了一种基于AFDX的跨总线加载结构,采用有穷状态机的方法实现了ARINC615协议的功能,设计并实现了基于ARINC615协议的应用软件,保证了文件传输的有效性和可靠性。
关键词:ARINC615协议;AFDX协议;文件传输;软件
0 引言
ARINC615协议定义了一种机载计算机高速数据加载器,基于ARINC429总线完成对机载计算机的数据上传和下载功能。在以AFDX网络为主干网络的航电网络中,以AFDX网络为核心,外围通过远程数据接口单元挂载ARINC429总线设备,航电网络加载器一般是基于AFDX通信来完成航电网络数据的加卸载功能,导致对ARINC429总线设备的加载需要通过基于AFDX通信的网络加载器来完成,针对此问题,本文将ARINC615协议加载端移植到基于AFDX通信的航电网络加载器上,提出一种基于AFDX的跨总线ARINC615协议软件设计实现方法,并设计应用层的加卸载方案,实现了航电网络加载器和目标机的数据文件加卸载功能。
1 ARINC615协议概述
ARINC615协议是基于ARINC429总线的数据加卸载协议,其加载端和目标机均需支持ARINC429基本数据通信,在ARINC429基本通信的基础上,ARINC615协议定义了一系列的规则,通过握手一响应一确认机制来完成数据在加载端和目标机的传输过程。
1.1 基本协议层交互定义
429总线上传输的数据单元长度为32位,因此ARINC615协议的命令及数据传输均是基于32位的数据包进行。ARINC615协议的数据通信的交互命令定义如表1所示。
如表1所示,ARINC615协议交互命令分为初始字命令、中间字命令和结束字命令三种。三种命令数据格式中第32位为奇偶校验位,第1到8位为429的Label号标识,第30和31位区别三种类型的命令。初始字命令用于数据传输前的命令交互握手,其数据格式中第23位到第29位标识不同类型的初始字命令,RTS命令用于发送请求命令,其9到15位标识本次发送请求要发送的记录个数;CTS命令用于对RTS命令的响应,其9到15位标识可接收的记录个数;DF命令表明开始数据传输,其16到22位标识当前传输的记录序号,9到15位标识当前传输的记录的总字节数;AC K和NAK命令标识对数据接收的确认,其16到22位均标识其确认的记录序号;SYN命令用于加载端和目标机的同步;HDR命令通过第16到22位的命令字段来发起包括读数据块、写数据块、加载完成、进入自动模式等命令;加载端发送POL命令来探测有可能的自动下载操作。中间字主要用于传输数据,DATA命令中第8到24位为数据段,包含两个字节的数据信息。结束字用于每个记录传输完成后的数据校验和传输。
1.2 配置文件定义
在ARINC615协议的加载端,需定义配置文件CONFIG.LDR,用于对加载端上传和下载操作进行定义和描述。CONFIG.LDR文件中配置参数格式描述如下:
parameter_id=parameter valueCR,LF>
其中parameter_id为一个变长字段,包含了要定义的配置参数名,配置参数名中可包含一个数字‘n’,标识所定义的参数为第几条总线参数,n的范围为1~8,如BlP用于定义第一条总线的优先级。parameter_value为具体的配置参数值,对于有多个参数值的配置参数,参数值之问用逗号隔开。CR,LF>为回车换行符。
CONFIG.LDR配置文件主要配置参数的定义及其含义如表2所示。
表2中给出了CONFIG.LDR文件中主要参数的定义,包括总线属性定义、总线优先级定义、总线发送文件定义及总线接收文件定义等。
1.3 协议功能定义
ARINC615协议将要上传或下载的文件分为多个块(block),每个块大小由CONFIG.LDR中BnT属性定义,默认每个块大小为1024字节,在每次数据传输过程中,将块又细分为记录(record),对于上传操作,每个记录大小范围为0~252字节,对于下载操作,每个记录大小为0~254字节,每次数据交互以一个记录为单位进行。
协议的功能基于基本交互命令实现,协议的主要功能定义如下:
(1)通信初始化。加载器读取配置文件的内容,根据配置文件的信息选择上传或下载操作,发送初始化命令,收到目标机响应后,进入上传或下载操作;
(2)上传操作。上传操作分为通信初始化后直接上传、控制模式文件选择上传、控制模式下上传。
通信初始化后直接上传:总线配置文件的上传文件是目标机端需要的,在通信初始化完成后,直接向目标机上传文件。
控制模式文件选择上传:总线配置文件的上传文件不是目标机端需要的(或者未定义上传文件),目标机端发起控制模式命令,加载器进入控制模式。在控制模式下,目标机需要在指定文件后进入直接上传模式,加载器向目标机上传文件。
控制模式下上传:总线配置文件的上传文件不是目标机端需要的(或者未定义上传文件),目标机端发起控制模式命令,加载器进入控制模式。在控制模式下,目标机控制整个数据传输过程,目标机指定需要的文件,从加载器读取数据。
(3)下载操作。下载操作分为通信初始化后直接下载、控制模式文件选择下载、控制模式下下载。
通信初始化后直接下载:总线配置文件的下载文件是目标机端需要的,在通信初始化完成后,加载器等待目标机传输文件,当目标机准备好后,向加载器发送数据文件。
控制模式文件选择下载:总线配置初始化为自动上传或自动下载,目标机发送控制模式命令,进入控制模式,在控制模式下,目标机打开文件进行写操作后,转入直接下载模式,向加载器发送数据文件。
控制模式下下载:总线配置初始化为自动上传或自动下载,目标机发送控制模式命令,进入控制模式。在控制模式下,目标机控制整个数据传输过程,打开文件后向加载器写入文件数据。
2 跨总线加载方案设计
跨总线加载方案定义了一种基于AFDX的加卸载方法,其加载端基于AFDX通信协议运行,目标机基于ARINC429协议运行。
跨总线网络协议栈如图1所示。加载器与目标机端之间通过数据网关连接,数据网关完成ARINC664协议到ARINC429协议的转换。加载器端
底层基于ARINC664总线,通过协议映射层完成AFDX数据到ARINC429数据的转换,以支持ARINC615协议加载端的运行。数据网关实现了ARINC66 4协议和ARINC429协议的双向转换工作,定义了数据转换规则。在数据网关上需维护(AFDX发送端口号,AFDX接收端口号,429设备标号)的映射关系表。当数据网关收到一个AFDX数据包时,利用AFDX接收端口号查找映射关系表,可以取得这个AFDX数据的目的429设备,数据网关解析AFDX数据包,进行相应的转换为N429数据,发往目的429设备。而当数据网关设备接收到一个429数据包时,利用429设备标识查找映射关系表,获得429设备对应的AFDX发送端口号,然后对数据进行转换封装为AFDX数据帧,通过查找到的AFDX发送端口号发送出去。
由于ARINC615交互数据及429设备数据均为32位长度,而对于AFDX网络来说,每次传输数据只传输32位有效数据,对网络带宽会造成较大浪费,因此,在数据网关设备的协议转换层需进行数据融合,即数据网关能够将多个32位429数据封装到一个AFDX数据包中进行传输,同时在接收到一个包含多个32位ARINC615协议数据的AFDX数据包时,能够将每个ARINC615协议数据解析出来,依次拆分为32位ARINC429协议数据发送出去。
3 基于有限状态机的协议实现
在ARINC615协议的上传和下载过程中,每一时刻加载端和目标机都处于一个特定的状态,而且所有可能出现的状态是确定的,定义软件开始运行时状态为初始状态,当有输入事件时,软件整个过程按照状态机开始跳转运行,直至运行至终止状态。
因此,可以根据ARINC615协议,抽象出加载端及目标机软件运行的各个状态类型,按照表3所示的状态转移表整理协议中所有的状态及其转移流程。
表3中,当前状态指当前软件所处的状态,在输入事件的情况下,调用处理函数后运行至下一状态。一个当前状态可对应多个输入事件,分别调用对应的处理函数,进入不同的下一状态。按照表3建立ARINC615协议的状态转移表,并按照功能实现各状态在输入事件下的处理函数,软件即可依照状态转移表运行,状态机运行的接口定义如下:
其中init_state为状态机起始运行的状态,init_event为状态机初始的输入事件,exit_state为状态机的结束状态,exit_event为状态机的退出事件,session和parameter两个参数记录了状态机运行过程中的会话和参数信息。通过StateMachine接口,可完成ARINC615协议的自动运行。
4 基于ARINC615协议的应用软件
ARINC615协议定义了文件数据传输的过程,基于ARINC615协议,设计应用层软件,实现一种工程上可靠、实用的文件上传和下载功能。在应用软件中,主要的功能包括:
(1)加载端和目标机端要传输的文件名的获取,保证加载端和目标机端都能够知道要对方上传和下载的文件的文件名;
(2)文件传输最后填充字节的识别和剔除,避免由于ARINC615协议数据传输过程中为了字节对齐而填充的数据对文件正确性的影响。
应用层软件的加载端和目标机端的工作流程如图2所示。
如图2所示,在加载端,定义了CONFIG.LDR文件,在该文件中,定义加载端发起自动上传操作,且第n条总线上要上传的文件名为File List[n],其中n代表第n条总线,其取值范围为1~8,在FlieList文件中定义了加载端要上传和要下载的文件名称,及该文件对应的属性(上传或者下载)。软件开始运行后,由加载端解析CONFIG.LDR配置文件,发起自动上传操作,加载端和目标机端进入自动上传模式,由加载端将约定好的FileList[n]文件传输至目标机端,文件传输完成后,加载端等待目标机端的控制模式命令。目标端在接收到FileList文件后,解析该文件,获取加载端要上传的文件名及要下载的文件名后,发起控制模式命令,加载端和目标机端均进入控制模式。在控制模式下,由目标机端控制文件的上传和下载,目标机根据解析的要上传和下载的文件名,对于要上传的文件,目标机端发起读操作,从目标机端读取上传文件;对于加载端要下载的文件名,目标机端发起写操作,向加载端写入数据文件。对于定义了多条总线的CONFIG.LDR配置文件,加载端按照总线优先级依次进行如图2所示的文件传输流程,直至所有总线上定义的数据文件均传输完成。
ARINC615协议中每次数据传输的一个DATA命令传输两个字节的数据,在协议中规定了当文件传输最后仅剩一个字节时,需填充一个字节,然后进行数据传输,这就导致了在文件传输过程中,对于要上传或下载的奇数字节文件,在文件传输完成后,会出现多一个填充字节的问题。在应用软件设计中,利用DATA命令中协议未定义的第25位作为判断标识位,在正常的文件传输下,该位标识为0,当出现数据填充后,将该位置标识为1,在文件接收端,如果发现该位为1,则能够确认接收到的数据中有一个字节的填充,这样可以将填充的字节剔除,从而保证了文件的正确性。
5 结语
文章介绍了AIRNC615的基本原理,提出了一种基于AIRNC615的跨总线加载结构,采用有穷状态机的方法实现了AIRNC615协议的功能,从工程应用的角度,设计并实现了基于AIRNC615协议的应用软件,保证了文件传输的有效性和可靠性。