当收到父节点ID帧头时,利用即时同步机制第一次将本节点和上一层节点初始同步。当收到0x81或者0x82帧头时,进行两层节点间的时钟校对:把本地时钟和上一层时钟的差值D_value保存,并把收到的上一层参考时钟写入本地RTC的CAPTUREn寄存器中。
本层节点每600 s进行一次晶振偏移补偿:将本地时钟减去D_value,然后写入RTC寄存器,完成校对。
由于传感器节点的侦听窗口为5 ms,若同样采用精度为20 ppm的晶振,经过计算,需要在第1 min的时候进行时钟校验,否则就会超出侦听窗口。
4 实验结果
实验采用两块基于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芯片平台,实现了一种将无线传感器网络节点的同步周期进行扩展的方法,利用即时同步技术进行节点间同步的初始化,随后每间隔一段时间,节点主动校准自己的时钟,从而实现了在没有显著增加能量消耗的前提下,扩展同步周期,提高同步精度。
本文关键字:技术 综合-其它,单片机-工控设备 - 综合-其它