CAN与光纤通道网关的设计与实现
2015-07-18武华石海洋杨媛媛
武华 石海洋 杨媛媛
摘要:为了解决采用CAN总线的子系统接入航电主干网FC网络的问题,提出了一种CAN/FC网关设计方案。通过对两种网络的分析和研究,设计了两者协议转换的方法,描述了网关模块的工作流程,讨论了实时性的设计。通过验证表明,该设计能够完成CAN网络和FC网络的互联,满足系统要求。
关键词:CAN;FC;网关;协议转换
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)12-0049-03
Design and Implementation of CAN/FC GateWay
WU Hua, SHI Hai-yang, YANG Yuan-yuan
(Aeronautical Computing Technique Research Institute,Xian 710065,China)
Abstract: In order to solve the problem by using CAN bus subsystem access avionics backbone FC network,the paper proposed a design scheme of CAN/FC gateway. Through the analysis and research on the two kinds of network, designs a methods of protocol conversion based on the them, describes the work flow of gateway module, discusses the design of the real-time. Experiments show that, the proposed design, can complete the interconnection of CAN network and FC network, can meet the system requirements.
Key words: CAN;FC;gateway;protocol conversion
CAN总线最初主要应用于汽车内部测量和执行部件之间的数据通信。随着CAN总线相关技术的日趋成熟,以及车载平台与机载平台在某些方面的相似性,其在航空领域的应用逐渐得到重视,近年来已经开始把CAN总线应用到飞机上[1]。
光纤通道(Fibre Channel,FC)协议具有高速率、低延迟、低位错率,能够很好地满足新型航空电子互连系统的要求,已成为航空电子统一网络的主要候选协议。
在航电系统中,FC网络作为主干通信网络,用于连接各航电子系统,但在某些子系统内,仍采用CAN总线协议传输,因此需要设计一种用于CAN/FC转换的网关,将这些子系统接入到航电主干网络。本文通过对CAN网络和FC网络协议及数据帧的分析,提出一种CAN/FC网关的设计方法,讨论了转发的实时性设计,完成了FC与CAN的协议数据转换。
1 CAN与FC协议分析
1.1 CAN总线
CAN的通讯速率最高可达1Mbps,传输采用帧结构(0-8字节)。在CAN2.0B的版本协议中,有两种不同的帧格式,不同之处为标识符域的长度不同,含有11位标识符的帧称之为标准帧,而含有29位标识符的帧称之为扩展帧。无论是哪种帧格式,在报文传输时都有四种不同类型的帧:数据帧、错误帧、远程帧、过载帧,本文只对标准数据帧的处理进行描述。
1.2 光纤通道协议
针对FC技术用于航空电子领域的需求,FC-AE提出一种上层协议FC-AE-ASM,该协议用于支持航空电子应用的处理器、传感器和显示器之间确定、安全、低延迟的通信[2]。本文所描述的FC网络即采用FC-AE-ASM进行数据传输。FC协议共分为5层,具体见表1[3]。
表1 FC协议分层结构
[FC-4\&定义了光纤通道的应用接口,规定了上层协议到光纤通道的映射\&FC-3\&对物理和信号(FC-PH)层以上的高层协议提供了一套通用的公共通信服务\&FC-2\&规定了节点间的数据传输方式,以及帧格式、帧序列、通信协议和服务分类\&FC-1\&规定了传输协议,包括串行编码和解码规则以及差错控制\&FC-0\&规定了连接的物理特性,如传输介质、传输方式和速率\&]
在光纤通道的FC-2层中,定义了帧的标准格式,每个帧标准长度为2148B,其中包括:帧起始标志SOF、帧结束标志EOF、CRC校验码、FC帧头以及数据信息,FC帧的格式定义如图1所示。
FC-AE-ASM协议是ASM协议到FC的映射,要求Tpye字段为0x49,并且将ASM协议头映射到FC帧的数据字段中。FC-AE-ASM协议中,每条消息都有唯一的消息ID,根据消息ID来标识数据的内容。FC-AE-ASM的帧格式如图2所示。
1.2.1 网关协议转换分析
为了将CAN网络接入FC网络,顺利实现两者的信息交流,必须用网关连接起来,完成两者协议或数据之间的转换,也就是将传输信息重新封装且满足目标网络协议的要求。CAN与FC网关必须能够接收和发送两个网络上的数据。CAN网络参考ISO模型,自上而下分为三层:应用层、数据链路层和物理层,因此针对两者网络的分层模型,在应用层完成CAN网络和FC网络的数据交换即可实现网关功能,如图3所示。
CAN与FC数据的转换需要通过分析各自的帧结构,提取重要信息,设计转换协议,实现两种网络的数据交换。包括CAN到FC的转换与FC到CAN的转换。两者通过网关进行数据传输的示意图如图4所示。
首先定义用于CAN和FC进行转换的ASM消息ID及其属性,消息ID作为FC-AE-ASM接收的唯一标识,在FC网络配置时,确定用于封装CAN数据的消息ID,以便收到该消息的节点进行对应的处理。
由于CAN数据载荷最大为8字节,FC-AE-ASM数据载荷最大为2096字节。因此从CAN到FC的数据转换相对简单,将CAN信息存放在FC-AE-ASM帧的数据字段,定义要转发的CAN数据、标识符、帧格式、保留字等内容。当网关接收到CAN数据时,将CAN信息按照上述格式填充到FC-AE-ASM帧的数据字段,发送到FC网络中。具体定义如图5所示。
从FC到CAN的转发相对复杂,FC消息的载荷最大为2096字节,可以存放多帧CAN数据,考虑到CAN的速率和CAN设备的数目等因素,设计最多转发256字节的CAN数据,并在FC消息中定义CAN数据实际长度,标识符、帧类型等内容,封装在FC-AE-ASM数据字段的CAN信息定义如下。
当网关接收到FC消息时,首先从FC-AE-ASM帧的数据字段读取CAN数据的实际长度,如果大于8个字节,按照一帧8个字节的方式,计算CAN的帧数目,并封装CAN数据,分为多次发送出去,CAN标识符ID按照约定递增。具体流程如图7所示。
1.2.2 设计与验证
1)CAN/FC网关模块设计
本文研制的CAN/FC网关模块,提供FC光接口及CAN总线接口,实现FC与CAN总线数据的转换工作。模块采用FPGA设计,实现FC协议处理,FC-MAC、MGT及CAN接口控制等功能,FPGA具备协处理器硬核,用于完成CAN/FC协议转换的软件处理工作,外接光电收发器实现FC光电信号转换。CAN网络接口由CAN控制器SJA1000和CAN收发器SM1050组成。CAN/FC网关模块功能框图如图8所示。
通过协处理器,对CAN和FC接口进行初始化,设置速率、帧格式、帧类型、校验码、过滤码等参数,设置FC消息的ASM消息ID、S_ID、D_ID等参数。
MGT单元和光电收发器实现FC-1和FC-0层定义的串并转换、8B/10B编码和物理层功能[4]。
CAN转FC的过程中,CAN数据从总线上接收上来后,进入CAN控制器的接收缓冲区,协处理器的软件通过查询,判断CAN的接收缓冲区是否有数据,如果有数据,读取CAN数据信息,再根据FC发送管理逻辑判断FC缓冲是否有空闲,如果有空闲,将CAN数据封装到FC消息的数据中,然后将组织好的FC消息内容写入FC发送缓冲区,发送缓冲区采用环形缓冲机制,缓冲区大小为4K字节;数据写入后,更新FC发送管理逻辑状态。FC发送控制逻辑响应发送缓冲区状态变化,按照先进先出的队列读取方式,将当前发送缓冲区中的数据帧取出提交给FC MAC,并更新发送缓冲区状态。最终FC数据帧由MGT经光电转换后发送至FC网络。
FC转CAN的过程中,FC接收控制逻辑负责响应并接收FC数据帧,将FC帧写入FC接收缓冲区,接收缓冲区采用环形缓冲机制,缓冲区大小为4K字节;待FC帧接收完成,将状态通知FC接收管理逻辑,并报中断给协处理器,协处理器收到FC接收中断,从当前FC接收缓冲区将FC数据取出,提取CAN的相关信息,判断CAN数据实际长度,如果需要分帧,按照上一章节规则进行处理,将组织好的CAN数据写入CAN控制器的发送缓冲,并通知其发送到CAN网络。
2)实时性设计
CAN/FC网关在应用环境中的典型场景为,FC网络按照应用任务规划,以不同的周期通过网关向CAN网络发送数据,并且CAN网络按照最小周期监控数据,对转发时间要求较高。CAN网络则是在有数据时,通过网关向FC网络传递信息,且时间要求较低。因此协处理器软件在CAN/FC转换时,需要考虑两者的速率相差较大和封装数据多少的问题。FC速率至少为1Gbps,CAN最高为1Mbps,且从FC网络转CAN时,最多可以携带256字节的CAN数据,转发时,数据量不同时间不同。
从CAN网络到FC时,数据内容长度固定,转换可以及时处理。但从FC到CAN的转换时,面临如下问题。为了保证及时转发数据,降低延时,采用中断接收FC数据。当任务周期重合时,会在短时间内突发接收到大量FC数据帧,可能引起丢失中断,因此在处理FC接收中断时,需将FC接收缓冲中的数据读空,将已收到的FC数据全部转换为CAN数据发出去,从而保证高的响应速度和低延迟的转发传输。
3)验证环境
模拟实际应用环境,搭建验证平台,将CAN测试设备的数据通过CAN/FC网关模块,基于FC协议数据帧封装,通过FC光纤链路,经过FC专用测试设备,发送到FC功能节点。FC功能节点按照应用任务周期,向CAN/FC网关模块发送FC消息,网关提取有用信息、重新组织CAN消息,并发送到CAN总线上,CAN测试设备接收。经测试CAN的接收时间满足应用要求。验证环境如图9所示。
2 结束语
本文在深入分析CAN协议和FC协议的基础上,对CAN/FC网关协议转换的数据封装进行设计,结合网关模块的设计,描述了网关工作的流程,并对实时性的设计进行了探讨。将网关连接到实际网络上,长时间连续工作,数据在两种网络中传递,没有出现数据丢失,且延时满足系统的要求,进一步验证了该设计的可行性和可靠性。
参考文献:
[1] 冯源,豆海利.CAN总线在航空领域应用的探讨[J].航空工程进展, 2011,2(2):231-235.
[2] 丁凡,宋丽茹,熊华钢.FC-AE-ASM 网络数据发送控制算法研究[J].电子与信息学报,2009,31(6):1509-1512.
[3] 沙永忠,冯巧宁,刘明,等.光纤通道航电总线数据采集器设计[J].测控技术,2014, 33(3):106-109.
[4] 朱志强.基于光纤通道的LVDS 图像传输技术研究[J].光通信技术,2013(6):48-51.