摘要:
到底什么是FlexRay?
1. FlexRay是什么?
那么到底什么是FlexRay?往简单了说,就是CAN总线加LIN总线混合起来排个课程表、提个速再加个冗余。像LIN一样基于TDMA,提高了协议的复杂度,拥有静态部分和动态部分。动态部分类似于CAN总线,是基于事件和优先级发送。这样随着协议的复杂化,通过灵活的配置,可以设计出更安全可靠,而且实时性好的车载通信系统,以满足新的技术要求。
功能强大了,配置也更灵活了,但成本也上去了。不光是硬件成本,配置FlexRay相比它的兄弟姐妹总线,要复杂的多,这就需要更多人力和时间。一个技术,它的成本门槛高了,就会阻碍这个技术的大规模输出、推广,没有得到大规模的应用,相对的芯片成本就难以进一步下降,有点马太效应的味道,这也是上图预测FlexRay走不出2020年代的原因之一。但是是否呼声渐起的以太网10BaseT1s真的能取代这些传统的车载总线。
2. FlexRay如何实现功能
FlexRay拥有双通道通信的冗余设计。每个通道带宽10Mbps,可以灵活的设置为同一时间点两通道互为备份冗余;也可以选择双通道发送不同的信息达到20Mbps的带宽。这样FlexRay契合了安全和时间紧要的更高阶的应用场景,在动力总成和车身控制也可以应用。在这些场景中CAN总线和LIN总线都不能胜任。关于FlexRay的总线规模和节点容量,看到有说24米有说22米的,没必要细抠,一般达不到这个长度。
静态和动态部分可以继续切分才会得到更小的时间蛋糕slot,里面就是FlexRay的数据帧了。FlexRay由5Bytes的帧头,0到254Bytes的Payload和3Bytes的尾部组成。
静态数据块被分成一系列的Slots分发给不同的节点,同一节点可以被分配多个Slots。但是同一个Slot只能被分配给一个节点。当时间轴上相应的时刻到达,如果节点准备好了相应的数据帧,则发送数据帧,如果没有则发送空帧,或者重复。静态部分是固定分配的,就像白天上课的课程表,这就保证了被分配到时间资源的节点总能有机会发送数据。而Dynamic部分则是动态的,有点像晚自习,而且是课时不固定的晚自习,学生可以半自由地搭配。
动态部分就是FlexRay中前面提到的Event Triggered部分。动态部分通常是用来传输诊断信息。每个节点根据配置的Frame ID发送信息。动态部分发送机制挺有意思,是基于一个Minislots的概念,当没有信息发送的时候,各个节点数着时间块Minislots累加自己的index。待发信息ID与slot一一对应,如果匹配的话,对应节点就有权发送信息。有信息发送时,所有节点的index冻结,发送完毕后,大家共同继续累加index。通过这种方式避免了冲突,但是动态部分的时间长度有限,所以如果排在前面的信息比较多,后面的信息可能就分不到发送时间的slot,就只能放弃发送。这点有点像CAN总线,但是机制又不完全一样,CAN总线是比较ID大小定优先级,FlexRay的动态部分是先给ID小的信息发送机会,按顺序发。EB的《FlexRay:A first glance》里有一段很好的演示动画,可以去看看。FlexRay的两个通道的Minislot是对齐的,而在信息发送时,是相互独立,互不干扰而不对齐的。超过了最后的机会时间点latest dynamic transmission start之后,就不再允许任何节点发送新的帧了。
来源 | 电控技术大师