由于传统的CAN解决方案不能满足汽车线控系统(X-by-Wire) 的要求。于是在 2000 年 9 月 , 宝马和戴姆勒克莱斯勒联合飞利浦和摩托罗拉成立 FlexRay 联盟。该联盟致力于推广 FlexRay 全球采用通信系统, 使其成为高级动力总成, 底盘、 线路控制系统的标准协议。制定具体任务 FlexRay 需求定义、 开发 FlexRay协议、 定义数据链路层, 提供支持 FlexRay 的控制器、 开发 FlexRay 规范物理层,实现基本解决方案。
FlexRay 它提供了传统车内通信协议所没有的大量特性, 包括:
(1)高传输速率:FlexRay 每个信道都有 10Mbps 带宽。因为它不仅可以像 CAN 和 LIN 网络等单信道系统一般运行, 而且还可以作为一个双信道系统运行, 因此可以实现 20Mbps 最大传输速率, 是当前 CAN 最高运行速率 20 倍。
(2)同步时基:FlexRay 使用的访问方法是基于同步时基的。该时基通过协议自动建立和同步,并提供给应用程序。时基的准确性介于 0.5μs 和 10μs 之间(通常是 1~2μs)。
(3)确定性:通信是在不断循环的周期中进行的, 特定消息在通信周期中拥有固定位置, 所以接收器已经提前知道了消息到达的时间。到达时间的临时偏差会很小, 并且可以保证。
(4)高容错:强大的错误检测性能和容错功能是 FlexRay 设计中考虑的重要方面。FlexRay 循环冗余循环冗余校验 CRC(Cyclic redundancy cheek)检查通信中的错误。FlexRay 通过双通道通信,总线可以提供冗余功能, 使用星形拓扑可以完全解决容错问题。
(5)灵活性:在 FlexRay 在协议开发过程中, 灵活性是主要问题, 体现在以下几个方面:①支持网络拓扑结构的多种方式;②可根据实际情况配置消息长度: 设置相应的数据载荷长度;③使用双通道拓扑时, 可增加带宽, 也可用于传输冗余信息;④静态、静态、 动态信息传输部分的时间可以根据具体应用程序来确定。
ECU(Electronic Control Unit), 即节点 node, 它是一个独立完成相应功能的控制单元,连接到车载网络。主要由电源供给系统(Power Supply)、主处理器(Host)、固化 FlexRay 通信控制器(Communication Controller)、 可选总线监控器(Bus Guardian) 和总线驱动器(Bus Driver) 组成, 如图所示。主处理器提供和生成数据, 并通过 FlexRay 传输通信控制器。其中 BD 和 BG 与通信控制器和微处理器相对应的通道数。总线监控逻辑必须独立于其他通信控制器。通信控制器制器和总线的总线驱动器, 或连接总线监控器和总线。
节点的两个通信过程是:
(1)发送数据:Host 给出有效的数据 CC,在CC编码在中间形成数据位流BD发送到相应的通道。
(2)接收数据:在某一时刻,由BD访问栈将数据位流送到CC进行解码, 数据部分由 CC传送给 Host。
FlexRay 拓扑主要分为 3 种类:总线式, 星型、 总线星形混合型。
通常, FlexRay 节点可以支持两个信道, 因此可分为单信道和双信道两种系统。在双信道系统中, 并非所有节点都必须连接到两个信道。
与总线结构相比, 星形结构的优点是在接收器和发送器之间提供点到点连接。这一优点在高传输速率和长传输线路中尤为明显。另一个重要优点是错误分离功能。例如, 如果信号传输使用的两条线路短路, 总线系统的总线系统无法进一步通信。若采用星形结构, 只有连接短路的节点才会受到影响, 所有其他节点仍然可以继续与其他节点通信。
由头段组成的数据帧(Header Segment)、 有效负载段(Payload Segment) 和尾段(Trailer Segment)三部分组成。FlexRay 数据帧格式如图所示 2.5 所示。
(1)头段共由 5 个字节(40 位) 组成, 包括以下几个:
1.保留位(1 位):为以后的扩张做准备;
2.负载段前言指示(1) 位):指示负载段的向量信息;
3.无效帧指示(1) 位置):指示帧是否无效;
4.同步帧指示(1) 位):指出这是否是同步帧;
5.起始帧指示(1 位置):指示帧是否为起始帧;
6.帧 ID(11 位置):在时间触发帧中识别帧和帧的优先级;
7.负载段长度(7 位):标记一帧中可传输的字数;
8.头部 CRC(11 位置):用于检测传输中的错误;
9.周期计数(6 位):每次通信开始, 所有节点的周期计数器增 1。
(2)负载段用于传输数据, FlexRay 包括有效负载段 0~254 字节数据。
对动态帧, 有效负载段的前两个字节通常用作信息 ID, 根据接受情况接受节点 ID 判断是否需要数据帧。
静态帧, 有效负载段前 13 个字节是网络管理的向量(NM), 用于网络管理。
(3)尾段只含有 24 位校验域, 包括从头段和有效负载段计算出来的 CRC 验证码 CRC时, 根据网络传输顺序,将从保留到负载段的最后一位数据放入 CRC 计算生成器。
编码过程实际上是处理打包要发送的数据的过程, 加上各种验证位, ID符号等。编码和解码主要发生在通信控制器和总线驱动器之间, 如图 2.6。
其中 RxD 位接受信号, TxD 发送信号, TxEN 请求通信控制器的数据信号。信息二进制表示不归零码。对于双通道节点, 编码和解码的过程同时完成。
TSS(传输启动序列):初始化节点与网络通信的对接, 一小段低电平。
FSS(帧启动序列):用于补偿 TSS 后第一个字节可能出现量化误差, 为一个高电平BSS(字节启动序列):为接收节点提供定时数据信息, 由高电平和低电平组成。
FES(帧结束序列):用来识别数据帧最后一个字节序列的结束, 由低电平和高电平组成。
DST(动态段尾序列):仅用于动态帧传输, 用于显示动态段传输间隙动作点的准确时间点,防止接收段过早检测到网络空闲状态。它由长度可变的低电平和高电平组成。
将这些序列与有效位(从最大位) MSB 到最小位 LSB) 组装是编码过程, 最终形成可以在网络上传播的数据位流。
在媒体接入控制中, 一个重要的概念是通信周期(Communication Cycle), 如图所示。通信周期由静态段组成(Static Segment)、 动态段(Dynamic Segment)、 特征窗(Symbol Window) 空闲时间和网络(Network Idle Time) 4 部分组成。FlexRay 提供两种媒体接入时序的选择:静态段采用时间多址的方式(TDMA), 由固定间隙数组成, 不可修改, 而且所有间隙的大小都是一样的。用于传输周期性数据信息;动态段采用灵活时间多址(FTDMA), 由较小的间隙组成, 可根据需要扩展变化, 一般用于传输事件控制的信息。符号窗用于传输特征符号。时钟同步处理网络空闲时间。
仲裁层包含仲裁网络, 它构成了 FlexRay 媒体仲裁的主要部分。静态段, 仲裁网络被称为静态槽(Static Slots)由连续时间间隔组成, 在动态段, 称为微型时槽(Minislots)由连续时间间隔组成。
仲裁网络层是基于宏节拍(Marcotick)宏节拍层上方。每个本地宏节拍的时间是微节拍的整数倍。分配的宏节拍边缘称为行动点(Action points)。行动点是一些特定的时刻, 在这些时刻, 将会发生传输的开始和结束。
微节拍层由微节拍组成。微节拍是通信控制器外振荡器时钟刻度选择性使用分频器导出的时间单元。微节拍是控制器中的一个特殊单元, 它可能在不同的控制器中有不同的时间。节点内的本地时间间隔尺寸为微拍。
如果使用基于 TDMA 的通信协议, 则通信媒介的访问在时间域中控制。因此, 每个节点都必须保持时间同步, 这一点非常重要。所有节点的时钟必须同步, 并且最大偏差(精度)必须在限定范围内,这是实现时钟同步的前提条件。
时钟偏差可以分为相位和频率偏差。相位偏差是两个时钟在某一特定时间的绝对差别。频率偏差是相位偏差随时间推移的变化, 它反映了相位偏差在特定时间的变化。
FlexRay 使用一种综合方法, 同时实施相位纠正和频率纠正, 包含两个主要过程:时间同步校正机制(最大时间节拍生成 MTG)和时钟同步计算机制(时钟同步进程 CSP)。MTG 控制时隙初值, 即周期计数器和最大时钟节拍的计数器, 并对其进行修正。CSP 主要完成一个通信循环开始的初始化,测量并存储偏差值, 计算相位和频率的修正值。
相位修正仅在奇数通信周期的 NIT 段执行, 在下一个通信周期起始前结束。相位改变量指明了添加到 NIT 相位修正段的微节拍数目, 它的值由时钟同步算法决定, 并有可能为负数。相位改变量的计算发生在每个周期内, 但修正仅应用在奇数通信周期的末尾。
在频率纠正中, 需要使用两个通信循环的测量值。这些测量值之间的差值反映每个通信循环中的时钟偏差变化。它通常用于计算双循环结束时的纠正值。在整个后来的两个通信周期中, 都使用该纠正值。
为了节省资源, 部分节点处于不工作状态时, 进入“节电模式”。当这些节点需要再次工作时,就需要“唤醒”它们。主机可以在通信信道上传输唤醒模式, 当节点接收到唤醒特征符(Wakeup Symbol)后, 主机处理器和通信控制器才进行上电。
在通信启动执行之前, 整个簇需要被唤醒。启动节点工作需要在所有通道上同步执行。初始一个启动过程的行为被称为冷启动(Coldstart), 能启动一个起始帧的节点是有限的, 它们称作冷启动节点(Coldstart Node)。在至少由三个节点组成的簇中, 至少要有三个节点被配置为冷启动节点。冷启动节点中, 主动启动簇中消息的节点称之为主冷启动节点(Leading Coldstart Node), 其余的冷启动节点则称之为从冷启动节点(Following Coldstart Node)。
当节点被唤醒并完成初始化后, 它就可以在相应的主机控制命令发出之后进入启动程序。在非冷启动节点接收并识别至少两个相互通信的冷启动节点前, 非冷启动节点一直等待。同时, 冷启动节点监控两个通信通道, 确定是否有其他的节点正在进行传输。当检测到通信信道没有进行传输时,该节点就成为主冷启动节点。
冷启动尝试以冲突避免操作符(Collision Avoidance Symbol)开始, 只有传输 CAS 的冷启动节点能在最开始的四个周期传输帧。主冷启动节点先在两个通道上发送无格式的符号(一定数量的无效位),然后启动集群。在无格式符号发送完毕后, 主冷启动节点启动该节点的时钟, 进入第一个通信周期。从冷启动节点可以接收主冷启动节点发送的消息, 在识别消息后, 从冷启动节点便可确认主冷启动节点发送的消息的时槽位置。然后等待下一个通信周期, 当接收到第二个消息后, 从冷启动节点便开始启动它们的时钟。根据两条消息的时间间隔, 测量与计算频率修正值,尽可能地使从启动节点接近主冷启动节点的时间基准。为减少错误的出现, 冷启动节点在传输前需等待两个通信周期。在这期间, 其余的冷启动节点可继续接收从主冷启动节点及已完成集群冷启动节点的消息。
从第五个周期开始, 其余的冷启动节点开始传输起始帧。主冷启动节点接收第五与第六个周期内其余冷启动节点的所有消息, 并同时进行时钟修正。在这个过程中没有故障发生, 且冷启动节点至少收到一个有效的起始帧报文对, 主冷启动节点则完成启动阶段, 开始进入正常运行状态。
非冷启动节点首先监听通信信道, 并接收信道上传输的信息帧。若接收到信道上传输的信息帧,便开始尝试融入到启动节点。在接下来的两个周期内, 非冷启动节点要确定至少两个发送启动帧的冷启动节点, 并符合它们的进度。若无法满足条件, 非冷启动节点将退出启动程序。非冷启动节点接收到至少两个启动节点连续的两组双周期启动帧后, 开始进入正常运行状态。非冷启动节点进入正常工作状态, 比主冷启动节点晚两个周期。
如下图所示, 描述了正确的启动过程。其中, A 是主冷启动节点, B 是从冷启动节点, C是非冷启动节点。
在 BMW 车系 F01 / F02 车型中, 通过 FlexRay 总线系统以跨系统方式实现汽车行驶动态 管理系统和发动机管理系统的联网。同时, FlexRay 是行驶动态管理系统的综合性 主总线系统 (图3.1), 中央网关模块用于不同总线系统与 FlexRay 之间的连接 (图3.2)。
图3.1 FlexRay 是行驶动态管理系统的综合性主总线系统
图3.2 中央网关模块 (ZGM) 用于不同总线系统与 FlexRay 之间的连接
F01 / F02 车型 FlexRay 总线系统的拓扑结构如图3.3所示。根据车辆配置情况, ZGM 带有一个或两个星形连接器, 每个星形连接器都有 4 个总线驱动器。总线驱动器将控制单元 数据通过通信控制器传输给中央网关模块 (ZGM)。根据 FlexRay 控制单元的终端形式, 总 线驱动器通过两种方式与这些控制单元相连。
图3.3 F01 / F02 车型 FlexRay 总线系统的拓扑结构
AL—主动转向系统 BD—总线驱动器 DME—数字式发动机电子系统 DSC—动态稳定控制系统 EDCSHL—左后 电子减振器控制系统卫星式控制单元 EDCSHR—右后电子减振器控制系统卫星式控制单元 EDCSVL—左前电子减 振器控制系统卫星式控制单元 EDCSVR—右前电子减振器控制系统卫星式控制单元 HSR—后桥侧偏角控制系统 ICM—集成式底盘管理系统 SZL—转向柱开关中心 VDM—垂直动态管理系统 ZGM—中央网关模块
与大多数总线系统一样, 为了避免在导线上产生信号反射, FlexRay 上的数据导线两端 也使用了终端电阻 (作为总线终端)。这些终端电阻的阻值由数据传输速率和导线长度决 定。终端电阻位于各个控制单元内部。
如果一个总线驱动器上仅连接一个控制单元 (例如 SZL 与总线驱动器 BDO 相连), 则 总线驱动器和控制单元的接口各有一个终端电阻 (图3.4)。中央网关模块的这种连接方式 称为 “终止节点终端”。
图3.4 终止节点终端内部的终端电阻
如果控制单元上的接口不是物理终止节点 (例如总线驱动器 BD2 上的 IEC、 ICM 和 DME), 而是形成环路, 则每个总线路径端部的两个组件内部必须设置终端电阻(图3.5)。
图3.5 形成环路的 FlexRay 终端电阻的设置
这种连接方式既用于中央网关模块, 也用于一些控制单元。但是形成环路的控制单元还 使用一个 “非终止节点终端” 来获取数据。受这种终端形式的电阻/ 电容器电路所限, 无法 通过测量技术在控制单元插头上对其进行检查。通过测量 (无电流) FlexRay 总线确定导线 或终端电阻时, 必须使用车辆电路图。
FlexRay总线原理及应用