虚拟时钟指数逼近的无线传感器网络时钟同步协议
钟逼近,最终实现同步。
为实现节点时钟与基准时钟相差越大,所需的修正参数就越大。本算法采用修正参数与平均值的差值大小指数对应关系,即越接近平均值的节点偏移,调整的修正参数越小。指数方式的调整方式能够优化节点调整的效率和可靠性,从而得到更佳的收敛速度和可靠性,设第某节点本身的偏移值为β,所需要逼近的值为 β-,λ=β-β-,设调整因子为γ=min(β,β-)max(β,β-),显然0≤γ<1,则某节点所需调整的参数为:
调整因子和修正值关系如图1所示,当调整因子越大,表明与标准值越接近,所调整的比例便越小,即节点与标准值差值λ为0时,节点不需要对自己的值作任何改动,而节点自身值与平均值相差越大时,节点所需调整的参数越大。在实际执行时,可以设置λ′的一个阈值RT,使得需要调整的数值在某一范围内时,即 λ′小于某一规定值时,节点可在一定时间内不调整,这样可以在很大程度上避免由于某个新的节点参数与别的节点参数相差太大时,导致整个网络节点调整的情况。RT值的设置与网络规模对同步收敛速度的要求有关。
图1 调整因子和修正值关系图
3 算法实现
3.1 时钟模型
WSN中各节点的时钟主要包括一个统一的基准时钟,一个相对于基准时钟的偏移,和由于时钟频率不一致而导致的扭曲。定义c(t)为一个参考时钟,是一个统一稳定的基准值。每个节点有自己的时钟,是一个关于t的函数ci(t),每个节点的本地时钟相对基准时钟的偏移是指由于长期累积而导致的时钟不一致,扭曲是指由于石英晶体振荡器振荡频率不一致,从而导致了时钟与基准时钟之间存在差别。
设两个节点的时钟分别为ci(t)和cj(t),如果时钟在时间t完全正确,则ci(t)=cj(t)=c(t),但是在实际中两个时钟往往是不相等的。这是由于晶体振荡器本身技术原因和外部工作环境(如温度、压力)等因素引起的,因此,t时刻每个节点的时钟模型为:ci(t)=αit+βi,其中αi为晶体振荡器自身频率的不一致而带来的扭曲,βi为时钟长期积累的偏移。
为达到时钟一致,最关键的问题是使得任何节点的ci(t)=c(t),即补偿时钟的扭曲αi和时钟偏移βi,在任何时刻各节点的时钟不再偏移,且振荡频率也完全一致。
3.2 算法实现
TSMA要达到的目标是内部一致。在每个同步循环,算法更新每个节点的补偿参数,通过这样的方式使时钟达到一致:limt→∞ci(t)=cv(t)。其中cv(t)是本算法的虚拟时钟,虚拟时钟并不是一个现实中存在的时钟,而是所有节点以之为基准的一个时钟,是由本算法在运行过程中产生的。虚拟时钟有相对于实际时钟的扭曲率和相对偏移。各节点对本节点扭曲和偏移进行补偿,从而同步于虚拟时钟,实现全网同步。
设虚拟时钟为cv(t)=α·t+β,为使得各节点时钟最后同步于虚拟时钟,需要采用修正参数,设对于扭曲的修正参数为α′,对于偏移的修正参数为β′,则运行过程中,通过修正参数使得时钟保持一致的条件为:limt→∞(α′ci(t)+β′)=cv(t)=α·t+β,即limt→∞(α′ αit+α′βi+β′)=α·t+β,由此可得到修正参数为:
为得到补偿各节点的时钟扭曲和偏移,每个节点在算法执行周期内完成对两种参数的修正。修正主要包括两个过程:第一个过程为扭曲修正,通过修正扭曲值使得节点与虚拟时钟频率一致;第二个过程为偏移修正,通过修正偏移值确保全网时钟同步。
3.2.1 扭曲修正
扭曲修正的目的是确保时钟在相同的振荡频率下工作,即limt→∞α′αi=α。对扭曲参数的修正采用指数逼近的方式,以将所有的时钟扭曲趋近于α,每个节点执行的算法如下:
① 运行同步算法前,节点设置扭曲估计αi为1,同时准备搜索邻居节点的时钟扭曲信息。
② 由于各节点并不一定知道邻居节点的存在,在节点广播自己的时钟信息时,有可能别的节点也在广播时钟信息,从而导致广播失败,因此在MAC层需要一个类似CSMA/CD的协议,以确保各节点能正确广播自己的时钟信息。
③ 设共有n个节点,第i(1≤i≤n)个节点存储并广播自己的时间信息(αi,Ti),其中Ti为本节点当前时间值,由于节点距离和传输速度是
- 电源管理意见篇(12-19)
- Q&A:能量采集知多少 凌力尔特技术讲堂(二)(05-05)
- 所有这些能量收集的东西究竟意味着什么?(05-09)
- 为工业物联网正确选择无线网格网络协议以实现新应用(04-03)
- Q&A:能量收集知多少 凌力尔特技术讲堂(一)(05-05)
- 基于音频信号的WSN节点间距测量设计(10-09)