工控网首页
>

应用设计

>

车内通信网络标准FlexRay的功能和特性分析

车内通信网络标准FlexRay的功能和特性分析

2013/8/6 10:02:04

FlexRay标准在车内通信网络中具有较大优势和广泛的潜在应用机会。本文详细地介绍了FlexRay的数据速率、时钟同步等特性及可能的应用领域,并分析了FlexRay的访问方法、时钟同步和群组启动等功能。

图1:几种汽车通信协议的成本和速率比较。

在FlexRay协议制定5年后,该协议规范的第二版(V2.1)在2005年春季发布。由于新技术能实现经济高效的新应用,整个行业对这个标准产生了浓厚的兴趣,本文将探讨该标准潜在的应用领域,详细地介绍在FlexRay中使用的三种机制,并列举一系列实例来讨论FlexRay的几种应用。此外,本文还将讨论可行和不可行的拓扑结构,并简要论述唤醒群组(Cluster)的场景,以及讨论如何计算最优的消息帧大小。 FlexRay的特性 FlexRay提供了传统车内通信协议所不具备的大量特性,包括: a. 2�10Mbps的数据速率 FlexRay支持两个通信信道,每个信道的速度达到10Mbps。与CAN协议相比,它能将可用带宽提高10-40倍,具体大小取决于配置和对比模式的不同。 b. 同步时基 FlexRay中使用的访问方法是基于同步时基的。该时基通过协议自动建立和同步,并提供给应用。时基的精确度介于0.5μs和10μs之间(通常为1-2μs)。

图2:带静态和动态段的通信周期。 c.知道消息的到达时间 通信是在不断循环的周期中进行的,特定消息在通信周期中拥有固定位置,因此接收器已经提前知道了消息到达的时间。到达时间的临时偏差幅度会非常小,并能得到保证。 d. 冗余和非冗余通信 为了增强系统的可用性,FlexRay提供了冗余传输消息的选项。消息能够冗余传输,但并不是所有消息都必须冗余传输,否则会导致带宽的过多损耗。 e. 灵活性 在FlexRay协议的开发过程中,关注的主要问题是灵活性。不仅提供消息冗余传输或非冗余传输两种选择,系统还可以进行优化,以提高可用性(静态带宽分配)或吞吐量(动态带宽分配)。用户还可以扩展系统,而无需调整现有节点中的软件。同时,还支持总线或星型拓扑。FlexRay提供了大量配置参数,可以支持对系统进行调整,如通信周期的持续时间、消息长度等,以满足特定应用的需求。 应用领域 上面列出的这些特性使FlexRay适合于很多应用领域,包括: 1.替代CAN总线

图3:时钟同步机制。 在数据速率要求超过CAN的应用中,人们现在同时使用了两条或多条CAN总线。FlexRay是替代这种多总线解决方案的理想技术。 2.骨干网络 FlexRay具有很高的数据速率,因而非常适合于汽车骨干网络,用于连接多个独立网络。 3.实时应用,分布式控制系统 用户可以提前知道消息到达时间,消息周期偏差非常小,这使得FlexRay成为具有严格实时要求的分布式控制系统的首选技术。 4.面向安全的系统 FlexRay本身不能确保系统安全,但它具备大量功能,可以支持面向安全的系统(如线控系统)设计。 在车内通信方面,FlexRay提供了从事件驱动的CAN通信转换到时间驱动通信的一个转换范例。这种转换需要一定时间,因为它不仅会影响新技术的引入,还要求对涉及到的所有人员都进行重新培训。一旦这个转换步骤完成,就可以发现更多的应用领域。 功能和机制分析 1.访问方法 FlexRay的通信是在逐周期中进行的,一个通信周期始终由静态部分和网络闲置时间(NIT)组成。协议内部流程需要网络闲置时间,在这个时段内,群组的节点之间不进行任何通信(见图2)。

图4:FlexRay 群组启动。 通信周期的静态部分基于时分多址(TDMA)技术。该技术将固定时隙分配给各个节点,在这个时隙内,允许节点传输数据。所有时隙大小相同,并且是从“1”开始向上编号。将一个或一个以上的时隙固定分配给每个节点。在运行期间,该时隙的分配不能修改。 除了静态部分以外,通信周期还可以选择性地组成动态部分。一种所谓的“微时隙”法用来访问动态部分内的通信媒介。发送出去的消息永远分配给动态时隙。只要时隙分配给了节点,与大小都相同、始终用于传输的静态时隙相反,动态部分就只能在需要时才进行传输。因此,动态部分的可用带宽是动态分配的。 如果消息号(ID)和时隙号对应,有待发消息的节点就会进行传输。如果没有节点传输,则所有节点就会等候,等待的时间长度正是微时隙的长度,然后它们的时隙计数器也会增加。在时隙计数器增加以后,所有节点都将检查该时隙号是否与将发出的消息对应。如果两者匹配,该节点将发送消息。所有其它节点接受这条消息,并且一直等到它们完全接收了这条消息后再增加时隙读数。这一过程将会持续,直至动态部分结束。如果在一个周期中,没有或者只有少数节点发送消息,在动态部分的结尾将达到更高的时隙号。如果有大量节点进行发送,则到达的时隙号就比较低。因此,拥有较高编号的(即优先权较低)发送消息的节点可能在一个周期中传输,而不在另一个周期中传输,具体取决于在其之前在动态部分已经由多少个节点进行了消息传输。要确定消息已经传输,用户必须在静态部分发送该消息,或者必须在动态部分中对其分配较低消息编号(即优先权较高)。 2.时钟同步 如果使用基于TDMA的通信协议,则在时间域上控制对通信媒介的访问。因此,每个节点都必须保持时间同步,这一点非常重要。所有节点的时钟必须同步,并且最大偏差必须在限定范围内,这是实现时钟同步的前提条件。最大的偏差反应了精确度的大小。

图5:双信道拓扑举例。 时钟偏差可以分为相位和频率偏差。相位偏差是两个时钟在某一特定时间的绝对差别。频率偏差是相位偏差随着时间推移的变化,它反映了相位偏差在特定时间的变化。 通过相位修正和频率修正可以实现时钟同步。FlexRay使用了一种综合方法,即同时采用相位修正和频率修正。时钟同步是一个控制环路,与其它控制环路一样,也由测量、计算和设定功能组成。 要测量每个时钟与其它时钟的偏差,所有节点都要在接收期间测量消息的到达时间。通过静态部分的定时机制,每个节点都知道消息应当何时到达。如果消息比预计时间早到或晚到,将能测量得出实际时间与预定时间之间的偏差。该偏差代表了传输和接收节点之间的时钟偏差。借助获得的测量值,可用容错平均算法计算出每个节点的修正值。 在频率修正中,需要使用两个通信周期的测量值。这些测量值之间的差值反映每个通信周期中的时钟偏差变化,它通常用于计算双周期结束时的修正值(见上文提及的方法)。在整个后来的两个周期中,都使用该修正值。 相位修正值的计算只需一个周期的测量值,一旦接收了所有测量值,即可开始进行计算,并且它必须在开始相位修正前完成。在通信周期末尾,网络闲置时间(NIT)的一部分被保留,用于相位修正。相位修正要相隔一个周期来完成,避免影响时钟频率偏差的确定。图3概述了时钟同步的每个阶段,以及不同访问方法的分配。 3. 群组启动 与许多技术流程或程序一样,FlexRay中的启动阶段同样也是最复杂的阶段之一。这是因为FlexRay中的通信基于同步时钟机制,但在启动阶段这种机制还未建立。由于具备容错功能,FlexRay中不存在主时钟,因而时基不是由主时钟定义的。 启动群组时,将会启动“coldstarter”,coldstarter总是存在于多个实例中。首先,启动传输消息的coldstarter被称为“主coldstarter”(leading coldstarter),其它coldstarter则被称为“从coldstarter”(following coldstarter)。

图6:双信道星型拓扑。 一旦节点被唤醒并完成初始化,它就能在发出相应的主控制器命令后进入启动流程。不属于coldstarter的节点会等候,直到它们至少识别到两个相互通讯的coldstarter为止。coldstarter自己会监控两个通信周期的传输信道,以确定其它节点是否正在传输。如果没有,该节点会开始传输,从而成为主coldstarter。主coldstarter首先会传输一个空符号,向其它节点说明目前它正在作为主coldstarter启动该群组。在传输符号(符号即特定数量的无效位)后,该节点开始启动它自己的时钟,并且开始第一个通信周期。根据预先定义的群组范围的通信机制,主coldstarter将在其分配的时隙中传输。与其它所有节点一样,它将只在一个时隙的启动阶段传输。

主coldstarter发送的消息可由从coldstarter接收。在消息ID(该号码与时隙编号相同)的帮助下,接收器能够确定发送器位于哪个时隙。传输节点的当前周期编号附带在每条消息中发送。在接收第一条消息后,其它节点等待在下一个通信周期中发送的第二条消息。一旦收到第二条消息,从coldstarter将开始启动它们的时钟,该时钟由周期编号和接收消息的时隙号进行初始化。这样就可以为传输器和接收器之间的同步时间操作奠定基础。此外,接收节点会测量第一条消息和第二条消息之间的时间,该时间与通信周期的周期时间对应。测量出的时间与本地coldstarter时间进行比较。还可以通过减法确定可能偏差,频率修正机制使用该偏差值作为修正值。因此,从coldstarter不仅使用接收到的周期号和时间值(与传输的时隙对应)来启动其时钟,还会修改其时基的频率,使它尽可能地接近主coldstarter的值。 原则上,在启动时从coldstarter的时钟会与主coldstarter的时钟同步。为了避免可能的错误,从coldstarter在传输前必须等待两个周期。在这两个周期时间内,从coldstarter继续接收主coldstarter的消息和来自其它集成的从coldstarter的消息。已接收的消息的接收时间将与本地coldstarter进行比较,测量预测的和接收时间之间的偏差,修正值则按照前面介绍的时钟同步算法进行计算和应用。如果计算出的修正值没有超过特定的阈值,节点就可以从下一个周期开始传输。至此,它已经成功完成了启动过程,进入“正常运行”状态(正常的通信状态)。 在确定和验证计算出的修正值后的两个通信周期内,在主coldstarter收到来自的从coldstarter的消息后完成启动阶段。图4对主coldstarter和从coldstarter的启动阶段进行了介绍。 应用分析 1.可行的拓扑结构

