车载总线FlexRay详解

2024-06-24  

1、FlexRay简介


1.1FlexRay是什么?


FlexRay是一种用于汽车的高速、可确定性的,具备故障容错能力的总线技术,它将事件触发和时间触发两种方式相结合,具有高效的网络利用率和系统灵活性的特点。能满足传统的CAN方案不能满足汽车线控系统(X-by-Wire)的要求。


图片

1.2 FlexRay 总线的历史


2000年,宝马和戴姆勒克莱斯勒联合飞利浦和摩托罗拉成立了FlexRay联盟。该联盟致力于推广FlexRay通信系统在全球的采用,使其成为高级动力总成、底盘、线控系统的标准协议。


其具体任务为制定FlexRay需求定义、开发FlexRay协议、定义数据链路层、提供支持FlexRay的控制器、开发FlexRay物理层规范并实现基础解决方案。


主要用于线控操作,如线控操作转向、防抱死制动系统(ABS)包括车辆稳定控制(VSC)和车辆稳定助手(VSA)等。


FlexRay联盟在2013年发布了ISO 17458标准规范。


第一款采用FlexRay的量产车于2006年在BMW X5中推出,应用在电子控制减震系统中。

图片

1.3FlexRay的特性


FlexRay提供了传统车内通信协议不具备的大量特性,包括以下六个方面:


1、高传输速率:FlexRay的每个信道具有10Mbps带宽。它不仅能像CAN和LIN网络这样的单信道系统一般运行,还能作为一个双信道系统运行,因此可以达到20Mbps的最大传输速率,是当前CAN最高运行速率的20倍;


2、同步时基:FlexRay中使用的访问方法是基于同步时基的。该时基通过协议自动建立和同步,并提供给应用。时基的精确度介于0.5μs和10μs之间(通常为1~2μs);


3、确定性:通信是在不断循环的周期中进行的,特定消息在通信周期中拥有固定位置,因此接收器已经提前知道了消息到达的时间。到达时间的临时偏差幅度会非常小,并能得到保证;


4、高容错:强大的错误检测性能和容错功能是FlexRay设计时考虑的重要方面。FlexRay总线使用循环冗余校验CRC来检验通信中的差错。FlexRay总线通过双通道通信,能够提供冗余功能,并且使用星型拓扑可完全解决容错问题;


5、灵活性:在FlexRay协议的开发过程中,关注的主要问题是灵活性,反映在如下几个方面:


▶支持多种方式的网络拓扑结构;


▶消息长度可配置:可根据实际控制应用需求,为其设定相应的数据载荷长度;


▶使用双通道拓扑时,既可用以增加带宽,也可用于传输冗余的消息;


▶周期内静态、动态消息传输部分的时间都可随具体应用而定。


6、可靠性:为了在汽车环境下可靠工作,FlexRay满足以下要求:


▶可满足汽车使用温度环境要求,目前的标准是-40~125℃,对于一些特殊的应用,如制动执行器,温度要求还要高;


▶在不使用外部滤波器条件下,每个FlexRay产品满足汽车系统和法规要求的EMC指标;


▶在正常工作和低功耗模式下,系统功耗必须优化到最小。


在空闲状态,总线驱动器和通信控制器的典型工作电流为10mA;


在忙状态,总线驱动器和通信控制器的典型工作电流为50mA;


关电时的总线驱动器电流(指汽车电压调节器关断后,总线驱动器监视器唤醒逻辑等消耗的电流)为10μA;


▶通信控制器供电电压适应的条件与汽车ECU(Electronic Control Unit)要求一致;


▶直接与线束相连的总线控制器和通信控制器的输入/输出,满足汽车上电器系统的要求。


2、FlexRay协议介绍


2.1结点基本结构


(1)在FlexRay网络中有3种基本类型的结点,即同步结点、冷启动结点和应用任务结点。


①同步结点在网络中提供时钟同步算法的支持,实现同步的功能。


②冷启动结点的特点是在网络尚未同步之前就可以发送启动帧,支持结点和网络通信的初始化过程。冷启动结点一定是一个同步结点。


③除这两种结点以外,网络中还有一些完成一定应用功能的结点,就是应用任务结点。


(2)结点的基本构成及接口信息


