原文链接:http://www.ulantec.cn/a/xinwen/xingyezixun/8.html
FlexRay通信总线是由多个汽车制造商和领先的供应商共同开发的确定性、容错和高速总线系统。 FlexRay满足了线控应用(即线控驱动、线控转向、线控制动等)的容错性和时间确定性的性能要求,本文介绍FlexRay的基础知识。
为了使汽车继续提高安全性、提升性能、减少环境影响并增强舒适性,必须提高汽车电子控制单元(ECU)之间传送数据的速度、数量和可靠性。先进的控制和安全系统(结合了多个传感器、执行器和电子控制单元)开始要求同步功能和传输性能超过现有标准的控制器局域网(CAN)所能提供的性能。随着带宽需求的增长和各种先进功能的实现,汽车工程师急需下一代嵌入式网络。经过OEM厂商、工具供应商和最终用户的多年合作,FlexRay标准已经成为车载通信总线,以应对下一代车辆中的这些新的挑战。
FlexRay还能够提供很多CAN网络不具有的可靠性特点,尤其是FlexRay具备的冗余通信能力可实现通过硬件完全复制网络配置,双通道冗余进行数据通信。FlexRay同时提供灵活的配置,可支持各种拓扑,如总线、星型和混合拓扑。设计人员可以通过结合两种或两种以上的该类型拓扑来配置分布式系统。
了解FlexRay的工作原理对工程师在车辆设计和生产过程的各个方面都至关重要。 本文将解释FlexRay的核心概念。
FlexRay的许多方面旨在降低成本,同时在恶劣的环境中提供最佳性能。 FlexRay使用非屏蔽双绞线电缆将节点连接在一起,FlexRay总线可以由一对或两对电缆组成的单通道和双通道组成。每对线缆上的差分信号减少了外部噪声对网络的影响,而无需昂贵的屏蔽层。大多数FlexRay节点通常还具有可用于收发器和微处理器的电源线和地线。
双通道配置可提高容错能力或增加带宽。大多数第一代FlexRay网络仅利用一个信道来降低布线成本,但是随着应用程序对复杂性和安全性要求的提高,未来的网络将同时使用这两个信道。
FlexRay总线要求信号线两边端接电阻,仅多分支总线上的末端节点需要端接,端接太多或太少都会破坏FlexRay网络。尽管特定的网络实现有所不同,但典型的FlexRay网络的电缆阻抗在80到110欧姆之间,并且端节点端接以匹配该阻抗。将FlexRay节点连接到测试装置时,终端电阻是造成网络通讯失败的最常见原因之一。基于PC的现代FlexRay接口可能包含板上端接电阻器,以简化布线。
FlexRay,CAN和LIN与更传统的网络(如以太网)的区别之一是其拓扑结构或网络布局。 FlexRay支持简单的多点无源连接以及更复杂的有源星形连接。 根据车辆的布局和FlexRay的使用水平,选择正确的拓扑有助于设计人员针对给定的设计优化成本、性能和可靠性。
FlexRay通常用于简单的多点总线拓扑结构中,该拓扑结构具有将多个ECU连接在一起的单根网络电缆。 这是CAN和LIN使用的相同拓扑,并且是OEM熟悉的拓扑,使其成为第一代FlexRay车辆中流行的拓扑。每个ECU可以“分支”到离总线核心“主干”很小的距离。 网络的末端安装了终端电阻,可消除信号反射问题。 由于FlexRay在高频率下运行,与CAN的1 Mbit相比,高达10 Mbit / s,因此FlexRay设计人员要非常小心地正确端接和布置网络,以避免信号完整性问题。 多点总线形式也非常适合通常具有相似布局类型的车辆线束,从而简化了安装并减少了整车的布线。
FlexRay标准还支持星型网络的配置,该配置由连接到中央活动节点的各个链接组成。 该节点在功能上类似于PC以太网中的集线器。 主动星型配置使得可以在更长的距离上运行FlexRay网络,或者以某种方式分割网络,从而在部分网络出现故障时使其更加可靠。 如果星型分支之一被切断或短路,则另一分支将继续起作用。 由于长距离的导线往往会传导更多的环境噪声,例如大型电动机的电磁辐射,因此使用多条分支可减少一段电缆的裸线数量,并有助于提高抗噪能力。
可以将总线拓扑和星形拓扑组合在一起以形成混合拓扑。 未来的FlexRay网络将可能由混合网络组成,以利用总线拓扑的易用性和成本优势,同时在车辆需要的地方应用星型网络的性能和可靠性。
FlexRay协议是一种独特的时间触发协议,它提供两种方式处理数据,一种是可确定性的时间范围(低至微秒)内到达的确定性数据,还有可处理多种帧的类似CAN的动态事件驱动数据。 FlexRay通过预设的通信周期实现了核心静态帧和动态帧的这种混合,该通信周期为静态和动态数据提供了预定义的空间。 网络设计者根据网络需求配置总线周期分配。CAN总线仅需要知道正确的波特率即可进行通信,但FlexRay网络上的节点必须知道如何配置网络的所有部分才能进行通信。
与任何多点总线一样,一次只有一个节点可以将数据写入总线。 如果要同时写入两个节点,则会导致总线争用,并且数据会损坏。 有多种用于防止总线争用的方案,例如,CAN使用了一种仲裁方案,如果节点看到在总线上发送的具有更高优先级的消息,则它们将让位于其他节点。 尽管这种技术灵活且易于扩展,但它不允许很高的数据速率,并且不能保证及时提供数据。 FlexRay使用时分多址或TDMA方案管理多个节点。 每个FlexRay节点都同步到相同的时钟,并且每个节点都等待其轮流写入总线。 因为时序在TDMA方案中是一致的,所以FlexRay能够保证确定性或数据传递到网络上节点的一致性。 这为依赖节点之间最新数据的系统提供了许多优势。
嵌入式网络与基于PC的网络的不同之处在于,它们具有封闭的配置,并且一旦在生产产品中组装后就不会更改。 这消除了在运行时自动发现和配置设备的其他机制的需要,就像PC在加入新的有线或无线网络时所做的一样。 通过提前设计网络配置,网络设计师可以节省大量成本并提高网络可靠性。
为了使FlexRay等TDMA网络正常工作,必须正确配置所有节点。 FlexRay标准适用于许多不同类型的网络,并允许网络设计人员在网络更新速度、确定性、数据量和动态数据量以及其他参数之间进行权衡。 每个FlexRay网络都可能不同,因此必须在每个节点都使用正确的网络参数进行编程之后才能参与总线。
为了促进维护节点之间的网络配置,FlexRay委员会标准化了一种在工程过程中用于存储和传输这些参数的格式。 现场总线交换格式或FIBEX文件是ASAM定义的标准,允许网络设计人员、原型设计人员、验证人员和测试人员轻松共享网络参数并快速配置ECU、测试工具、硬件在环仿真系统和以便于轻松访问总线。
FlexRay通信周期是FlexRay总线内介质访问的基本要素。设计网络时,周期的持续时间是固定的,但通常为1-5毫秒左右。 通讯周期内划分为四个主要部分:
图1 通讯周期
静态段
为固定时间到达的确定性数据预留的时隙。
动态段
动态段的行为类似于CAN,可用于不需要确定性的各种基于事件的数据。
符号窗口
通常用于网络维护和启动网络的信号。
网络空闲时间
已知的空闲时间用于维
图2. FlexRay通讯周期的细节
FlexRay网络上最小的实际时间单位是一个宏刻度。 FlexRay控制器主动进行自我同步并调整其本地时钟,以便在整个网络的每个节点上的同一时间点都出现宏刻度。 虽然可以为特定网络配置,但宏刻度通常为1微秒长。 由于宏刻度是同步的,因此依赖它的数据也将同步。
图3 展示4个ECU设备在静态时隙发送数据
静态段(表示为帧的蓝色部分)是循环中专用于调度许多时间触发帧的空间。 该段分为多个时隙,每个时隙包含一个保留的数据帧。 当每个时隙到达时,保留的ECU有机会将其数据传输到该时隙中。 一旦超过该时间,ECU必须等到下一个周期才能在该时隙中传输其数据。 因为在周期中知道了确切的时间点,所以数据是确定性的,程序也确切地知道数据是否有更新。 这在计算依赖于一致间隔数据的控制回路时非常有用。 图3说明了一个简单的网络,其中4个ECU使用了8个静态时隙。 实际的FlexRay网络可能包含多达几十个静态时隙。
图4 展示缺少ECU2和4的静态时隙
如果ECU离线或决定不传输数据,则其时隙将保持打开状态,并且未被其他任何ECU使用,如图4所示。
图5 带有一个ECU广播数据的FlexRay动态插槽的图示
大多数嵌入式网络都是由少量的高速消息和大量的低速、不太重要的消息组成。 为了容纳各种数据而又不因过多的静态时隙而减慢FlexRay周期,动态段允许偶尔传输数据。 该段的长度是固定的,因此每个周期可放入动态段的固定数据量是有限的。 为了确定数据的优先级,将微时隙(minislot)预分配给在动态段中适合传输的每个数据帧。 微时隙的长度刻度通常为1微秒。 较高优先级的数据会收到一个靠近动态帧开始的微时隙。
一旦微时隙达到,ECU便有短暂的机会广播其帧。 如果不广播,它将丢失其在动态帧中的位置,并出现下一个微时隙。 此过程将向下移动至微时隙,直到ECU选择广播数据为止。 在广播数据时,后面的微时隙必须等待,直到ECU完成其数据广播。 如果动态帧窗口结束,则优先级较低的微时隙必须等到下一个周期再广播一次。
图6。动态时隙图示,展示出ECU#2和ECU#3在其微时隙中广播,并且没有时间留给较低优先级的微时隙。
图5显示了ECU#1在它的微时隙中的广播,因为前4个微时隙选择不广播。图6显示了ECU#2和ECU#3使用前两个minislot,没有时间让ECU#1广播。ECU#1必须等待下一个循环广播。
动态段的最终结果是一个类似于CAN使用的仲裁方案的办法。
符号窗口主要用于维护和识别特殊循环,如冷启动循环。大多数高级应用程序不与符号窗口交互。
网络空闲时间是由ECU预先定义的已知长度。ECU利用这个空闲时间来调整在前一个周期中可能发生的任何漂移。
FlexRay网络通过允许单通道或双通道通信提供可扩展的容错能力。对于安全性至关重要的应用程序,连接到总线的设备可以使用两个通道来传输数据。然而,当不需要冗余时,也可以仅连接一个通道,或者通过使用两个通道传输非冗余数据来增加带宽。
在物理层内,FlexRay通过独立的总线守护程序提供快速的错误检测和信令,以及错误抑制。总线守护程序是物理层上的一种机制,用于保护信道免受与群集通信时间表不符的通信所引起的干扰。
图7 FlexRay帧格式细节
静态或动态段的每个时隙都包含一个FlexRay帧。帧被分为三个部分:帧头、有效负载和帧尾。
图8 FlexRay帧的位级分解
帧头为5个字节(40位)长,包括以下字段:
名称 |
长度(bits) |
状态位 |
5 |
帧ID |
11 |
有效负载长度 |
7 |
帧头CRC |
11 |
周期计数 |
6 |
帧ID定义了应在其中传输帧的时隙号,并用于对事件触发的帧进行优先级排序。 有效负载长度包含在帧中传输的数据字数。 帧头CRC用于检测传输过程中的错误。 周期计数包含一个计数器的值,该值在每次通信周期开始时递增。
图9 FlexRay帧的数据负载
有效负载包含帧传输的实际数据。 FlexRay有效负载或数据帧的长度最多为127个字(254字节),是CAN的30倍以上。
帧的负载可以包括三个部分:
数据:可以是0~254字节;
消息ID:使用负载段的前两个字节进行定义,可以在接收方作为可过滤数据使用;
网络管理向量:向量长度必须为0~10个字节。
图10 FlexRay帧尾
尾部包含三个8位CRC校验用来检测错误。
FlexRay具有独特的功能,无需外部同步时钟信号即可同步网络上的节点。为此,它使用2种特殊类型的帧:“启动帧”和“同步帧”。要启动FlexRay集群,至少需要2个不同的节点才能发送启动帧。启动FlexRay总线的操作称为冷启动,发送启动帧的节点通常称为冷启动节点。启动帧类似于启动触发器,该触发器告诉网络上的所有节点启动。
网络启动后,所有节点都必须将其内部振荡器与网络的全局时钟同步。这可以使用另外两个同步节点来完成,这些节点可以是网络上的任意两个单独的节点,它们预先指定在首次打开时广播特殊同步帧。网络上的其他节点等待同步帧广播,并测量连续广播之间的时间,以便将其内部时钟校准为FlexRay时间。
一旦网络同步并联机,就会测量网络空闲时间(图中的空白区域),并用于按周期调整时钟,以保持紧密同步。
比较项 |
CAN |
1553B |
FlexRay |
波特率 |
1Mbps |
1,4,10Mbps |
10Mbps |
每节点通道数 |
1 |
2(A,B冗余) |
2(A,B冗余) |
网络拓扑 |
总线型 |
总线型 |
总线、星型、混合型 |
通讯方式 |
事件触发 |
BC主控 |
时间触发、事件触发 |
成本 |
低 |
高 |
中等 |
数据负载长度 |
8字节 |
0-64字节 |
254字节 |
帧类型 |
数据帧、远程帧、错误帧 |
数据帧、方式代码 |
数据帧 |
硬件板卡选择天津优蓝科技有限公司的UL-XM7670 Flexray总线通讯卡,该卡对外采用XMC接口与载板连接,厂家提供XMC转PCIE、CPCI等接口的转换载板,帮助用户在各种硬件环境下快速建立实验平台。
UL-XM7670Flexray卡技术规格:
通讯接口
• 满足XMC VITA42.0 结构电气规格;
• PCIe x1 Gen1总线
• 4路隔离CAN2.0B总线
• 2路隔离FlexRay总线(每路包括A、B两通道)
• 后出线由XMC P16引出;兼容PMC P14输出
软件支持
• Linux32/64位
• Wind River VxWorks 6.8/6.9
• Windows 64位
• 国产化操作系统适配
• 提供基于windows平台的图形化测试软件Flexray BusTool,用户可使用该软件快速搭建仿真、测试系统。
• 提供各种操作系统下的驱动和动态库,提供flexray通讯例程源码。
物理特性
• 尺寸:147.5 mm x 74.0 mm,10 mm堆叠高度
环境要求
• 工作温度 -43℃~+85℃
• 存储温度 -50℃~+85℃
电源要求
• 电源输入:DC +12V(+/-10%)
• 功耗: ≤ 8W
配件支持
• 可选配XMC转PCI-E接口卡,便于安装在PC机上
• 可选配XMC转CPCI载板卡,便于安装在加固机箱或PXI测试机箱内
典型应用:
FlexRay总线记录仪
• 可选配低功耗PowerPC处理器,支持SATA存储,数据库查询。
FlexRay总线测试仪
• 搭配支持XMC或PCIE接口的工业计算机,可进行Flexray总线测试。
FlexRay总线开发测试
• 支持多通道模拟总线通讯,辅助flexray总线开发测试。
Windows下Flexray通讯测试步骤:
1、首先根据Flexray系统的总线设计规划来配置Flexray卡的全局初始化参数,界面如下图所示。
2、根据发送数据和接收数据的实际需求,分别多发送和接收时隙进行配置,界面如下:
发送界面配置
接收界面配置
3、发送和接收参数配置好以后,点击进入数据监控界面,点击【运行】按钮启动Flexray通信,界面如下:
总线运行起来后,监控界面会显示接收到的flexray信息。同时软件可以将接收到的消息存入本地数据库,便于后期进行数据查看和分析,界面如下:
软件还提供flexray总线消息的物理量显示,可以在软件界面上拖拽图形显示控件,布局实时监控画面,如下图所示: