APP下载

汽车FlexRay网络的单节点容错同步算法

2012-09-10

汽车科技 2012年6期
关键词:解码延时时钟

季 霆

(合肥工业大学 机械与汽车工程学院,合肥 230009)

FlexRay总线作为下一代汽车内部的主干网络,其良好的性能尤其是高速、精确和容错的特点,能够满足未来汽车高速控制应用的需要[1-3]。FlexRay总线精确的时钟基准是其可靠运行的关键因素之一,而网络中的时钟同步是总线时基精确的重要保证,因此研究FlexRay时钟同步问题具有重要的现实意义。

文献[4]提出了一种基于分析模式的FlexRay时钟同步算法,可以不通过测量而直接通过计算得出任意两个节点之间的时钟偏差。文献[5]对FlexRay总线时钟同步进行了分析,建立了同步算法数学模型,理论上说明了FlexRay时钟同步具有较强的容错性和适用性。文献[6]指出FlexRay时钟同步所用容错中值(Fault-tolerant midpoint,FTM)算法每轮对网络修正后存在±ε(ε为传送延时)漂移。

FlexRay协议要求网络中至少包含3个同步节点进行时钟同步,上述文献都是建立在这个基础上进行讨论的。当节点数目较少时,这种限制将对网络的性能产生影响。针对这种情况,文献 [7]结合IEEE 1588提出了一种同步节点数目少于3个的同步方法,但是没有解决同步过程中的同步节点容错问题。一旦同步节点出现故障,整个网络将无法正常工作,造成消息的延误[8]。

本文在上述研究的基础上,提出了一种FlexRay的单节点容错同步算法。该方法只需要一个同步节点并且无需额外的硬件支持,即可在保证FlexRay安全性和可靠性的前提下完成时钟同步。

1 FlexRay时钟同步

1.1 同步周期的基本概念

FlexRay总线协议中,簇内所有的节点都应有相同的“时间观”,遵守一个标准的全局时间。但是这并不意味着节点间具有完全严格的同步时间,只要节点间的时间差保持在允许的误差范围内即可。在一个通讯周期内分为4个时间层次,从最低层到最高层分别依次为:最小时间节拍层、最大时间节拍层、仲裁网格层和通讯周期层。

时钟同步过程设置三种模式:(1)备用模式(STANDBY),(2)非同步模式(NOSYNC),(3)同步模式(SYNC)。在STANDBY模式中时钟同步过程被停止,在NOSYNC模式中节点执行时钟同步但不发送同步消息,在SYNC模式中节点发送同步消息并执行时钟同步[9]。

FlexRay协议中节点在静态段完成同步测量,以获得各节点的时间偏差值,运用FTM算法[9]对每一组时间偏差值进行处理,所获得的值即为时钟同步算法的校正值。FlexRay同步机制运用两种类型的校正:相位校正和速率校正。相位校正值是各非同步节点与同步节点的时间偏差值,每周期进行计算并在奇数周期末尾完成校正。速率校正值是两个连续周期同一节点同一时刻的时间偏差值,偏差的计算结果在每个奇数周期完成计算,在下一个周期开始时生效,在最大时间节拍形成过程中实行。

1.2 同步时间测量

为了计算同步帧发送节点与同步帧接收节点之间的时间偏差,就必须分别测量同步帧发送端和同步帧接收端的触发点时刻。但是由于传输起始序列截断影响,同步帧接收节点接收到传输起始序列1/0跳变沿的时间并不是同步帧接收节点的触发点时刻。因此在FlexRay总线协议中需要测量首个字节起始序列中的1/0跳变沿,用该时刻减去解码修正量和延时补偿量倒推得到接收端传输起始序列的开始时刻。解码修正量中包含传输起始序列、帧起始序列和字节起始序列,延时补偿量中包含有收发器延迟、星型耦合器延迟和电缆长度的传输延迟[10]。

图1为时间偏差值测量过程,其中点 a表示发送端静态时间槽行动点,即发送端开始发送帧的时刻;点b表示第二时间参考点,位于首个字节起始序列的第二位频闪点;点c表示主时间参考点,由第二时间参考点减去解码修正量和延时补偿量得来;pDecodingCorrection为解码修正量,pDelayCompensation为延时补偿量,TSS为传输起始序列,FSS为帧起始序列,BSS为字节起始序列。由图1可知,点c与点a之间的差值为同步帧发送节点与同步帧接收节点之间的时间差(时钟偏差值)。

