概览
FlexRay 通信总线是与汽车制造商和领先供应商共同开发的确定性、容错和高速总线系统。FlexRay 为线控应用(即线控驱动、线控转向、线控制动等)提供了容错和时间确定性性能要求。本文介绍了 FlexRay 的基础知识。
内容
- 不断增长的通信需求
- FlexRay 基础知识
- FlexRay 拓扑和布局
- FlexRay 协议
- FIBEX - FlexRay 网络数据库
- PCI 和 PXI FlexRay 接口
- 结论
不断增长的通信需求
为了让汽车继续提高安全性、提高性能、减少对环境的影响并提高舒适度,汽车电子控制单元 (ECU) 之间通信数据的速度、数量和可靠性必须提高。先进的控制和安全系统(结合了多个传感器、执行器和电子控制单元)开始需要超越现有标准控制器局域网 (CAN) 所能提供的同步和性能。再加上当今先进的汽车带宽需求不断增长,汽车工程师需要下一代嵌入式网络。经过与原始设备制造商、工具供应商和最终用户多年的合作,在汽车等复杂的嵌入式设计中采用新的网络标准需要时间。尽管 FlexRay 将解决当前高端和未来主流车载网络的挑战,但它不会取代另外两个主要的车载标准 CAN 和 LIN。为了优化成本并减少过渡挑战,下一代汽车将包含用于高端应用的 FlexRay、用于主流动力总成通信的 CAN 和用于低成本车身电子设备的 LIN。
Bus | LIN | CAN | F le x R a y |
速度 | 40 千比特/秒 | 1兆比特/秒 | 10 兆比特/秒 |
成本 | $ | $$ | $$$ |
Wires | 1 | 2 | 2 或 4 |
典型应用 | 车身电子设备(后视镜、电动座椅、配件) | 动力总成(发动机、变速箱、ABS) | 高性能动力总成、安全性(线控、主动悬架、自适应巡航控制) |
了解 FlexRay 的工作原理对于车辆设计和生产过程的各个方面的工程师都很重要。本文将解释 FlexRay 的核心概念。
FlexRay 基础知识
FlexRay 的许多方面旨在降低成本,同时在恶劣的环境中提供最佳性能。FlexRay 使用非屏蔽双绞线将节点连接在一起。FlexRay 支持分别由一对或两对线组成的单通道和双通道配置。每对电线上的差分信号可减少外部噪声对网络的影响,而无需昂贵的屏蔽。大多数 FlexRay 节点通常还具有可用于为收发器和微处理器供电的电源线和地线。
双通道配置提供增强的容错性和/或增加的带宽。大多数第一代 FlexRay 网络仅使用一个通道来降低布线成本,但随着应用程序复杂性和安全要求的增加,未来的网络将使用两个通道。
FlexRay 总线需要在末端以电阻器的形式连接在信号线对之间。Only the end nodes on a multi-drop bus need termination。过多或过少的termination都会破坏 FlexRay 网络。虽然具体的网络实现有所不同,但典型的 FlexRay 网络的布线阻抗在 80 到 110 欧姆之间,并且终端节点被termination以匹配该阻抗。将 FlexRay 节点连接到测试设置时,termination是最常见的失效原因之一。现代基于 PC 的 FlexRay 接口可能包含板载终端电阻器以简化布线。
FlexRay 拓扑和布局
FlexRay、CAN 和 LIN 与更传统的网络(如以太网)的区别之一是其拓扑结构或网络布局。FlexRay 支持简单的多点无源连接以及用于更复杂网络的有源星形连接。根据车辆的布局和 FlexRay 的使用水平,选择正确的拓扑有助于设计人员优化给定设计的成本、性能和可靠性。
多点总线/Multi-drop Bus
FlexRay 常用于简单的多点总线具有将多个 ECU 连接在一起的单一网络电缆运行的拓扑结构。这与 CAN 和 LIN 使用的拓扑相同,并且为 OEM 所熟悉,使其成为第一代 FlexRay 车辆中流行的拓扑。Each ECU can "branch" up to a small distance from the core "trunk" of the bus. 。网络末端安装了端接电阻,可消除信号反射问题。由于 FlexRay 以高频率运行,与 CAN 的 1 Mbit 相比,高达 10 Mbit/s,FlexRay 设计人员非常注意正确终止和布局网络以避免信号完整性问题。多点形式也非常适合通常具有相似布局类型的车辆线束,从而简化了安装并减少了整个车辆的布线。
星网/Star Network
FlexRay 标准支持由连接到中央活动节点的单独链路组成的“星形”配置。该节点在功能上类似于 PC 以太网中的集线器。主动星形配置可以在更长的距离上运行 FlexRay 网络,或者以这样一种方式对网络进行分段,以便在网络的一部分出现故障时使其更加可靠。如果一个分支被切断或短路,其他branches继续运作。由于长距离的电线往往会传导更多的环境噪声,例如大型电动机的电磁辐射,因此使用多条branches可以减少一段电线的裸露量,并有助于提高抗噪能力。
混合网络
总线和星形拓扑可以组合形成混合拓扑。未来的 FlexRay 网络可能由混合网络组成,以利用总线拓扑的易用性和成本优势,同时在车辆需要的地方应用星形网络的性能和可靠性。
FlexRay 协议
FlexRay 协议是一种独特的时间触发协议,它为在可预测的时间范围内(低至微秒)到达的确定性数据以及类似 CAN 的动态事件驱动数据提供选项以处理各种帧。FlexRay 通过为静态和动态数据提供预定义空间的预设通信周期来实现核心静态帧和动态帧的这种混合。该空间由网络设计者与网络一起配置。虽然 CAN 节点只需要知道正确的波特率即可进行通信,但 FlexRay 网络上的节点必须知道网络的所有部分是如何配置的才能进行通信。
与任何多点总线一样,一次只有一个节点可以将数据写入总线。如果两个节点同时写入,您最终会在总线上发生争用,并且数据会损坏。有多种方案用于防止总线上的争用。例如,CAN 使用仲裁方案,如果节点看到在总线上发送的具有更高优先级的消息,节点将让步给其他节点。虽然灵活且易于扩展,但该技术不允许非常高的数据速率并且不能保证数据的及时交付。FlexRay 使用时分多路访问管理多个节点或 TDMA 方案。每个 FlexRay 节点都与同一个时钟同步,每个节点都等待轮到它在总线上写入。由于 TDMA 方案中的时序是一致的,因此 FlexRay 能够保证向网络上的节点传送数据的确定性或一致性。这为依赖于节点之间最新数据的系统提供了许多优势。
嵌入式网络不同于基于 PC 的网络,因为它们具有封闭的配置,并且一旦组装到生产产品中就不会改变。This eliminates the need for additional mechanisms to automatically discover and configure devices at run-time, much like a PC does when joining a new wired or wireless network. 通过提前设计网络配置,网络设计人员可以节省大量成本并提高网络的可靠性。
要使 FlexRay 等 TDMA 网络正常工作,必须正确配置所有节点。FlexRay 标准适用于许多不同类型的网络,并允许网络设计人员在网络更新速度、确定性数据量和动态数据量以及其他参数之间进行权衡。每个 FlexRay 网络都可能不同,因此每个节点必须使用正确的网络参数进行编程,然后才能参与总线。
为了便于维护节点之间的网络配置,FlexRay 委员会对工程过程中这些参数的存储和传输格式进行了标准化。现场总线交换格式或FIBEX文件是 ASAM 定义的标准,允许网络设计人员、原型设计人员、验证人员和测试人员轻松共享网络参数并快速配置 ECU、测试工具、硬件在环仿真系统和so on for easy access to the bus.
通信周期/The Communication Cycle
FlexRay 通信周期是 FlexRay 中媒体访问方案的基本元素。在设计网络时,一个周期的持续时间是固定的,但通常在 1-5 毫秒左右。通信周期有四个主要部分:
图 1:通信周期
- 静态段
为在固定周期到达的确定性数据保留的时隙。 - 动态段
动态段的行为与 CAN 类似,用于更广泛的、不需要确定性的基于事件的数据。 - 符号窗口
通常用于网络维护和启动网络的信令。 - 网络空闲时间
一个已知的“安静”时间,用于保持节点时钟之间的同步。
图 2. FlexRay macrotick
FlexRay 网络上最小的实际时间单位是macrotick。FlexRay 控制器主动同步并调整它们的本地时钟,以便macrotick在网络上的每个节点上的同一时间点发生。虽然可针对特定网络进行配置,但macrotick通常为 1 微秒长。因为macrotick是同步的,依赖它的数据也会同步。
1.静态段
图 3:具有 3 个 ECU 将数据传输到 4 个保留slots的静态段示意图。
以帧的蓝色部分表示的静态段是周期中用来 scheduling a number of time-triggered frames的空间。该段被分成多个slots,每个slot包含一个保留的数据帧。当每个时隙及时出现时,保留的 ECU 就有机会将其数据传输到该时隙。一旦该时间过去,ECU 必须等到下一个周期才能在该slot中传输其数据。因为在周期中确切的时间点是已知的,所以数据是确定性的,程序可以准确地知道how old the data is。这在计算依赖于一致间隔数据的控制回路时非常有用。 图 3说明了一个简单的网络,其中三个 ECU 使用了四个静态slots。实际的 FlexRay 网络可能包含多达几十个静态slots。
图 4. 缺少 ECU #2 的静态slot示意图。
如果 ECU goes offline 或决定不传输数据,则其slot保持打开状态,不被任何其他 ECU 使用,如图 4 所示。
2.动态段
图 5. 带有一个 ECU 广播数据的 FlexRay 动态slot示意图。
大多数嵌入式网络都有少量高速消息和大量低速、不太关键的网络。为了适应多种数据而不用过多的静态时隙减慢 FlexRay 周期,动态段允许偶尔传输数据。该段是固定长度的,因此每个周期可以放置在动态段中的固定数据量是有限制的。为了对数据进行优先级排序,微时隙/minislot被预先分配给适合在动态段中传输的每一帧数据。微时隙通常是一个macrotick(微秒)长。较高优先级的数据receives a minislot closer to the beginning of the dynamic frame。
一旦出现minislot ,ECU 就有一个短暂的机会来广播其帧。如果它不广播,它就会失去它在动态帧中的位置,并且 the next minislot occurs。This process moves down the minislots 直到 ECU 选择广播数据。随着数据广播, future minislots 必须等到 ECU 完成其数据广播。如果动态帧窗口结束,那么优先级较低的minislots必须等到下一个周期才能有另一个广播机会。
图 6. 动态slots图显示 ECU 2 和 3 在其minislots中进行广播,并没有为低优先级minislots留出时间。
图 5 显示了 ECU #1 在其 minislot 中广播,因为前 7 个minislots chose not to broadcast.。图 6 显示了 ECU #2 和 #3 使用前两个微slot,没有时间让 ECU #1 进行广播。ECU #1 必须等待下一个周期广播。
动态段的最终结果是类似于 CAN 使用的仲裁方案的方案。
3. 符号窗口
符号窗口主要用于维护和识别特殊循环,例如冷启动循环。大多数高级应用程序不与符号窗口交互。
4.网络空闲时间
网络空闲时间是 ECU 预先定义的已知长度。ECU 利用这段空闲时间对前一个周期可能发生的任何漂移进行调整。
数据安全和错误处理
FlexRay 网络通过允许单通道或双通道通信提供可扩展的容错能力。对于安全关键型应用,连接到总线的设备可以使用两个通道来传输数据。然而,当不需要冗余时,也可以只连接一个通道,或者通过使用两个通道来传输非冗余数据来增加带宽。
在物理层内,FlexRay 提供快速的错误检测和信号发送,以及通过独立的 Bus Guardian 进行错误控制。Bus Guardian 是物理层上的一种机制,可保护通道免受与集群通信计划不一致的通信造成的干扰。
帧格式
图 7. FlexRay 帧的详细信息
静态或动态段的每个slot都包含一个 FlexRay 帧。帧分为三个部分:Header、Payload 和 Trailer。
Header
图 8. FlexRay 帧的位级分解
标头长 5 个字节(40 位),包括以下字段:
- 状态位 - 5 位
- 帧 ID - 11 位
- 有效载荷长度 - 7 位
- 标头 CRC - 11 位
- 循环计数 - 6 位
帧 ID 定义了the slot in which the frame should be transmitted,并用于对事件触发帧进行优先级排序。有效载荷长度contains the number of words which are transferred in the frame.。Header CRC 用于在传输过程中检测错误。循环计数包含每次通信循环开始时递增的计数器的值。
有效载荷
图 9. FlexRay 帧的有效负载。
有效载荷包含帧传输的实际数据。FlexRay 有效负载或数据帧的长度最多为 127 个字(254 字节),比 CAN 长 30 多倍。
Trailer
图 10. FlexRay 帧的预告片。
尾部包含三个用于检测错误的 8 位 CRC。
信号/Signals
图 11. 帧到信号的转换
FlexRay 数据以字节表示。大多数应用程序要求数据以具有单位、比例和限制的 decimal values表示。当您从 FlexRay 帧中获取一个或多个位或字节时,应用缩放和偏移量,您将获得一个信号,该信号对于在 ECU 之间传递实际参数很有用。大多数 ECU 程序使用 FlexRay 数据作为信号,并将信号转换为原始帧数据留给驱动程序或较低级别的通信协议。
典型的车辆具有成百上千个信号。随着这些信号的缩放、偏移、定义和位置可能发生变化,FlexRay 网络将这些定义存储在定义网络的 FIBEX 数据库中。这使得为 FlexRay 网络编写程序变得更加容易,因为设计人员可以refer to the signal name in the code。然后,when the program is updated to the ECU or test system,编译器或驱动程序会提取最新的缩放和偏移信息。
时钟同步和冷启动
图 12. FlexRay 网络的简化同步过程
FlexRay 具有在没有外部同步时钟信号的情况下同步网络上节点的独特能力。为此,它使用了 2 种特殊类型的帧:启动帧和同步帧。要启动 FlexRay 集群,至少需要 2 个不同的节点来发送启动帧。启动 FlexRay 总线的动作称为冷启动,发送启动帧的节点通常称为冷启动节点。启动帧类似于启动触发器,它告诉网络上的所有节点启动。
一旦网络启动,所有节点都必须将其内部振荡器与网络的宏标同步。这可以使用另外两个同步节点来完成。这些可以是网络上任何两个单独的节点,它们在首次打开时预先指定用于广播特殊同步帧。网络上的其他节点等待同步帧被广播,并测量连续广播之间的时间,以便将它们的内部时钟校准到 FlexRay 时间。同步帧在网络的 FIBEX 配置中指定。
一旦网络同步并上线,就会测量网络空闲时间(图中的空白区域)并用于逐个周期地调整时钟以保持紧密同步。
循环控制/In-cycle control
图 13. 循环控制读取 4 个车轮位置并在单个 FlexRay 循环中更新车辆控制输出。
FlexRay 的一个高级功能是能够进行循环控制。图 13 说明了一个示例,其中四个车轮位置在帧的静态时隙中广播。Because the wheel positions occur before the final update command from the central controller #5,因此控制器有时间在同一通信周期内处理并快速输出。这允许s s在 FlexRay 网络上实现非常高速的控制速率。
FIBEX - FlexRay 网络数据库
现场总线交换 (FIBEX) 格式是 ASAM 联盟定义的基于 XML 的标准化文件格式,用于描述汽车网络。作为 FlexRay 网络的标准格式,FIBEX 数据库格式与许多不同的汽车协议兼容,使其成为一种灵活的标准。FIBEX 数据库通常由车辆网络设计人员生成,并与从事车辆特定方面工作的工程师共享。通过 FIBEX 文件和支持它的 PC 接口或 ECU,您可以轻松地与车辆网络进行交互,而无需手动配置接口和信号定义。
FIBEX 包含特定网络的许多方面,包括以下内容:
- 发送和接收时间表
- 框架定义
- 信号定义
- 信号的比特级编码
- 网络拓扑结构
- ECU信息
- 网络配置,包括波特率和时序
PCI 和 PXI FlexRay 接口
National Instruments 提供高性能PCI 和 PXI FlexRay 接口,用于将 PC 连接到 FlexRay 网络。通过基于 PC 的界面,您可以在支持 FlexRay 的 ECU 上执行许多工程任务,包括:
- 快速原型制作
- 硬件在环仿真
- 总线记录和调试
- 信号数据采集
- 系统诊断
- 自定义应用程序
结论
FlexRay 通信网络满足下一代汽车的确定性、容错性和高速总线系统性能要求。