1、FlexRay简介
1.1FlexRay是什么?
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结点基本结构
①同步结点在网络中提供时钟同步算法的支持,实现同步的功能。
②冷启动结点的特点是在网络尚未同步之前就可以发送启动帧,支持结点和网络通信的初始化过程。冷启动结点一定是一个同步结点。
③除这两种结点以外,网络中还有一些完成一定应用功能的结点,就是应用任务结点。
(2)结点的基本构成及接口信息
结点各个部分之间的信息接口关系如图所示。
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的传输过程
除了启动阶段,FlexRay通信周期以一个固定的宏时钟数周期性地循环执行。通信周期依次从0到一个可设置的最大值依次计数。总线仲裁基于在静态段和动态段的帧标识符。帧标识符决定了其在通信周期的哪个段和这个段的哪个时间片发送。
(3)由于一个FlexRay通信周期的静态和动态部分可以是空的,所以,一个通信周期可以有3种形式:纯静态的(动态部分为空)、静态动态混合(既有静态部分又有动态部分)的和纯动态的(静态部分为空)。
①FlexRay静态部分具有以下特性:
在一个通信周期内静态部分具有优先访问总线权;
①状态位:
保留位(1位):为以后的扩展使用
净荷指示位(1位):Payload Preamble Indicator 指明负载段的向量信息
空帧指示位(1位):Null Frame Indicator表示该帧是否为无效帧
同步帧指示位(1位):Sync Frame Indicator表示该帧是否为一个同步帧
起始帧指示位(1位):Startup Frame Indicator表示该帧是否为起始帧
②帧ID
数据标志符,每个通道数据标志符需唯一。用于对事件触发帧进行优先级排序
③有效载荷长度
表示一帧中能传输的有效数据长度。在每个Cycle下的静态区中,每帧的数据长度都是相同的,在动态区的长度则是不同的。
④头部CRC:用于起始段冗余校验,检查传输中的错误。
⑤周期记数:循环计数器,通信一开始,所有节点的周期计数器增1
3.2有效数据段(有效负载段)
3.3帧尾段(结束段)
帧尾段包含3个用于检测错误的8位CRC,由起始段和有效负载段计算得出的CRC校验码,计算CRC时,根据网络传输顺序从保留位到有效数据段的最后一位放到CRC生成器中进行计算。
一个信息帧在物理层传输要进行编码。把一帧本身要传输的信息加上位置标识以及同步等需要的信息编码成一个二进制位流,每一帧以一组位流在物理层由发送结点发出;接收端接收到这些位流进行解码,分解出一帧的信息,提供给链路层。
编码的过程实际上是对要发送的数据进行相应的“打包”处理,比如加上各种校验位、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)帧位流解码
4、总结
4.1FlexRay与CAN的异同