理论上,虽然获取3个已定位节点的信息就可以确定一个未知节点的位置,但是实际情况会因为干扰而出现偏差。例如,当两个射频之间出现意外遮挡物时,接收信号会降低30 dBm.为了修正异常,提高定位结果的精确性,间接定位需要尽可能多的已定位节点的RSSI值,进行相关的定位计算,那么当采用大量的节点后,RSSI的值将趋于稳定,这时就可以得出更加精确的定位结果。

ZigBee全网的时间同步使用FTSP算法实现。它通过发送一条报文并在发送和接收两端分别打下时间戳来实现一对一或者一对多的时间同步。FTSP算法提供多跳的时间同步,由网络的根节点维护一个全局时钟,其他的所有节点都同步到根节点,由此将全网中的所有节点时间同步。

FTSP算法的实现步骤如下:

①发射同步(sync)字节,计算时间戳t,计算方法为当前的时间减去消息数据部分的发射时间,消息数据部分的发射时间,可以通过数据长度和发射速率得出。发射时间戳t.

②接收数据包,记录sync字节最后到达的时间tr,计算位偏移(bit offset)。在收到完整消息后,计算位偏移产生的时间延迟tb,计算方法为计算位偏移和接收速率。

③接收节点计算与发送节点之间的时钟偏移量off-set,然后调节本地时钟与发送节点的时钟同步。

3性能测试

3.1定位误差测试

间接定位的实际测试中,共部署了23个传感节点,其中使用北斗直接定位的有11个,没有提供北斗定位而使用ZigBee定位的有12个。节点随机分布,节点间设置了10~20 m不等的距离,然后进行了10次间接定位的实验。通过统计数据,分析与实际测量值的误差,结果如图5所示。



图5间接定位误差分布


综合计算,10次实验的平均定位误差为1.7 m.考虑到平均14 m的节点间距离,定位误差较小,符合应用要求。

3.2时间同步误差测试

在时间同步的仿真中,依然采用间接定位测试中的节点。23个节点位置随机分布,时间同步周期为5 s,在原有ZigBee协议中增加了部分模块的功能,包括MAC层的时间戳。在实验中,分别记录了FTSP在网络中节点间单跳和多跳的平均同步误差,测试次数为10次,实验结果如图6所示。



图6间接定位误差分布


根据实验结果,两个节点单跳FTSP平均误差为2.12μs;但是到7跳的时候,两个节点的平均误差,FTSP为11.97μs,结果表明,FTSP算法在多跳网络中的同步误差精度较高,曲线平滑,符合要求,可以达到提升ZigBee网络时间同步准确性的目的。

结语

利用Freescale的ZigBee通信模块MC13213与和芯星通UM220定位导航芯片组合搭建的硬件和软件平台,把北斗卫星定位系统的定位信息和授时功能与ZigBee系统相结合;利用精确的定位和授时数据改进ZigBee协议栈的性能,增强其节点的功能,实现了精确定位、间接定位和全网时间同步的改进。通过ZigBee网络传输性能的优势,弥补了单一北斗导航数据缺乏流动性和数据形态孤立的不足。经测试,设计终端性能稳定,效果良好,达到了预期的设计目标。