FlexRay通信系统是一种用于汽车的高速通信网络,每通道速率可达10Mb/s。
FlexRay通信采用TDMA时分多址的网络访问方式,具有容错功能及确定的通信消息传输时间,同时支持时间触发和事件触发通信。
FlexRay通信可用于车身、底盘、安全和ADAS应用,它的通信特点也更适合下一代汽车线控系统或分布式控制系统的通讯要求,比如线控转向和线控制动等这些对实时性和安全性有很高要求的主动安全系统。
FlexRay通信不仅仅是速度上比我们常用的CAN和LIN通信快,在通信机制上也有很大的不同。
1.网络拓扑
我们常用的CAN通信是总线型网络拓扑,拓扑形式很简单,就是各个节点通过一对差分线直接连到CAN总线上。
CAN网络拓扑-差分多主总线型
LIN通信也是总线型,但它是主从式结构,所有的子节点都要通过主节点调度,而且是单线连接。
LIN网络拓扑-单线主从总线型
1.1FlexRay的三种拓扑结构
与CAN和LIN通信相比,FlexRay的网络拓扑就比较复杂了。首先,它不只1种,而是有3种拓扑结构:总线型(Bus)、星型(Star)和混合型(Hybrid)。
总线型网络拓扑与CAN通信基本一样,也是采用差分信号传输,两根线称为BP和BM,即总线正和总线负,两根线组成一个通道Channel。
FlexRay网络拓扑之-总线型
星型拓扑会有一个中心节点,称为星型耦合器(star coupler),星型耦合器负责转发通信数据。
FlexRay网络拓扑之-星型
(注:为了便于查看, 上图及后续的FlexRay图形都用1根总线来表示差分信号)
上图中的星型拓扑的结构与LIN的拓扑有点相似,但实际上是不同的,LIN仍然是总线型,不是星型。而且FlexRay的星型拓扑中还可以有2个中心节点,LIN只能有1个主节点。
混合型网络拓扑就是总线型与星型间不同的组合。
FlexRay网络拓扑之-混合型
上图中的节点A、B和Star组成星型拓扑,节点C、D、E和F是总线型拓扑,总线型与星型间的节点可以通过中心节点Star进行通信。
1.2FlexRay的两个通道
FlexRay通信除了上面的三种类型外,每一种类型还有单通道(SingleChannel)和双通道(DualChannel)之分,双通道分别称为通道A和通道B。
在同一个网络中,允许节点连接不同的通道,即每个节点可以只连接1个通道,也可以同时连接两个通道。
双通道总线型拓扑
如上图所示,其中的A、C、E节点同时连接了通道A和通道B。D节点只连接了通道A,B节点只连接了通道B。
此外,在星型结构中,还存在级联拓扑和多星拓扑。级联拓扑中不能有超过2个星型耦合器。
单通道级联星型拓扑
如上图所示,每个节点单独连接到1个星型耦合器,两个星型耦合器直接相连。
多星拓扑可以支持冗余通信通道,但每个网络通道不能存在闭环,且每个通道不能有超过2个星型耦合器。
双通道单冗余星型网络拓扑
如上图所示,每个通道只连了1个星型耦合器。通道A连接到了Star1A,通道B连接到了Star1B。
双通道级联星型拓扑
如上图所示,每个通道(通道A或通道B)都连接了2个星型耦合器。
混合型拓扑根据总线型、星型和不同的通道组合,可以有很多种具体的拓扑结构,我们现列举一个有代表性的混合型拓扑。
单通道混合拓扑
如上图所示,节点A、B、C、D通过点对点的方式连接到星型耦合器Star1A和Star2A,节点E、F、G通过总线拓扑互相连接,总线拓扑同时又连接到星型耦合器star2A,这样E、F、G就可以通过Star2A与其他节点通信。
还有一种混合拓扑类型是不同的拓扑使用不同的通道。
双通道混合拓扑
如上图所示,通道A作为总线拓扑连接,通道B作为星型拓扑连接。
FlexRay的这种双通道架构看起来有点冗余,但是双通道架构也恰好可以满足高级安全系统的冗余要求。通过双通道传输相同的数据时,当其中某个通道出现故障或信息有误时,另一通道可继续正常传输,通过这种冗余备份实现很好的安全性和容错性。
当然这种结构也有一个缺点,就是当中心节点损坏时,整个网络便无法工作。
2.物理接口
FlexRay的物理层接口与CAN类似,也是通过收发器连接的。不同的是,CAN总线只有一路,也就是1个通道。而FlexRay最多可以有2个通道。
每个FlexRay节点通过一个控制器FlexRay Controller和两个收发器FlexRay Transceivers与总线相连,控制器负责FlexRay协议中的数据链路层,收发器则负责总线物理信号的接收和发送。
FlexRay的硬件结构图
Host主机向控制器发出控制、配置信息和有效负载数据,控制器向主机Host反馈状态信息和通信帧上接收的有效负载数据。
FlexRay可采用屏蔽或不屏蔽的双绞线,每个通道有两根导线,即总线正BP和总线负BM组成。每一通道需使用80~110欧的终端电阻。
这里要注意的是,FlexRay的节点收发器与星型耦合器的收发器型号是不同的。
3.TDMA时分多址
FlexRay是一种时间触发式的通信系统,符合TDMA(Time Division MultipleAccess)的原则。
所谓的时间触发就是将一个周期的时间分成多个时隙slot,每个时隙都会安排给事先定义好的报文信息,这样每个报文就一定会被发送,无论系统外部发生什么情况,都不会影响预定报文的发送,这就是报文发送的确定性!
FlexRay总线的通讯由通讯周期Communication Cycle构成,从总线启动到停止都在不断重复该通讯周期。每个通讯周期具有相同的可配置时间间隔,且每个通讯周期由静态段(Static Segment)、动态段(Dynamic Segment)、特征窗(Symblo Window)和网络空闲时间(Network Idle Time)四部分构成。
通信周期构成
3.1静态段(Static Segment)
静态段采用TDMA(Time Division Multiple Access)方式由固定的时隙(Slot)组成,不可更改且所有时隙大小一致。
静态段示例
如上图所示,示例中的静态段分为4个时隙Slot,其中第1个时隙Slot1发送节点A的A1报文,A1报文会同时在A、B两个通道发送,因为A、B两个通道是互相独立的,可以共用第1个时隙。
第2个时隙Slot2,发送节点B和C的B1、C1报文,B1在A通道,C1在B通道发送。
第3个时隙Slot3与第1个时隙Slot1发送原理类似,也是1个节点,不同的是节点D的两个通道发送的是不同的报文。
第4个时隙Slot4的发送与第2个时隙类似。
由此可知,每个节点可拥有一个或多个时隙Slot,每个节点在每个通讯周期内都可在其所占有的Slot内发送,两个节点也可在不同的通道上共享同一Slot,单个Slot也可为空(即不被任何节点占用),所有的帧和Slot在静态段都具有相同的长度。
静态段时序示意图
如上图所示,其中的每个静态段的时隙Slot1-Slot3持续的时间都是相同的,其中的Slot3并未被节点占用,但是依然要保留这个时隙时间。
3.2动态段(Dynamic Segment)
动态段采用FTDMA(Flexible Time Division Multiple Access)方式,FTDMA也是时间触发的方式,只是它的时隙不是固定的,可根据需要拓展变动,一般用于传输事件控制型消息。
动态段示例
如上图示例所示,其中Slot6和Slot8两个时隙发生了事件型报文;其它时隙没有发生事件型报文,所以Slot5、7和9中就没有报文发送。其报文发送时序如下图所示。
动态段时序示意图
从上图可以看出,动态段中的时隙Slot是由细分的Minislot组成,没有发生事件报文时,各个节点报文只占用1个Minislot,如节点A占用的Slot5,节点D的Slot7和节点E的Slot9都是只占用了1个Minislot的时间。
如果发生了事件报文,则会根据实际帧的长度占用,比如报文C2占用了6个Minislot,报文B2占用了10个Minislot。所以动态段中的时隙Slot不是固定的,是根据实际情况变化的。
FlexRay的时间触发总线分配机制与CAN总线的CSMA/CA机制完全不同,CAN总线各节点会一直监听总线,发现总线空闲时便开始发送报文ID,能否发送成功要根据ID的优先级来判定,如果节点优先级过低,可能会导致长时间发不出去。所以它不是确定性的,是不可预测的。
Flexray在静态段部分使用TDMA方法,每个节点会均匀分配时间片,每个节点只有在属于自己的时间片里面才能发送消息,即使某个节点当前无消息可发,该时间片依然会保留。在动态部分使用FTDMA方法,会轮流问询每个节点有没有消息要发,有就发,没有就跳过。
静态部分用于发送需要经常性发送的重要性高的数据,动态部分用于发送使用频率不确定、相对不重要的数据。
与CAN总线相比,FlexRay的时间触发机制更像是LIN总线的调度表机制,LIN总线中的主节点通过主任务控制了所有的通信时序,主任务用于决定什么时候、哪个帧将在总线上传输。从节点中的从任务用于提供每个帧中需要传输的数据。发生冲突时主节点会根据冲突解决调度表进行协调。
LIN总线的调度表机制
这里要注意的是,FlexRay通信中的事件报文处理与CAN总线的事件型发送报文类型和LIN总线中的事件触发帧都不相同。
CAN和LIN都存在冲突的现象,CAN需要通过ID优先级处理,LIN需要通过主任务跳读处理。而FlexRay并不存在冲突,动态段中给每个可能发生事件报文的节点都预留了时间段,只是时间段的长度不同。
虽然FLexRay的静态段中的时隙造成了一定的总线资源浪费,但这也是它为什么具有确定性的原因。Flexray的静态段就是时间触发式,而动态段就是事件触发式通信,从而形成以时间触发为主,兼顾事件触发的灵活特性。
CAN总线通信就像是给狗狗们喂食,食物准备好后,所有的狗按自身的能力(优先级)去抢,这种喂食方式虽然效率高,但是有可能会出现个别的狗长时间吃不到食(报文无法发送)。
CAN总线按ID优先级抢占总线
FlexRay的方法就是每个狗先给出一个固定的基本吃饭时间,轮到某个狗的基本时间时,不管这只狗饿不饿,是不是在吃饭,其它狗都要等待,保证每只狗都有机会吃。
FlexRay按时间触发方式先均匀分配时间
然后再每个狗询问一遍,如果某只狗今天很饿,需要临时加餐,再给它一个加餐时间,满足临时的需求。
FlexRay处理事件型报文可额外分配时间
4.帧格式
FlexRay帧由起始段(Header Segment)、有效负载段(Payload Segment)和结束段(Trailer Segment)三大部分构成。节点在网络中发送报文时,会先发送起始段,然后是有效负载段,最后是结束段。
FlexRay帧格式
4.1起始段
起始段由4个字节,共40位组成。前5位属于状态指示位,然后依次是帧ID、负载长度、CRC和循环计数。
状态位包括:
1位的预留位reserved bit:表示当前未使用;
1位的静荷指示位payload preamble indicator:表示有效负载段中是否包含可选向量。0表示负载段中没有可选向量,1表示负载段的开始部分是网络管理向量(静态段)或者报文ID(动态段);
1位的空帧指示位Null frameIndicator:表示当前帧是否为空帧,0表示负载段中没有有效数据,即空帧,此时静荷指示位也是0;1表示负载段中包含数据,空帧可用于时钟同步算法;
1位的同步帧指示位Sync frame indicator:表示当前帧是否为同步帧,为1时,所有的接收节点都将此帧作为同步使用,同步帧用于系统范围的通信同步;
1位的启动帧指示位Startup frame indicator:表示当前帧是否为启动帧,为1时表示启动帧,只有冷启动节点coldstart nodes才能发送启动帧;
11位的帧ID:一个网络中每个可能被发送的帧都要定义1个帧ID,作为将在时隙Slot中被发送的帧的唯一标识。在1个通信周期中的每个通道中,1个帧ID被使用的次数不能超过1次。帧ID的有效范围为1-2047,0是无效的ID;
7位的负载长度Payload Length:表示该帧含有的有效负载段中的数据长度,在每个周期中的静态段中,每帧的数据长度是相同的,在动态段中的长度则是不同的,而且动态区中,每个周期可以不同,每个通道也可以不同;
这里要注意的是,负载长度值表示实际数据字节数的一半,比如当实际数据是72个字节时,负载长度参数应设置为36。或者说负载长度值表示的是2字节的字word。总之,实际数据字节数=负载长度值*2;
11位的起始校验Header CRC:用于起始段冗余校验,检查传输中的错误;
6位的循环计数器Cycle count:发送节点发出的循环计数值,数值范围是0-63。
4.2有效负载段
有效负载段payload segment包含要传输的有效数据,有效数据长度最大254个Bytes(0~127个Words),
在动态段中,前两个字节0-1字节可选择作为报文Message的ID使用,前面介绍的起始段中的静荷指示位payload preamble indicator就是用于表示负载段中是否包含报文ID。
注意这里的16位报文ID与前面的11位帧ID不同,这里的报文ID是由应用层使用的,是根据具体的应用功能定义的。而帧ID是在底层通信协议中确定的。
在静态段中,第0-12字节可以用作网络管理向量,也是通过静荷指示位payload preamble indicator表示。
这里要注意的是,由于负载长度PayloadLength表示的是2字节的字word,所以有效数据必须要发送偶数个字节的数据,否则无法用负载长度表示。
4.3结束段
结束段包含24Bits的检验域,由起始段和有效负载段计算得出的CRC校验码,计算CRC时,根据网络传输顺序从保留位到有效负载段的最后一位放到CRC生成器中进行计算。
小结:
FlexRay通信的网络拓扑形式多样,包括总线型、星型、混合型,每种类型还包括单通道和多通道两种方式,相较于CAN通信的总线型架构要复杂许多,当然安全性也相对较高。
FlexRay和CAN或LIN总线最本质的区别是总线分配的方式不同。CAN总线是采用CSMA/CA机制,每个节点根据ID优先级抢占总线;LIN总线是主从节点的调度表方式;而Flexray用的是灵活的TDMA/FTDMA机制,每个节点既可以根据调度表均匀分配时间,又可以兼顾事件型报文的发送。
FlexRay的两个通道如果平行传输数据(两个通道传输不同的数据),速率可达20Mb/s;在安全应用中大多采用冗余通信(两个通道传输相同的数据)。
Flexray通信协议具有实时性、确定性和安全性的特点,其设计难度较大,对开发能力要求较高,使用成本也会高一些。
来源:汽车电控知识