2 单节点容错同步算法研究

2.1 基本思想

针对FlexRay协议中同步节点数目不能小于三个的情况,本文采用单节点容错算法来实现时钟同步,为了解决单节点失效的问题,在时钟同步过程中增加一个同步节点优先级表。表的结构见表1,其中NODE_ID为节点的ID号,值越小优先级越高;NODE_NM为节点的名称;MES_ID为该节点发送同步消息所在的静态时间槽的ID;NODE_STA为节点状态标志,表示该节点是否失效。

表1 同步节点优先级表

在网络启动或者有新节点加入网络时,网络中各节点根据其他节点提供的信息建立或者更新自身的同步节点优先级表。当前同步节点失效时,根据此表优先级与其他节点协商决定同步节点。

在FlexRay协议中,各非同步节点在触发点接收同步消息,在超过触发点偏移量之后仍然没有收到同步报文,就认为该同步节点发生了故障,本文亦采用该方法判断节点是否发生故障。如果故障发生次数达到设定值,则认为该同步节点失效,在同步节点优先级表中选择优先级最高的节点替代同步节点,在周期动态段部分发出选择消息(Vote)。各节点收到 Vote消息后,扫描信息表,若与己选同步节点相同,发送确认消息,启动候选同步节点。

2.2 时间偏差值计算

FlexRay协议中为了测量同步节点和非同步节点之间的偏差,需要测量第二时间参考点并计算解码修正量和延时补偿量的值,这样不仅增加了计算开销,还增大了误差。为了减小开销和误差,本文基于文献[11]的方法来计算时间偏差值,图2为相应的通信过程。同步节点在T1时刻发送Sync消息,同步节点和非同步节点接收端分别测量接收到该报文的第二时间参考点时刻,分别记为T2和T3,同步节点在T4时刻发送一个包含时间戳T2的Follow_up消息。

本文时间偏差值计算过程中采用如下假设[7,11]:

(1)帧到达各节点的延时是定值,即网络必须是广播型网络,延迟时间可以接近于0,或是一个常值。

(2)节点接收器能够接收到该节点发送器发送的帧。

设Toffset为时间偏差,单位为最小时间片个数,该值可以为正也可以为负;Lmaxoffset为时间偏差允许上限,根据情况预先设置;u为解码修正量,ν为延时补偿量。那么,可以得到同步节点和非同步节点之间的等式:

由于同步节点的发送端和接收端在同一节点上,认为它们之间的偏差为0,那么可以得到同步节点发送端和接收端的等式:

由假设(1)可知式,(1)(2)中解码修正量和延时补偿量的值相等,即 u1=u2,ν1=ν2,因而由(2)和(1)可得:

式(3)中的Toffset就是同步节点与非同步节点的时间偏差值,因此由T3和T2即可得到Toffset,而T3和T2可以从Sync消息和Follow_up消息中获取。

2.3 单节点容错算法

基于上述机制的单节点容错算法,算法流程图如图3所示,具体步骤如下:

步骤1:初始化FlexRay网络中各节点控制器和寄存器,错误计数器M清零。根据在同步节点优先级表中预先的设置,将表中优先级最高的节点设为同步模式,其他节点设为非同步模式。

步骤 2:在第 i(i≤63)个通信,同步节点向总线上各节点发送Sync消息。

步骤3:各节点(包括同步节点)接收到Sync消息,并记录各自的接收时刻。

步骤4:同步节点向各节点发送一个Follow_up消息,非同步节点通过公式(3)可以计算各节点本地时钟的偏差 Toffset,当∣Toffset∣>Lmaxoffset时,启动错误计数器令 M=M+1,令 Toffset=Lmaxoffset。

步骤5:因为网络可能出现错误,造成部分Sync消息不能被所有节点成功接收。如果节点超过触发点偏移量仍然没有收到Sync消息,启动错误计数器令 M=M+1,同时令 Toffset=Lmaxoffset。

步骤6:若某节点错误计数 M≥3则判定同步节点失效,扫描数据表选择下一顺序节点为候选同步节点,并在动态段中发送广播选择消息(Vote)。

步骤7:各节点收到 Vote消息后扫描信息表,若与已选同步节点相同,则在动态段中发送确认消息。Vote消息的发送节点收到确认后,将原同步节点的模式改为备用模式,所选同步节点的模式改为同步模式,各节点错误计数器清零。若规定时间内未收到确认消息,判定该非同步节点故障,原同步节点继续运行,错误计数器清零。

