flexray设计功能和应用Word文件下载.docx
《flexray设计功能和应用Word文件下载.docx》由会员分享,可在线阅读,更多相关《flexray设计功能和应用Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
特性
FlexRay提供了传统车内通信协议所不具备的大量特性。
这些特性能为新型应用创造大量的机会。
这些基本特性包括:
∙2x10Mbit/s的数据速率
∙FlexRay支持两个通信信道:
每个信道的速度达到10Mbit/sec。
与CAN协议相比,取决于配置和比较模式的不同,它能将可用带宽提高10-40倍。
∙同步时基
∙FlexRay中使用的访问方法是基于同步时基的。
该时基通过协议自动建立和同步,以提供给应用。
时基的精确度介于0.5μs和10μs之间(通常为1--2μs)。
∙提前知道消息的延迟时间,保证偏差幅度
∙通信是在周期循环中进行的。
特定消息在通信循环中拥有固定位置,因此接收器已经提前知道了消息到达时间。
到达时间的临时偏差幅度会非常小,并能得到保证。
∙冗余和非冗余通信
∙为了增强系统的可用性,FlexRay提供了冗余传输消息的选项。
消息能够冗余传输,但并不是所有消息都必须冗余传输,否则会导致带宽的过多损失。
∙灵活性
∙在FlexRay开发过程中,主要重点是灵活性。
不仅提供消息冗余传输或非冗余传输两种选择,系统还可以进行优化,以提高可用性(静态带宽分配)或吞吐量(动态带宽分配)。
用户还可以扩展系统,而无需调整现有节点中的软件。
同时,它还支持总线或星状拓扑。
它提供了大量配置参数,可以支持对系统进行调整,以满足特定应用的需求,如通信循环的持续时间、消息长度等。
应用领域
2.1章节中列出的特性使它适合于大量应用领域:
∙CAN的替代技术
∙在数据速率要求超过CAN的应用中,人们现在同时使用了两条或多条CAN总线。
FlexRay是替代这种多总线解决方案的理想技术。
∙骨干
∙FlexRay具备很高的数据速率,因而非常适合汽车骨干网络,用于连接多个独立网络。
∙实时应用,分布式控制系统
∙用户可以提前知道消息到达时间,消息循环偏差非常小,这就使FlexRay成为具有严格的实时要求的分布式控制系统的首选技术。
∙以安全为导向的系统
∙FlexRay本身不能确保系统安全,但它具备大量功能,可以支持以安全为导向的系统(如线控系统)的设计。
在车内通信方面,FlexRay提供了一次"
典型转移"
,从事件驱动通信(CAN)迁移到时间驱动通信。
这种迁移需要一定时间,因为它不仅会影响新技术的推出,还要求对涉及到的所有方面都进行重新培训。
一旦这个迁移步骤完成,就会发现更多应用领域。
协议分类
目前已经存在大量专门为汽车应用设计的各种协议。
图1进行了简要介绍。
历史最悠久、同时最广为人知的协议是CAN(大多数情况下是高速CAN:
CAN-C)。
该协议既部署在动力系统中,也部署在车身应用中(低速CAN最为普遍)。
它能够实现的最高数据速率为1Mbit/sec,但网络的传输速率通常低于500kbit/sec。
虽然LIN协议在几年前才制定,但其应用却已十分广泛。
该协议是为传输速率要求较低的经济高效的模块开发的。
它还特别部署在车身应用中,如座位和后视镜调整、电动窗等。
它可以达到20kbit/sec的速率,足以满足此类应用的需求。
图1:
汽车通信协议
D2B协议、MOST协议及其新版本协议是专为多媒体应用开发的,并且通常只在该领域使用。
该协议不适合部署到其它领域。
在速度方面,FlexRay的速度介于CAN协议和MOST协议之间,但是由于它具有容错功能,所以更为复杂。
功能
本章节将更详细地介绍FlexRay中使用的部分机制,包括访问方法、时钟同步和集群启动等。
访问方法
使用FlexRay的通信是在周期循环中进行的。
一个通信循环始终包括静态部分和网络闲置时间(NIT)。
协议内部流程需要网络闲置时间,并且,在这个时段内,集群的节点之间不进行任何通信(图2)。
通信循环的静态部分基于TDMA(时分多址)技术。
该技术将固定时槽分配给各个节点,在这个时槽内,允许节点传输数据。
所有时槽大小相同,并且是从1开始向上编号。
将1个或1个以上时槽固定分配给每个节点。
在运行期间,该时槽的分配不能修改。
图2:
带静态和动态段的通信循环
除了静态部分以外,通信循环还选择性地组成动态部分。
所谓的"
小时槽法"
用来访问动态部分的通信媒介。
呼出消息永远分配给动态时槽。
与大小都相同、始终用于传输的静态时槽相反,只要时槽分配给了节点,动态部分就只能在需要时才进行传输。
因此,动态部分的可用带宽是动态分配的。
如果消息号码(ID)和时槽号码对应,带有待发呼出消息的节点就会进行传输。
如果没有节点传输,所有节点就会等候,等待的时间长度正是时槽的长度,然后它们的时槽读数也会增加。
在时槽读数增加以后,所有节点都将检查该时槽号码是否与呼出消息对应。
如果两者匹配,该节点将发送消息。
所有节点接受这条消息,并且一直等到它们完全接收了这条消息后再增加时槽读数。
这一过程将会持续,直至到达动态部分。
如果在循环中,没有或者只有少数节点传输消息,在动态部分的结尾,就会达到更高的时槽数量。
如果有大量节点进行传输,则到达的时槽数量就比较少。
因此,拥有较高编号的(即优先权较低)呼出消息的节点可能在一个循环中传输,而不在另一个循环中传输,具体取决于动态部分在其之前已经传输的节点的数量。
要确定消息已经传输,用户必须在静态部分发送该消息,或者必须将它分配给动态部分中的较低消息编号(即优先权较高)。
时钟同步
如果使用基于TDMA的通信协议,则通信媒介的访问在时间域中控制。
因此,每个节点都必须保持时间同步,这一点非常重要。
所有节点的时钟必须同步,并且最大偏差必须在限定范围内,这是实现时钟同步的前提条件。
最大偏差称为精确。
图3:
时钟同步机制
时钟偏差可以分为相位和频率偏差。
相位偏差是两个时钟在某一特定时间的绝对差别。
频率偏差是相位偏差随着时间推移的变化。
它反映了相位偏差在特定时间的变化。
有多种方法可以通过相位纠正和频率纠正实施时钟同步。
FlexRay使用了一种综合方法,同时实施相位纠正和频率纠正。
时钟同步是一个控制环路,与其它控制环路一样,它也由测量、计算和设定功能组成。
要测量每个时钟与其它时钟的偏差,所有节点都要在接收期间测量消息的到达时间。
通过静态部分的定时机制,每个节点都知道消息应当何时到达。
如果消息比预计时间早到或晚到,将能测量得出实际时间与预定时间之间的偏差。
该偏差代表了传输和接收节点之间的时钟偏差。
借助获得的测量值,可用容错平均算法计算出每个节点的纠正值[2]。
在频率纠正中,需要使用两个通信循环的测量值。
这些测量值之间的差值反映每个通信循环中的时钟偏差变化。
它通常用于计算双循环结束时的纠正值(见上文提及的方法)。
在整个后来的双循环中,都使用该纠正值。
相位纠正值的计算只需一个循环周期的测量值,一旦接收了所有测量值,即可开始实施计算,并且它必须在开始相位纠正前完成。
在通信循环末尾,网络闲置时间(NIT)的一部分被保留,用于相位纠正。
相位纠正要相隔一个循环实施,避免影响时钟频率偏差的确定。
图3概述了时钟同步的相位,以及不同访问方法的分配。
如需了解时钟同步机制的详细消息,请参见[3]。
集群启动
与许多技术流程或程序一样,FlexRay中的启动阶段同样也是最复杂的操作阶段之一。
这是因为FlexRay中的通信基于同步时钟体制,但在启动阶段,这种体制还未建立。
由于具备容错功能,FlexRay中不存在主时钟,因而时基不是由主时钟定义的。
启动集群时,将会启动"
coldstarter"
程序,该程序始终会出现在多个实例中。
首先,启动传输消息的coldstarter被称为"
引导coldstarter"
,其它coldstarter则被称为"
后续coldstarter"
。
一旦节点被唤醒并完成初始化,它就能在发出相应的主机命令后进入启动流程。
不属于coldstarter的节点会等候,直到它们至少识别到两个相互通讯的coldstarter为止。
coldstarter自己会监控两个通信循环的传输信道,以确定其它节点是否正在传输。
如果没有,该节点会开始进行传输,从而成为主要coldstarter。
主要coldstarter首先会传输无格式符号,向其它节点说明:
目前它正在启动该集群,作为主要coldstarter。
在传输符号后(符号即特定数量的无效位),该节点开始启动它自己的时钟,并且开始第一个通信循环。
根据预先定义的集群范围的通信机制,主要coldstarter将在其分配的时槽中传输,与其它所有节点一样,它将只在一个时槽的启动阶段传输。
主要coldstarter发送的消息可由后续coldstarter接收。
在消息身份识别号码(ID)(该号码与时槽编号相同)的帮助下,接收器能够确定发送器位于哪个时槽。
传输节点的当前循环编号附带在每条消息中发送。
在接收第一条消息后,其它节点等待在下一个通信循环中发送的第二条消息。
一旦收到第二条消息,后续coldstarter将开始启动他们的时钟,该时钟由循环编号和接收消息的时槽编号进行初始化。
这样就可以为传输器和接收器之间的同步时间操作奠定基础。
此外,接收节点会测量第一条消息和第二条消息之间的时间,该时间与通信循环的循环时间对应。
测量出的时间与本地coldstarter时间进行比较。
还可以通过减法确定可能偏差,频率纠正机制使用该偏差值作为纠正值。
因此,下列coldstarter不能使用接收到的循环号码和时间值(与传输的时间槽对应)来启动时钟,但是它会修改其时基的频率,使它尽可能地接近主要coldstarter的值。
图4:
FlexRay集群启动
原则上,在启动时,后续coldstarter的时钟会与主要coldstarter时钟同步。
为了减少可能的错误,下列coldstarter在传输前必须等待两个循环。
在这两个循环之间,下列coldstarter继续接受领先coldstarter的消息和其它已集成了下列coldstarter的消息。
从接收的消息看,接收时间将与本地coldstarter进行比较。
预测的和规定的接收之间的偏差需要测量出来,纠正数值则按照3.2介绍的时钟同步算法进行计算和应用。
如果计算出的纠正值没有超过特定的阈值,节点就可以从下一个循环开始传输。
它已经成功完成了启动阶段,并且现在正在"
正常运行"
(正常的通信状态)。
在确定和验证计算出的纠正值后,主要coldstarter会收到来自两个循环中的后续coldstarter的消息,完成启动阶段。
图4对主要coldstarter和后续coldstarter的启动阶段进行了介绍。
应用
可行和不可行的拓扑
FlexRay可以实现大量不同拓扑的应用。
通常,FlexRay节点可以支持两个信道,因而可以开发单信道和双信道两种系统。
在双信道系统中,不是所有节点都必须与两个信道连接。
图5和图6的示例显示了一个系统,其中的节点1、3、5都与两个信道连接,而节点2和4都只与一个信道连接。
图5和图6中的例子表示接口逻辑相同的拓扑。
两个拓