图7:FlexRay不支持的拓扑举例。 FlexRay可以实现大量不同拓扑的应用。通常,FlexRay节点可以支持两个信道,因而可以开发单信道和双信道两种系统。在双信道系统中,不是所有节点都必须与两个信道连接。图5和图6的示例显示了一个系统,其中的节点1、3、5都与两个信道连接,而节点2和4都只与一个信道连接。图5和图6中的例子表示接口逻辑相同的拓扑,两个拓扑的不同之处在于,图5的总线用于节点连接,而图6的星型连接器则用于各个信道。 与总线结构相比,星型连接器的优势在于:它在接收器和发送器之间提供点到点连接,该优势在高传输速率和长传输线路中尤为明显。另一个重要优势是故障隔离功能。例如,如果信号传输使用的两条线路短路,总线系统在该信道中不能进行进一步的通信。如果使用星型结构,则只有到星型连接短路的节点才会受到影响,其它所有节点仍然可以继续与其它节点通信。 图7的拓扑由3个信道组成,每两个信道分别与一个节点相连。该拓扑不是FlexRay允许的拓扑形式。FlexRay不支持该拓扑,也不支持其功能。原因很简单,在FlexRay中,信道A和B使用不同的CRC,以确保传输中的数据安全。这样可以防止两个信道的意外混合。这还意味着:连接到信道A的节点不能与连接到信道B的节点通信,无法满足图7中的信道C的通信要求。除了CRC不兼容以外,也没有为这种拓扑设计时钟同步。 2.唤醒群组 FlexRay提供了一些通过通信信道来唤醒群组的功能,这种唤醒要与主应用共同完成。有几个可能的实现方案,我们将对其中一个方案进行详细介绍。图8显示了一个有4个节点的群组。本图中的数字表示每个模块的唤醒步骤,与其顺序编号相同: a.外部事件唤醒了主控制器1,从睡眠模式切换到正常模式,然后开始初始化。在初始化阶段后,它将FlexRay CC从睡眠(关机)状态切换到正常状态(开机状态)。 b.主控制器1唤醒FlexRay CC,进行初始化。 c.主控制器唤醒总线驱动((BD 1A和BD 1B)。 d.主控制器通过通信信道,向CC发出唤醒群组的命令。CC进入唤醒状态,生成唤醒模式,该模式先发送到总线驱动器,总线驱动器再将它发送到总线。 e.信道A上的所有总线驱动器均采用唤醒模式。它们从睡眠模式进入正常模式,然后唤醒主控制器,主控制器2和3执行初始化程序。

图8:通过通信信道唤醒群组。 f.主控制器2和3唤醒CC,然后进行初始化,此时该流程已执行完毕。 g.检查信道B上的总线驱动器是否被同时唤醒。如果没有被唤醒,主控制器应唤醒第二个总线驱动器。 h. 所选择的主控制器验证两条信道是否都已被唤醒。如果没有,一个或多个主控制器应向CC发送唤醒命令(参见图4),以唤醒第二个信道。信道B上的唤醒模式可以唤醒该信道上未被唤醒的所有总线驱动器。 i. 只连接到信道B的节点只能由信道B(节点4)上的唤醒模式唤醒,总线驱动器唤醒其主控制器。 j.在主控制器初始化后,主控器又唤醒CC。 k. 如果两个信道都已被唤醒,则可以执行启动。为了实现启动,每个主控制器应向CC发送启动命令。 唤醒操作只能由总线驱动器、CC和主控制器一起共同实现。上述任何一种器件都不能单独执行自己的唤醒操作。唤醒不是完全由FlexRay执行的一项功能,还必须有应用软件的介入。 3.帧的大小选择 在设计基于FlexRay的通信系统时,用户必须作出一系列决定,这些决定会影响到效率、稳定性、安全性和用户友好性。因此,除了选择正确的拓扑外,还需要定义大量参数,其中的参数之一就是帧的大小。 在静态部分中,所有帧都具有相同的大小,该帧的大小实质上决定着时隙的大小。这种通信系统的目标是尽量传输更多的用户数据,同时将开销控制在尽量小的范围内,帧的大小在这个方面发挥着重要作用。

投诉建议

提交

查看更多评论
其他资讯

查看更多

助力企业恢复“战斗状态”:MyMRO我的万物集·固安捷升级开工场景方案

车规MOSFET技术确保功率开关管的可靠性和强电流处理能力

未来十年, 化工企业应如何提高资源效率及减少运营中的碳足迹?

2023年制造业“开门红”,抢滩大湾区市场锁定DMP工博会

2023钢铁展洽会4月全新起航 将在日照触发更多商机