步骤8:若该周期结束,则i=i+1。如果i≤63,则返回步骤2,否则返回步骤1。

图4a中表示了一个周期内上述时钟同步的过程。在一个周期静态段内,同步节点在发送Sync消息和Follow_up消息后预留了两个静态时间片,在第五个静态时间片开始发送普通数据帧。图4b中表示了FlexRay协议时钟同步过程,四个同步节点分别发送四个Sync消息之后,在第五个静态时间片开始发送普通数据帧。从图4可以看出,在保证相同可靠性的前提下,本文所提同步算法不影响静态段的长度以及周期长度。而且本文同步算法不需计算解码修正量和延时补偿量就可以直接计算时间偏差值,精简了测量步骤同时也减少了由于计算解码修正量和延时补偿量值而造成的误差。

3 仿真验证

本文利用CANoe和DaVinci Network Designer软件对本文所提单节点容错同步算法进行仿真实验。

实验中选取4个节点,记为ECU_1、ECU_2、E CU_3和ECU_4,每个节点均有两组工作消息需要发送。在单节点容错同步算法中,考虑容错需要,令ECU_1为初始同步节点,ECU_2为候选同步节点;在FlexRay协议原有同步算法中,ECU_1、ECU_2和ECU_3为同步节点。在DaVinci Network Designer软件中完成FlexRay数据库建立,并在CANoe软件中建立仿真系统,如图5所示。

在正常通信过程中,当初始同步节点ECU_1断开,候选同步节点ECU_2能够代替ECU_1成为下一同步节点,图6为上述过程的trace图。

4 结束语

本文在对FlexRay协议时钟同步算法研究的基础上,提出了FlexRay总线的单节点容错同步算法,只需要1个同步节点即可完成时钟同步,减少了时钟同步的测量步骤和计算量。该算法引入同步节点优先级表,在同步节点出现故障的情况下,可以根据同步节点优先级表选择新的同步节点。最后在CANoe中进行仿真,结果表明该算法可以在保证安全可靠的前提完成通信,并提高同步精度。

[1]罗峰,陈智琦,刘矗,等.基于FlexRay的车载网络系统开发[J].电子测量与仪器学 2009(增刊 1):289-295.

[2]顾嫣,张凤登.FlexRay动态段优化调度算法研究[J].自动化仪表,2009,30(12):25-29.

[3]周跃钢.基于LabVIEW和J1939协议的CAN总线通讯平台构建[J].汽车科技,2011,06:18-22.

[4]Jan Sobotka,Jiri Novak,Jan Malinsky.Analytic Model of FlexRay Synchronization Mechanism [J].The 6th IEEE In ternational Conference on Intelligent Data Acquisition and Advanced Computing Systems,2011:969-974.

[5]陈涛,秦贵和.FlexRay时钟同步分析[J].计算机工程,2010,14(36):235-237.

[6]Bruno Dutertr.the Welch Lynch Clock Synchronization Algorithm[R].1998,5.

[7]Jin Ho Kim,Suk Hyung Seo,Jung Hoon Chun,Jae Wook Jeon.Distributed Clock Synchronization Algorithm for Industrial Networks[J].The 8th IEEE International Workshop on Factory Communication Systems.2003.

[8]J.H.Kim,S.H.Seo,T.Y.Moon,K.H.Kwon,J.W.Jeon,S.H.Hwang.A method of Task Synchronization in a distributed system using FlexRay[J].The IEEE Interational Conference on In-dustrial Informatics,2008:1149-1153.

[9]FlexRay Consortium.FlexRay Communications System Protocol Specfication [S].2005(12).

[10]杨福宇.FlexRay时钟同步的同向漂移[J].单片机与嵌入式应用,2011,4:3-6.

[11]张利,李县军,王跃飞.汽车CAN网络时钟同步方法研究[J].电子测量与仪器学报,2011,25(2):147-152.

猜你喜欢

解码延时时钟
课后延时中如何优化不同年级学生活动效果
古代的时钟
文化解码
解码eUCP2.0
文化 解码
文明 解码
这个时钟一根针
基于数据选择的引信测试回波信号高精度延时
有趣的时钟
一种“死时间”少和自动校准容易的Wave Union TDC