一个结点的基本结构一般由微控制器、通信控制器、总线管理逻辑、总线驱动逻辑(发送/接收驱动器)和电源系统5个部分组成。

通信功能主要由通信控制器、总线管理及驱动逻辑,以及这些部分与主机的接口组成。


图片

结点各个部分之间的信息接口关系如图所示。

图片

2.2结点基本功能


(1)结点中,一个通信控制器连接一个或两个总线驱动器,即一个结点可以连接到一个或两个总线通道上;


(2)结点可以进入休眠态;


(3)处于休眠态的结点可以由总线事件唤醒;


(4)结点的总线活动可以由主控制器关闭;


(5)结点与电源常连接;


(6)结点的应用功能。


网络星结点是一个只有网络功能的结点,没有主控制器和通信控制器,一个星结点有1个以上总线驱动器,它可以由总线唤醒,由总线关闭。


2.3FlexRay物理结构


FlexRay总线和CAN 一样也是两根线,可采用屏蔽或不屏蔽的双绞线,每个通道有两根导线,即总线正(Bus-Plus,BP)和总线负(Bus-Minus,BM)组成。采用不归零法(NRZ,Non-Return to Zero)进行编码。


可通过测量BP和BM之间的电压差来判断总线状态,这样可减少外部干扰对总线信息的影响,因为当干扰同时作用在两根导线上时可相互抵消。


每个通道都需使用80~110欧的终端电阻。将不同的电压加载在一个通道的两根导线上,可使总线有四种状态:Idle_Lp(Low power)、Idle、Data_0和Data_1


显性:差分电压不为0V(Data_0和Data_1);


隐性:差分电压为0V(Idle_Lp、Idle)。在静止状态,两条总线传输线为高欧姆值,约为2.5V。


图片


2.4FlexRay拓扑结构


FlexRay的拓扑结构:线型(点对点、多节点)、星型和混合型三大类。


(1)总线型拓扑结构


FlexRay网络双总线型拓扑结构,每个结点可以连到两个总线上,也可以只连接到一个总线上。

图片

(2)星型结构


FlexRay网络的星型拓扑结构有多种连接方式。


①一个双通道单星的结构,每个通道由一个星结点连接,一个结点可以连接到一个或两个通道上(星结点上)。

图片

②两个单通道星型结构级联的结构,每个通道由一个星结点连接,一个结点连接到一个通道上(星结点上),两个星结点之间互联。

图片

③在FlexRay 网络星形双通道拓扑结构的基础上,也可以构建冗余通道的结构。

图片

④星型结构的优势

  • 它在接收器和发送器之间提供点到点连接。该优势在高传输速率和长传输线路中尤为明显。
  • 另一个重要优势是错误分离功能。例如,如果信号传输使用的两条线路短路,总线系统在该信道不能进行进一步的通信。


(3)总线型与星型的混合结构


FlexRay网络除了可以使用总线型和星形结构外,只要级联的每一个子网不超过结点数的限制,还可以使用两种结构混合的网络拓扑结构。

图片

如上图所示,一个星结点(2A)直接连接结点并连接到一个总线上,总线上又连接了一些其他结点;然后又与另外一个星结点(1A)相连,星结点(1A)也直接连接了一些结点,也可以再连接总线。

 图片

 一个星形拓扑结构与总线型结构构成的双通道结构。


2.5冗余数据传输


在容错性系统中,即使某一总线导线断路,也必须确保数据能继续可靠传输。这一要求可以通过在第二个数据信道上进行冗余数据传输来实现。具有冗余数据传输能力的总线系统使用两个相互独立的信道。每个信道都由一组双线导线组成。一个信道失灵时,该信道应传输的信息可在另外一条没有发生故障的信道上传输。


图片

2.6FlexRay的传输过程


(1)FlexRay网络按周期循环组织信息的传送。在传送信息时,一个通信周期有静态的和动态的两个部分。动态段和静态段又由一些时间片构成,每个时间片传输一个FlexRay帧。FlexRay帧是一个有格式的位流。

(2)当前通信周期由通信周期计数器的值标识,这是一个只增计数器,对通信周期进行计数。通信控制器配置数据决定了通信周期的长度,可以由应用程序设置。只有总线处于允许状态下,通信控制器才可以启动一个通信周期。一个结点的信息内容可以在不同的通信周期的特定时间片上多重发送。静态部分和动态部分信息的传送方式是不同的。

①FlexRay通信周期

FlexRay的一个通信周期包含静态段(Static Segment)、动态段(Dynamic Segment)、符号窗(Symbol Window)和网络空闲向量(Network Idle Time)。


图片


只包含静态段和动态段的通信周期示例图如下。


图片


②通信周期的基本执行过程


除了启动阶段,FlexRay通信周期以一个固定的宏时钟数周期性地循环执行。通信周期依次从0到一个可设置的最大值依次计数。总线仲裁基于在静态段和动态段的帧标识符。帧标识符决定了其在通信周期的哪个段和这个段的哪个时间片发送。

图片


③静态段

一个FlexRay通信周期的静态段,按照配置值设置其时间片数。所有静态段中的时间片大小相同,由一个以宏时钟为单位的数给出。


图片


每个时间片有一个序号,在静态段中将固定的时间片分配给各个结点,在一个通信周期的静态段中,每个结点在一个通道上只能在分配给它的时间片内发送数据帧,而在自己时间片之外的时间只能接收数据。在FlexRay网络运行的时候,这个时间片的分配情况是不允许动态发生改变的。


图片


④动态段

可以配置一个FlexRay通信周期动态段的微时间片数量,并且从1开始依次编号。所有微时间片的大小相同,也由一个以宏时钟为单位的数给出,不用动态段的时候可以设置微时间片数为0。


图片



在一个通信周期的动态段中,结点如果要发送消息,要通过竞争获得总线使用权。在动态段部分,是按照发送数据的数据帧优先级分配带宽,优先级由帧的标识ID确定。


图片


⑤符号窗

一个FlexRay通信周期可以有一个符号窗。符号窗通过配置设定一定数量宏时钟的时间宽度,这个配置值为零,表示不用符号窗。在符号窗内的内容及功能由高层协议规定,FlexRay结点发送一个符号表示某种自定义的特殊用途。

符号类别:

Ⅰ冲突避免符号:用于冷启动节点的通讯启动

Ⅱ测试符号:用于总线的测试

Ⅲ唤醒符号:用于唤醒过程的初始化

⑥网络空闲向量

一个FlexRay通信周期的网络空闲向量用来对FlexRay网络进行调整,是不可缺少的部分。一个周期除去前面几个段使用的时间,余下的就是空闲段的长度。一个通信周期可以根据结点的实际需要,动态配置动态段和网络空闲向量各部分的带宽。在网络空闲向量时间范围内,FlexRay网络中的结点不进行任何通信。


(3)由于一个FlexRay通信周期的静态和动态部分可以是空的,所以,一个通信周期可以有3种形式:纯静态的(动态部分为空)、静态动态混合(既有静态部分又有动态部分)的和纯动态的(静态部分为空)。


①FlexRay静态部分具有以下特性:


一个通信周期的静态部分可以由程序设定它的时间片数;


在一个通信周期内,一个结点可以由程序设定它可以使用的时间片;


静态部分在每一个时间片内,最多只允许有一个结点向通道上发送一个帧信息,通信周期的静态部分按TDMA方式访问媒体;


有静态部分时间片的长度相同,可以由程序设定;


在一个通信周期第一个时间片之前是通信起始符。

②FlexRay动态部分具有以下特性:


在一个通信周期内可以没有或有几个动态时间片;


在一个通信周期内静态部分具有优先访问总线权;


在通信周期的动态部分,采用最小时间片(Mini-Slotting Scheme)和标识符优先的仲裁策略,发送的信息标识符优先级高的结点获得仲裁;


动态部分的信息长度在网络运行时是可变的。


3、FlexRay帧结构


在FlexRay网络中,结点把要发送的信息打包成帧在静态段或动态段的时间片发送。FlexRay帧由帧头、有效数据段和帧尾构成。每个字段又分成具有不同意义的位段。


图片


3.1帧头段(起始段)


图片


(1)起始段长5个字节(40位),包括:状态位(5位)、帧ID(11位)、有效数据段/有效载荷长度(7位)、头部CRC(11位)、循环记数(6位)。


①状态位:


保留位(1位):为以后的扩展使用


净荷指示位(1位):Payload Preamble Indicator 指明负载段的向量信息


空帧指示位(1位):Null Frame Indicator表示该帧是否为无效帧


同步帧指示位(1位):Sync Frame Indicator表示该帧是否为一个同步帧


起始帧指示位(1位):Startup Frame Indicator表示该帧是否为起始帧


②帧ID


数据标志符,每个通道数据标志符需唯一。用于对事件触发帧进行优先级排序


③有效载荷长度


表示一帧中能传输的有效数据长度。在每个Cycle下的静态区中,每帧的数据长度都是相同的,在动态区的长度则是不同的。


④头部CRC:用于起始段冗余校验,检查传输中的错误。


⑤周期记数:循环计数器,通信一开始,所有节点的周期计数器增1


3.2有效数据段(有效负载段)


图片


有效数据段包含帧传输的实际数据。FlexRay有效数据帧的长度最多为127个字(254字节),比CAN长30倍。


3.3帧尾段(结束段)

图片


帧尾段包含3个用于检测错误的8位CRC,由起始段和有效负载段计算得出的CRC校验码,计算CRC时,根据网络传输顺序从保留位到有效数据段的最后一位放到CRC生成器中进行计算。


3.4帧位流的编解码


一个信息帧在物理层传输要进行编码。把一帧本身要传输的信息加上位置标识以及同步等需要的信息编码成一个二进制位流,每一帧以一组位流在物理层由发送结点发出;接收端接收到这些位流进行解码,分解出一帧的信息,提供给链路层。


编码的过程实际上是对要发送的数据进行相应的“打包”处理,比如加上各种校验位、ID等。


注:编码与解码主要发生在通讯控制器与总线驱动器之间


图片

(1)编码插入序列


编码插入序列是对一帧进行编码时加到帧中的二进制序列,具体有以下几种:


①传输起始序列(Transmission Start Sequence,TSS):用于初始化节点和网络通信的对接, 为一小段低电平。发送结点在开始发送时,首先输出一个连续低位序列,长度可以通过配置设置,表示一个传输开始并建立发送与接收端的路径,接收端结点检测到这个状态,就判定总线由空闲进入忙状态,一个帧的传输过程开始。


②帧起始序列(Frame Start Sequence,FSS):在TSS之后加入的一个高位,以补偿TSS部分同步的量化误差。


③字节起始序列(Byte Start Sequence,BSS):给接受节点提供数据定时信息, 由一位高电平和一位低电平组成。BSS包含连续的一个高位和一个低位。发送结点在一帧每一个字节信息(每8位数据)前面都加上BSS,为接收端提供时间同步信息。


④帧结束序列(Frame End Sequence,FES):一帧所有的信息发出之后,发送结点紧接着发送的连续一个低位一个高位,表示一帧结束。


⑤动态段帧尾序列(Dynamic Trailing Sequence,DTS):用于动态段的帧尾,指示发送端微时间片工作点的准确时间。DTS包括先低后高两部分,低的部分可变长,至少保持一个位时间,在下一个微时间片的工作点变高,高的部分固定为一个位时间。发送结点在发送动态段的帧时,紧接FES之后发送DTS。


(2)静态帧编码与动态帧编码


①把一帧的所有信息分成字节;


②在位流的最前面加入一个TSS;


③在TSS后面加入FSS;


④在帧数据的每一个字节前面插入BSS得到扩展字节;


⑤按照原来帧信息的数据顺序排列所有扩展字节;


⑥计算帧的CRC校验码,并把校验码各个字节加BSS进行字节扩展;


⑦在如上形成的位流后面加上一个FES;


⑧如果是动态段的帧,再在后面加上一个DTS。


图片

静态段帧的编码

图片
动态段帧的编码


(3)帧位流解码


对于接收端,在总线空闲时监测到总线上的传输起始序列TSS,表示有帧将要启动传输,这时启动帧接收过程,按照同步机制定时,开始接收后续位流,并按照编码规则进行解码处理。当接收端结点检测到错误的时候,终止通信位流的解码过程,并一直等待总线回到空闲状态。


4、总结


4.1FlexRay与CAN的异同


图片


4.2常用车载总线对比


图片


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。