详细介绍
ZCP270
ZCP270
偏移修正
修正完扭曲率后,需要对偏移进行修正,以达到节点时钟同步。修正偏移值的关键是找到合适的偏移值,使得各节点能够同步到一个统一的偏移值,从而统一于一个虚拟的时钟。设每个节点的偏移值为βi,1≤i≤n,则节点i在接收到邻居节点的偏移值后,很容易得到一个平均值β-1n∑ni=1βi,显然这一平均值即为要找的虚拟时钟的偏移值,当各节点同步于这一偏移值,便实现了全网时钟同步。由于部分节点的时钟偏移值较大,同时每次更新的节点为一跳内的节点,采用一次调整偏移值至平均值的方法并不能以zui快的速度使得全网节点偏移同步,而采用逐次指数逼近的方式,对偏移相差较大的节点修正参数较大,偏移相差较小的节点修正参数较小,使得全网所有节点逼近统一的偏移值。本算法采用了如下步骤:
① 节点i首先估计自己的偏移值βi,1≤i≤n,并开始收听广播,和扭曲修正一样,广播已经考虑了冲突避免。
② 节点收集一跳内的邻居偏移值,得到偏移平均值β-1n∑ni=1βi。
③ 节点i计算与平均偏移值的差值λi=βi-β-,设调整因子为γi=min(βi,β-)max(βi,β-),显然0≤γi≤1,则某节点所需调整的参数为λ′i=λi(e-eγi)(e-1)。设置修正值调整的阈值RT,当节点i*出现λ′i低于阈值要求时不作调整,以避免部分失效节点重新进入网络时对邻居节点的影响。新的偏移值为
则βi=β,节点i采用指数逼近的方法,逐次向平均值逼近。
④ 节点i再次收听邻居节点广播,重复步骤②③,直到λi=βi-β-低于设定值,实现了全网同步。
由于指数逼近的方式在节点偏移相差较大时调整较大,节点偏移相差较小时调整较小,适用于网络中有新节点出现时导致偏移相差较大的情况。采用指数逼近方式后,与平均值误差较大的节点调整大,加快了收敛速度,与平均值相差小的节点调整小,控制了向邻居节点扩散偏移调整的范围。同时,在全网节点偏移*后,指数逼近的方式使得节点调整幅度小,避免了由于某一个时钟节点失误而带来的大范围时钟偏移调整,保证了全网时钟同步的稳定性。