前言
FlexRay总线目前主要应用在高端品牌车型(如宝马、奔驰、奥迪、沃尔沃、捷豹路虎、凯迪拉克等),在以太网技术没有成熟之前,也有部分OEM将其作为主干网应用。
相对于传统的CAN测试,FlexRay测试有哪些特点呢?本期我们将主要介绍FlexRay相关协议,并分享FlexRay诊断刷写测试实践经验。
FlexRay简介
FlexRay的出现始于二十世纪九十年代末,BMW和Daimler Chrysler开始着手进行FlexRay的研究,其初始目标是为了实现线控等应用。2000年成立了FlexRay联盟,2005年发布FlexRay V2.1规范。2006年,FlexRay首次应用于量产车——用在BMW X5的悬架系统中。FlexRay总线具有以下技术特点:
· 时间确定性
FlexRay静态段采用基于时间触发的媒体访问策略,保证了消息传输的时间确定性。
· 容错性
FlexRay支持单通道和双通道的容错通信,使得当一个通道出现故障无法进行通信时,另一个通道上的数据可以保证系统的正常运行。
· 灵活性
FlexRay通信周期分为静态段和动态段,将基于时间触发和基于事件触发两种媒体访问方式相结合。
· 高带宽(相对于CAN/CAN FD)
FlexRay支持两个通道同时进行数据传输,每个通道的带宽最高可达10Mbit/s。
另外,大家可以留意下近期新的以太网通信技术10Base-T1,其相关的通信技术与FlexRay有异曲同工之处。
FlexRay通信协议
FlexRay拓扑结构
FlexRay有两个通道,即通道A和通道B,支持多种网络拓扑结构,可配置成:
· 单通道或双通道总线网络
· 单通道或双通道星型网络
· 总线型和星型的混合型网络
图1 双通道总线型拓扑结构
FlexRay帧格式
FlexRay数据帧由帧头、有效负载数据段和帧尾三部分构成。
图2 FlexRay帧格式
FlexRay媒体访问控制(MAC)
FlexRay媒体访问控制(MAC)是基于循环的通信周期来实现的,在一个通信周期中,FlexRay协议提供两种MAC:
· 静态段基于时分多址TDMA(time division multiple access)的访问机制
· 动态段基于最小时隙的访问机制,也称灵活的时分多址FTDMA(flexible time division multiple access)
通信周期是 FlexRay 媒体访问控制的基本要素,协议是通过时间分层的方法来定义通信周期的。
图3 通信周期的时间分层
1.通信周期层
一个通信周期包括静态段、动态段、符号窗口和网络空闲时间四个部分。
· 静态段采用TDMA机制进行数据传输
· 动态段采用FTDMA机制进行数据传输
· 符号窗口主要用来发送特征符号
· 网络空闲时间在一个通信周期的末尾,主要用来进行时钟同步
2.仲裁网格层
在仲裁网格层中,静态段是由若干个等长的静态时隙(static slot)组成的,动态段是由若干个等长的最小时隙(minislot)组成的。
3.最大时间节拍层
不同数目的最大时间节拍(macrotick)分别构成了静态时隙、最小时隙、符号窗口及网络空闲时间部分,所以整个通信周期是由若干最大时间节拍组成的。
4.最小时间节拍层
一个最大时间节拍是由若干个最小时间节拍(microtick)组成的。
FlexRay传输层协议
ISO 10681-2规定了FlexRay网络层和传输层协议(本文不做区分,统称传输层协议),相对于CAN传输层协议,FlexRay传输层协议具有如下不同点:
协议功能
· 支持无ACK应答和有ACK应答(带消息重传机制)的数据传输
· 支持已知消息长度和未知消息长度的数据传输
图4-1无ACK应答报文传输
图4-2 有ACK应答报文传输
传输层C_PDU类型与PCI字节
图5 C_PDU类型与PCI字节
l 起始帧
分为无ACK的STFU和有ACK的STFA两种,通过PCI第一个字节的低4位来区分两者,FPL表示该帧传输的有效净荷长度,ML表示数据传输的总长度。
l 连续帧
一般情况下使用CF1,如果有消息重传时,需要CF1和CF2之间进行切换。当发送buffer和接收buffer受限时,每个block的传输会以CF_EOB(End Of Block)结束,用于请求接收端给出下一个流控应答。
图6 Num Bytes of Block与BufferSize(BfS)
· 流控帧
PCI第一个字节的低四位用于区分流控状态:
o 3表示CTS(ContinueToSend)
o 4表示ACK_RET(Acknowledge/Retry)
o 5表示WT(Wait)
o 6表示ABT(Abort)
o 7表示OVFLW(Overflow)
· 尾帧
与CAN 传输层协议不同,FlexRay在分段传输时必须以LF结束。
接收节点的接收性能参数
· CAN: 传输层协议通过BlockSize (BS)和SeparationTime (STmin)来体现,FlexRay是通过BufferSize (BfS)和Bandwidth Control (BC)来体现的
· BfS:表示接收节点当前可接收的最大buffer
· BC:包含两个参数,separation cycle exponent (SCexp)和maximum number of PDUs per cycle (MNPC)
传输层C_PDU与链路层L_PDU的映射
图7 C_PDU格式
图8 L_PDU格式
FlexRay诊断刷写测试实践
FFlexRay诊断相关的测试相对CAN/CAN FD而言,其测试规范的制定及测试脚本的开发相对更为复杂,如下为北汇信息基于Vector公司的CANoe及部分自定义函数在项目中实现了FlexRay诊断刷写测试的示例。
FlexRay诊断报文示例
图9 FlexRay诊断报文示例
FlexRay诊断测试开发
采用CANoe的CAPL脚本及部分自定义函数实现了诊断通信、诊断服务和诊断刷写的自动化测试。
图10 FlexRay诊断通信部分测试项示例
图11 FlexRay诊断服务部分测试项示例
图12 FlexRay诊断刷写部分测试项示例
图13 FlexRay诊断测试报告示例
总结
北汇信息多年来一直专注于汽车电子测试,在网络测试、诊断测试以及功能测试等领域积累了丰富的实践经验。目前,我们已实现了CAN、CAN FD、LIN、FlexRay和Ethernet的诊断及刷写测试,欢迎感兴趣的客户朋友与我们探讨交流~
部分图片来源于Vector
参考文献
[1] ISO 10681-2
[2] FlexRay Communications System Protocol Specification v3.0.1