一种即时同步与时钟自校准结合的全网同步技术

时间:2013-10-09来源:网络
3 时钟自校准技术
3.1 理论分析
理想情况下,标称值相同的晶振应该有相同的振荡频率,但是实际并非如此。晶振在标定频率之外还有一个参数,称之为精度,单位是ppm,即每百万次中的误差次数。一颗标定为32.768 kHz,20 ppm的晶振,意味着每振荡一百万次,会偏差20次,正负都有可能。在本实验系统中,采用的是32.768 kHz,20 ppm的晶振。
如果第N级节点和第N+1级节点所采用的两颗晶振的偏差方向相反,则10 min后两级节点的时钟偏差至多为2×12=24 ms。
时钟偏差临界点时刻示意图如图4所示。

d.jpg


这里选择10 min作为本算法的补偿周期是由物理层的具体特性决定的。在低功耗模式中,簇头的侦听窗口为50 ms,被上层节点唤醒的通信波特率是4.8 kbps。经过试验得出:物理层发送一个有效载荷为3个字节的同步命令帧所需的时间约为22 ms。
即使10 min后的同步偏差达到24 ms,第N层节点和第N+1层节点仍然有50-24=26 ms的侦测窗口重叠期。如果第N层节点以两个命令帧的密度向第N+1层节点发送同步指令,底层节点仍有机会捕获到其中一个命令帧,因为26 ms>22 ms。以上均属临界时间状态,如果两级节点的晶振偏差方向相同,则捕获到上层同步指令的几率还会增加。
要想保证两级节点的可靠同步,必须在10 min内执行一次同步算法,否则低层节点将偏离出高层节点的发送窗口,即高层发送的命令,低层节点将不会收到。
将第N+1层节点的时钟同步到第N层节点并实现自校正的步骤如下:
①由第N层节点发起同步。首先第N层节点利用即时同步技术将低层(N+1)节点的时钟同步到同步时间点t0,同时第N层节点将t0作为自身时间的零时初始时刻。
②t0+600 s后,第N层节点向第N+1层节点发送两个时间校验命令帧,帧格式如下所示。

e.jpg


③第N+1层节点判断收到的时间校验命令帧的序号(第一个字节)和第N层节点的时间tN(后两个字节)。
④计算出第N+1层节点的本地时钟tN+1与tN的差值△t。
⑤将△t作为一个常数,每隔10 min补偿到tN+1中一次。
3.2 软件流程
两层节点以第N层和第N+1层节点为例说明软件的流程。第N层节点的流程图如图5所示。

f.jpg


由于所有节点在上电后处于低功耗模式,且各层节点不同步,所以需要初始第一次同步动作。第N层簇头连续发送“本地ID+时间序列”同步帧,利用即时同步技术,将两层节点同步到“零时”。
Sync是一个unsigned char型变量,可以追踪时间的增长。在实际中,采用芯片内部的RTC进行计时,Sync的初始值为0,每发生一次RTC中断事件,Sync的值加1。RTC中断事件每5 s发生一次,所以当Sync=120时,意味着10min的补偿时刻到了。
在发送本地时钟时,为了保证第N+1层节点能可靠地收到时间校正信号,采用了两次发送同样内容的方法。两次发送帧中所带的时间信息完全相同,物理层完成两次发送的时间差是22 ms。帧头0x81和0x82用来帮助下层节点区分收到的是哪一次发送的时间校正信号。
第N+1层节点的软件流程图如图6所示。

g.jpg


当收到父节点ID帧头时,利用即时同步机制第一次将本节点和上一层节点初始同步。当收到0x81或者0x82帧头时,进行两层节点间的时钟校对:把本地时钟和上一层时钟的差值D_value保存,并把收到的上一层参考时钟写入本地RTC的CAPTUREn寄存器中。
本层节点每600 s进行一次晶振偏移补偿:将本地时钟减去D_value,然后写入RTC寄存器,完成校对。
由于传感器节点的侦听窗口为5 ms,若同样采用精度为20 ppm的晶振,经过计算,需要在第1 min的时候进行时钟校验,否则就会超出侦听窗口。

1 2 3

关键词: 自校准 无线传感器网络 Si1000

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版