问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

FlexRay通信协议详解

创作时间:
作者:
@小白创作中心

FlexRay通信协议详解

引用
CSDN
1.
https://blog.csdn.net/weixin_42438100/article/details/142876118

FlexRay是一种高速汽车网络通信协议,主要用于满足汽车主动安全系统和驾驶辅助功能对高带宽、高可靠性的通信需求。本文将详细介绍FlexRay的通信原理、物理层特性、通信周期结构以及总线访问机制。

1. 起因

随着汽车技术的发展,传统的CAN总线通信方式已无法满足新兴驾驶辅助功能的需求。例如,ABS防抱死系统、ASR驱动防滑系统、ESP电子稳定系统等涉及汽车主动和被动领域的高要求辅助功能,需要更多的交互节点、更高的传输带宽(动力系统传输波特率需要达到2Mbit/s以上),以及对汽车通信系统的可靠性、安全性、实时性提出更高的要求。

FlexRay协议因此应运而生,它需要满足以下要求:

  1. 通信速率:达到10Mbit/s
  2. 可扩展性:增删节点不影响通信效果
  3. 物理层:保持简便连接
  4. 传输可靠性:更高的通信容错性和确认性

2. 通信传输方式

FlexRay采用时分多址(Time division multiple access,缩写:TDMA)方式。每个通信周期被划分为多个时间片(tcycle),每个时间片又可分为4个时间片段,每个片段指定一条报文。这种机制确保了发送节点的时间是确定的,以时间片为单位周期性发送数据。

3. 物理层

3.1. 拓扑结构

3.1.1 点对点结构

  • 两个ECU侧均接80~110Ω终端电阻,用于过滤高频信号。
  • 为保证信号完整性,两个节点之间的连线长度不超过24m,信号线越长,信号衰减、失真越严重。

3.1.2 被动星型和被动总线型结构

适用于大于四个节点的场景,均在离节点最远的两个ECU出增加终端电阻。

3.1.3 主动星型结构

在被动星型结构上增加主动星型耦合器,每个ECU节点和耦合器上都增加终端电阻,用于补偿信号失真,但成本也会增加。

3.1.4 实际应用

实际应用中,通常采用混合拓扑结构,不会单独使用其中一种拓扑结构。

3.2. 物理信号

FlexRay定义了四种物理信号电平:

  • 总线空闲电平(Idle_LP)
  • 总线空闲低功耗电平(Idle,隐形电平)
  • Data_1(显性电平)
  • Data_0(显性电平)

注意:Data_1、Data_0的BP和BM电平不一样,前者差值大于600mv,后者差值小于-600mv。

3.3. 网络组件

  • uc:主机,包括ECU应用软件
  • CC:通信控制器,用于组帧、总线访问、收发报文
  • BD:总线驱动(收发器),用于物理电平和逻辑信号转换、IO控制
  • BG:除上述结构外,还可能存在拓展结构,CC与BD之间添加总线监控器,为了防止故障节点在未分配给他们的时隙内出现未经授权的传输(防止故障节点在错误时间访问总线)

4. 通信周期

FlexRay以通信周期为一个循环,一个通信周期中划分64个Cycles,每个Cycles又划分为静态、动态、符号窗口、网络空闲段。

4.1 静态段

基于TDMA方式传输,提供确定性的数据传输,发送节点的报文指定到slot中。整个静态段可划分为2~1023个等长的静态slots,slots个数和长度由参数gNumberOfStaticSlots和gdStaticSlots决定,注意此处的slot序号从1开始计数。

静态段中,每个报文均是等长的,由帧头、负载、校验段(Trailer)、帧尾组成,静态帧尾CID(通信空闲鉴定符)用于表示静态帧结束。

4.2 动态帧

用于传输事件驱动的报文,可分为若干动态Slots(Slots大小可变)。动态Slots最小单位为gdMiniSlot,一个动态Slots可由多个gdMiniSlot组成,总Slots由gNumberOfMiniSlots配置。最多划分2047个动态Slots,7986个gdMiniSlot。

4.3 符号窗口和网络空闲段

符号窗口长度固定,用于传输符号,符号分为三种类型。网络空闲段(NIT),用于同步本地时钟,不进行数据通信。

5. 帧结构

5.1 Header

  • 前5Bit
  • 1:保留位,默认发送0
  • 2:有效负载指示位,根据静态、动态报文类型的不同
  • 3:空帧指示位,用于指示Payload部分是正常还是无效;
  • 4-5:分别为同步帧指示位,启动帧指示位,用于判断该帧为同步帧或者启动帧;
  • Frame ID:报文ID
  • Payload Length:用于表示有效负载的大小,范围大小是0-127,单位为半字(2Byte),故有效数据范围为0~254Byte
  • Header CRC:帧头CRC序列,只对同步帧指示位、启动帧指示位、FrameID、 Payload Length进行CRC校验
  • Cycle Count:周期计数,表示报文发送的周期数,范围大小为0-63;

5.2 Payload

Data ID有效范围为0~253,两个Data组成一个word的数据。静态段中,设置Header中的“有效负载指示位”可以将前12Bytes作为传输网络管理向量,可在FlexRay网络中,实现网络管理。在动态段中,设置Header中的“有效负载指示位”可以将前2Bytes作为Message ID,用于更加精确的区分负载,用于过滤器的筛选。高位在前低位在后进行数据传输。

5.3 Trailer

帧尾为24bit的CRC校验位,校验范围为Header和Payload段。

6. 总线访问

实际应用中,FlexRay共有两条总线,可以同时传输两帧相同的报文,保证传输的可靠性,也可以传输两帧不同的报文,提高通信带宽(10Mbit/s -> 20Mbit/s)。当然一个节点也可只接其中一条总线进行传输,例如图中的节点M/N/O。

6.1 静态段访问

将slot1/2/3分别分配给节点K/M/L,节点K传输相同报文b,提高传输的容错性、可靠性,节点L传输不同的报文a和d,提高总线带宽。

6.2 动态段访问

CHA和CHB相互独立,不同的总线可以发送不同节点的动态帧。存在不能发送动态帧情况,例如此处节点M的frame p超过了动态段的有效范围,在该周期内不能发送,等待下一个周期后进行发送。最迟发送时间:例如此处Node M Frame p报文为最迟在Minislot8的位置发送,超过此MiniSlot后则在当前周期内不能发送。

6.3 调度表

类似Lin调度表,FlexRay具体传输报文也是以调度表来传输数据,如下图左侧表格。为了更好的利用FlexRay的带宽,增加数据吞吐量,引入了复合调度表概念,在不同的通信周期内可以使用不同的调度表来传输报文,例如节点M的总线A,在不同的调度表中分别传输报文c/x/y/x,见下图右侧表格。

此处需要注意复合调度中静态段和动态段发送要求不一致:

  • 在静态段中,复合的位置,只能发送想同节点的不同报文,例如此处节点M的c/x/y报文。
  • 在动态段中,没有周期中想同的slot中可以分配给不同的节点的不同帧,例如此处的slot7,分别分频给L节点的Frame u,M节点的Frame t,M节点的Fram p。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号