季 霆
(南通大学 电气工程学院,江苏 南通226000)
基于CAN总线的单主时钟同步方法研究*
季 霆
(南通大学 电气工程学院,江苏 南通226000)
高精度和高可靠的时钟同步方法是CAN总线能够安全运行的关键,在分析主从、协商同步特点的基础上,提出了一种基于CAN总线的单主时钟协商同步方法,该方法仅需要一个时钟同步主节点即可实现总线的可靠运转,当从节点失效时利用CAN总线的时钟特性及时对即时偏差进行估计,使总线各节点依然能够正常工作,并引入时钟方差的概念更新主时钟同步优先级列表选择新的主节点。最后利用CANoe软件对该方法进行仿真,并利用51单片机、SJA1000T以及TJA1050构建硬件实验平台,结果表明该时钟同步机制能够防止单节点失效,可靠性高,具有更高的同步精度。
时钟同步;即时偏差;主时钟选择;时钟方差
控制器局域网(Controller Area Network,CAN)是目前应用最广泛的总线之一,其具有实时性好、抗干扰能力强、可靠性高的优点,因此受到越来越多用户的青睐。目前国内外对CAN总线进行了大量的研究,希望提高总线系统运行的精度和安全,本文以时钟同步算法为研究对象,对CAN总线进行研究。
国内外诸多文献对该领域进行了研究,文献[1]提出了基于主从配置的CAN总线时钟同步算法,只需要发送一条同步消息即可保证网络中所有节点的同步,节省了网络资源,但是主节点一旦失效就无法实现时钟同步。文献[2]在协商时钟同步方法[3-4]的基础上提出了一种基于软件的“前期协商”时钟同步方法,该算法引入了同步主节点优先级表的概念,在主节点失效时根据同步主节点优先级表选择新的主时钟节点,既实现了节点容错错,也减少了网络同步开销,然而该方法中同步主节点优先级表一旦建立无法改变,降低了时钟选择的实时性,并且对网络延时考虑较少,也降低了同步精度。文献[5]在分析主从、协商等同步算法的基础上,提出了基于最小“相对即时偏差”的主从协商选择方法(以下简称为“相对偏差选择方法”),该方法可以在主时钟节点失效时协商选择出新的主时钟节点,并且给出了网络延时的测算方法,获得了更高的时钟精度,但是该方法并没有考虑各个节点之间由于距离、温度等原因而造成的网络延时误差。
本文在上述时钟同步方法的基础上,对CAN总线时钟同步过程进行研究,提出了一种基于CAN总线的单主时钟协商同步选择方法,该方法对即时偏差与网络延时测算方法进行了改进,可以提高CAN系统同步精度,减少网络负载率。
1.1 CAN时钟同步
CAN总线时钟同步可分为应用层时钟同步和物理层时钟同步,其中物理层同步又分为硬同步和重同步,只有物理层同步准确无误,应用层时钟同步才能被正确执行[5-8]。本文主要对应用层时钟同步进行研究,通过对从节点相对于主节点的即时偏差进行测量计算,从而对本地时钟进行调节,以获得更加精确的时间信息。
1.2 时钟同步基本问题描述
在CAN总线上,每个节点时钟均由其内部时钟振荡器驱动,每个振荡器都产生一定频率的脉冲,同时每个节点内部都包含一个软件计数器对脉冲进行计数。若节点k时钟振荡器的频率为fk(t),那么该节点计数器的值称为节点k的本地时钟Tk(t)。本地时钟Tk(t)可由式(1)计算[9],其中t0为节点k初始时刻的实际时刻,Tk(t0)为节点k在初始时刻的本地时钟。
(1)
(2)
(3)
(4)
(5)
(6)
图1给出主从节点本地时钟之间的关系,实线为主节点本地时钟与实际时间之间的关系,虚线为从节点本地时钟与实际时间之间的关系。
图1 主从节点本地时钟关系
2.1 即时偏差计算
图2 即时偏差测量
(7)
(8)
(9)
(10)
(11)
2.2 主时钟失效选择
为了保证总线安全可靠地运行,避免主时钟节点失效而造成系统瘫痪,网络中往往需要多个主节点。若总线网络中仅有一个主节点,那么就需要引入一种选择机制来确保系统能够在主节点失效后快速确立新的主节点。文献[2]中通过在主时钟同步优先级列表中预先设置优先级的方法来达到选择新主节点的目的,但是该优先级表一旦确立将无法改变,导致选择新的主节点之后精度变低。本文在原主时钟同步优先级列表的基础上提出一种基于实时优先级的主时钟同步优先级列表。
为了能够实时评价各个节点的优先级,引入时钟方差的概念[12-13]:
(12)
每个时钟同步周期从节点都能通过式(12)计算出时钟方差σ2,并在网络中广播,每个节点对σ2值进行排序,更新主时钟同步优先级列表。σ2值越小说明该节点越稳定,则在主时钟同步优先级列表中的优先级越高。
(13)
如果该节点故障次数达到设定值n,则从节点k认为该主节点i失效,向总线各节点发出更换主节点的请求。其他节点接收请求,检查错误计数器并做出反馈,若错误计数器达到n/2,则同意,否则反对。当同意更换主节点数超过50%时,系统扫描主时钟同步优先级列表,选择优先级最高的节点成为主节点,并向总线上所有节点发送确认消息。
2.3 基于CAN总线的单主节点协商同步算法
本文建立了一种基于CAN总线的单主时钟协商同步算法,如图3所示。
具体步骤如下:
(1)初始化设置,设置CAN控制寄存器,错误计数器M置0,更新时钟同步优先级列表,选择初始优先级最高的节点i作为主时钟节点。
图3 基于CAN总线的单主时钟同步算法
(6)若某节点错误计数M≥n,向总线发送更换主节点请求。
(7)各节点接收到更换请求,检查各自错误计数器,若达到n/2,则同意更换,否则不同意。
(8)若同意更换主节点数超过50%,则系统扫描主时钟同步优先级列表,选择优先级最高的节点成为主节点,并向总线上所有节点发送确认消息,否则不同意。
(9)同步周期结束,各从节点计数器清零,返回步骤(2)。
为了验证上述算法,在Vector CANoe仿真软件上对其进行试验验证。首先建立7个ECU节点所组成的CAN网络,如图4所示。网络初始化时将选择出主节点(本次仿真选择VCU为初始主节点)。建立节点消息数据库,每个节点都包含_Sync_Message消息和_Resp_Message消息,其中_Sync_Message为主节点向各从节点发送同步消息,各从节点收到_Sync_Message消息后,向主节点发送_Resp_Message消息,_Message消息为各节点之间信息传输的普通消息。
图4 CAN网络配置图
利用CAPL编写程序,设置主节点发送同步消息的周期为200 ms,程序如下。
variables
{
message VCU_Sync_Message mVCU_Sync_Message;
mstimer timer_VCU;
}
on timer timer_VCU
{
setTimer(timer_VCU,200);
output(mVCU_Sync_Message)
}
配置完成后进行仿真,仿真结果如图5所示。
由于在仿真过程中各节点都在理论情况下运行,为了使仿真能够反映真实的系统情况,在仿真过程中加入适当的干扰。选择优先级最高的节点VCU作为初始主时钟节点,其余节点为从节点。当主时钟节点VCU发生故障时,各节点扫描主时钟同步优先级列表,选择优先级最高的节点EMS作为新的主时钟节点。仿真结果表明本文所提算法可以防止主从时钟同步的单点失效,增强了系统的可靠性。
图5 仿真过程Trace窗口
图6 CAN通信模块接线图
为了能够真实反映本文所提出的同步算法的可靠性以及精度,构建一个具有真实节点的实验平台,并利用CANoe软件对整个系统进行功能分析和测试。其中每一个节点均由微控制器(51单片机)、CAN控制器(SJA1000T)以及CAN收发器(TJA1050)所构成,CAN通信模块连接图如图6所示。
图7 几种同步方法的同步偏差
选取文献[2]中的前期协商同步方法以及文献[5]中的相对偏差选择方法与本文所述方法在上述实验平台上进行比较,图7为上述时钟同步方法在波特率为500 kb/s时利用CANoe软件测量的同步偏差的绝对值,横坐标为同步周期(ms),纵坐标为同步偏差(μs)。从图中可以看出,本文时钟同步方法的同步偏差略小于相对偏差选择方法,而前期协商同步方法的同步偏差都要大于其他两种方法,但是相对偏差选择方法在同步过程中同步消息并没有考虑传输过程中的消息延时,因此本文时钟同步方法的精度更好。
本文在分析主从同步、协商同步等方法存在问题及CAN网络时钟同步特点基础上,对CAN总线时钟同步基本问题进行了描述,并提出了一种基于CAN总线的单主时钟协商同步算法。该算法可在主、从节点出现失效时利用CAN总线的时钟特性及时地对即时偏差进行估计,使总线各节点依然能够正常工作,并利用主时钟同步优先级列表选择新的主节点。实验结果表明:新的时钟同步机制能够防止单点失效,可靠性高,具有更高的同步精度,并且适用更为广泛,为CAN系统精确时钟同步提供更好的解决方法。
[1] MACII D,FONTANELLI D,PETRI D.A master-slave synchronization model for enhanced servo clock design[J].Brescia:ISPCS 2009 International IEEE Symposium on Precision Clock Synchronization for Measurement,Control and Communication,2009:1-6.
[2] 张利,李县军,王跃飞.汽车CAN网络时钟同步方法研究[J].电子测量与仪器学报,2011,25(2):147-152.
[3] GADERER G,LOSCHMIDT P,SAUTER T,et al.Improving fault tolerance in high-precision clock synchronization[J].IEEE Transactions on Industrial Informatics,2010,6(2):206-215.
[4] TOVAR E,VASQUE F.Non pre-emptive scheduling of messages on SMTV token-passing network[R].Real-Time Systems,2000.
[5] 王跃飞,杨锦,张利,等.汽车CAN系统精确时钟同步机制研究[J].电子测量与仪器学报,2014,28(1):22-28.
[6] 王瑞晓,贺占庄.CAN总线位定时和同步机制的设计与实现[J].计算机技术与发展,2010,20(4):235-238.
[7] 陈守兵,杨建武.基于CAN总线的电源智能检测系统的开发[J].电子测量与技术,2011,34(5):94-97.
[8] 王刚,黄飞,乔纯捷.分布式网络时钟同步研究[J].仪器仪表学报,2008,29(11):2399-2403.
[9] 刘顺佳,曾益,胡波.传感器网络时钟同步中基于多父节点的卡尔曼滤波算法[J].计量学报,2009,30(4):363-368.
[10] 任丰原,董思颖,何滔,等.基于锁相环的时间同步机制与算法[J].软件学报,2007,18(2):372-380.
[11] 魏丰,孙文杰.IEEE-1588协议时钟同步报文的精确时间标记方法研究[J].仪器仪表学报,2009,30(1):162-169.
[12] 庾智兰,李智.精确时钟同步协议最佳时钟算法[J].电力自动化设备,2009,29(11):74-77.
[13] IEEE Instrumentation and Measurement Society.IEEE standard for a precision clock synchronization protocol for networked measurement and control systems[S].New York,USA:IEEE,2002.
Research of single master clock synchronization mechanism based on CAN bus
Ji Ting
(School of Electrical Engineering,Nantong University,Nantong 226000,China)
High precision and high reliability clock synchronization mechanism is the key to the safe operation of CAN bus. This paper aims at characteristic of master-slave clock synchronization and consultation selection clock synchronization, and proposes a single master clock synchronization mechanism based on CAN bus . This mechanism only needs one master synchronization node to achieve the reliable operation of the CAN bus. Estimating the value of instant deviation using clock characteristics of CAN bus can make each node of the bus work properly when slave clock node is invalid.And in order to select a new master synchronization node, the concept of clock variance is introduced to update master clock synchronization priority table. Finally it makes a simulation using CANoe and builds a hardware experimental platform using MCS-51, SJA1000T and TJA1050. The results show that the mechanism can prevent single node failure and be more reliable.
clock synchronization;instant deviation;master clock selection;clock variance
南通大学教学改革课题(2015C01)
U469
A
10.19358/j.issn.1674- 7720.2016.24.018
季霆. 基于CAN总线的单主时钟同步方法研究[J].微型机与应用,2016,35(24):61-65,69.
2016-08-30)
季霆(1987-),男,硕士研究生,助理实验师,主要研究方向:汽车电子和电气控制。