文章目录
1. 起因
由于当时CAN总线通信方式不能满足新兴的驾驶辅助功能,如ABS防抱死系统、ASR驱动防滑系统、ESP电子稳定系统等涉及汽车主动,被动领域的高要求辅助功能,需要更多的交互节点,更高的传输带宽(例如动力系统传输波特率需要达到2Mbit/s以上),对汽车通信系统的可靠性、安全性、实时性提出更高的要求。
各协议发布时间线如下:
上诉需求对FlexRay提出了以下要求:
1、通信速率:达到10Mbit/s
2、可扩展性:增删节点,不影响通信效果
3、物理层:保持简便连接
4、传输可靠性:更高的通信容错性、确认性
2. 通信传输方式
时分多址(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. 物理信号
分别定义了总线空闲电平(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。