一种即时同步与时钟自校准结合的全网同步技术
4 实验结果
这里选择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层节点发送两个时间校验命令帧,帧格式如下所示。
③第N+1层节点判断收到的时间校验命令帧的序号(第一个字节)和第N层节点的时间tN(后两个字节)。
④计算出第N+1层节点的本地时钟tN+1与tN的差值△t。
⑤将△t作为一个常数,每隔10 min补偿到tN+1中一次。
3.2 软件流程
两层节点以第N层和第N+1层节点为例说明软件的流程。第N层节点的流程图如图5所示。
由于所有节点在上电后处于低功耗模式,且各层节点不同步,所以需要初始第一次同步动作。第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所示。
当收到父节点ID帧头时,利用即时同步机制第一次将本节点和上一层节点初始同步。当收到0x81或者0x82帧头时,进行两层节点间的时钟校对:把本地时钟和上一层时钟的差值D_value保存,并把收到的上一层参考时钟写入本地RTC的CAPTUREn寄存器中。
本层节点每600 s进行一次晶振偏移补偿:将本地时钟减去D_value,然后写入RTC寄存器,完成校对。
由于传感器节点的侦听窗口为5 ms,若同样采用精度为20 ppm的晶振,经过计算,需要在第1 min的时候进行时钟校验,否则就会超出侦听窗口。
实验采用两块基于Si1000芯片的节点电路板,其中一块作为第N层节点,另一块作为第N+1层节点。
在两级节点的软件中加入测试信号输出:每过5 s,RTC中断事件会把MCU唤醒,同时会在MCU的一个端口输出一个低电平脉冲。将脉冲信号输入到示波器的两个输入通道中,记录波形。
将示波器的时域解析度放大至5μs,会发现在初始的即时同步后,两个节点之间存在绝对误差e=5.4μs,如图7所示。如果不加以干预,两节点的时钟偏差会逐步扩大,最终导致网络的不同步。
数据采集的方法是,将这对节点每隔3 min测量一次脉冲的时间差△t,连续记录一个小时,将结果保存到表1中(两节点每10 min误差17 ms)。
对比试验:将上述两节点软件中的自校正机制移除,即仅用即时同步机制初始同步一次,其后的晶振偏移不再校正。每隔3 min记录一次△t,将结果保存到表1中。
用MATLAB绘制两种同步方式的对比曲线如图8所示。
由实验结果可以看到,仅仅做了一次即时同步的一对节点,它们的时钟偏差在不断扩大,其呈现线性特征,每10 min的时钟偏差约为17 ms。
采用了自校正技术的同步算法的一对节点,具有本地晶振振荡偏差自动补偿机制。每隔10 min,它们之间的偏差就会被校正。节点间的同步有效时间显著延长。在实际测试中,经过16个小时的实验后观测,仍能达到理想的同步效果。
5 结论
本文基于Si1000芯片平台,实现了一种将无线传感器网络节点的同步周期进行扩展的方法,利用即时同步技术进行节点间同步的初始化,随后每间隔一段时间,节点主动校准自己的时钟,从而实现了在没有显著增加能量消耗的前提下,扩展同步周期,提高同步精度
- 传感器网络操作系统平台TinyOS下CC2420驱动组件的设计(11-27)
- 基于TinyOS的CC2430 RSSI定位的设计与实现(05-27)
- 一种基于移动基站的无线传感器网络数据收集方法(12-21)
- ZigBee无线传感器网络技术在油田信息采集系统中的(12-20)
- 基于无线传感器网络的LED路灯远程控制系统(12-02)
- 基于PIC32上实现TCP/IP网络协议和zigbee无线传感器网络的智能家(11-29)