首页 > 其他分享 >包层次的时间同步实验

包层次的时间同步实验

时间:2022-12-06 20:24:51浏览次数:37  
标签:同步 0000 层次 定时器 时间 实验 节点

一、实验目的

  1. 理解掌握时间同步的重要意义
  2. 了解时间同步的基本方法,理解 TPSN 协议机理
  3. 掌握 TinyOS 定时器相关接口和组件的使用

4. 能够在 TinyOS 中实现多节点间的时间同步

 

二、实验要求

  1. 功能:2 个节点以通过通信实现时间同步,实现手动(按键、重启)和自动(固定间隔)进行 时间同步
  2. 现象:节点上两个 LED 灯能够同步闪烁(开始是同步闪烁的,随着时间的流逝节点上时钟的漂 移,节点 LED 闪烁逐渐不同步,能够通过自动和手动方式实现再同步)

 

三、实验设备

  1. 装有 TinyOS 开发环境的 PC 机一台;
  2. 下载器一个;
  3. 物联网实验综合箱一套(两个 CC2530 节点,ID 分别为 01 和 00)。

 

四、实验原理

  时间同步的相关知识请参阅《无线传感器网络》教材第 11 章。

本时间同步实验是一种简单的粗略的时间同步方法,附加实验是一种精确时间同步方法—— TPSN。

本时间同步实验,0 号节点启动完成后发送同步消息包,发送完成后启动定时器;1 号节点接收 到同步消息包后启动自己的定时器;两个节点定时器触发后翻转 LED 灯状态,并启动下个周期的定 时。通过这种消息包的方式,实现每次 0 号节点启动就进行粗略时间同步。TPSN 算法能够实现精确的时间不同。

 

五、实验步骤

TestTimerSync:

1、打开 opt/tinyos-2.x/apps/cc2530_app/ 下的 TestTimerSync

2、修改 Makefile 文件内容:root节点和node节点分别如下:

 

 

 

 

 

 

3、修改 TestTimerSynC.nc 文件内容:设定led每翻转300次自动同步一次

 

 

 

 

4、用 cd 命令进入到文件目录下用命令 make cc2530zn 进行编译,进入到编译目录下,make cc2530zn install 进行烧录,然后删除编译的目录。

5、观察实现现象:最近开始led亮灭是同步的,但是随着时间的增长,led亮不在同步。此时可以重启root节点或者等待下一次自动同步

 

 

 

 

六、附加实验步骤

TestTPSN:

  1. 打开 opt/tinyos-2.x/apps/cc2530_app/ 下的 TestTPSN。修改 Makefile 文件内容,特别是要修改为 自己组分配的信道号和 GroupID,先修改节点 ID 为 0。:

 

 

 

 

 

 

  1. 分别对root节点和node节点进行编译烧录
  2. 观察实验现象:

 

 

 

发现led由最开始的同步闪烁再到后面有点不同步,在进行同步。

七、思考、测试、回答

  1. 简述语句 call MilliTimer.startOneShot(PERIOD);含义。

答:启动一次为时长为PERIO毫秒的定时器。

 

  1. 简述为什么一段时候会出现 LED 闪烁不同步(不能简单说定时器会有一定误差)?

答:cc2530使用的使用低端晶振;时钟漂移与抖动经常发生。

 

  1. 简要回答节点时间同步能够带来什么好处?

答:能保持准确的全局时间,进而保证系统中的所有各种消息、事件、节点、数据具备正确的逻辑性、协调性和可追溯性。

 

  1. 尝试修改实验能否在发生漂移的时候到达一定阈值的时候,传递一个现象(比如 node 节点急速 闪烁)。 TPSN 实验

答:在计算delta值后,判断其值是否达到一定阈值,再去改变灯闪烁的频率。

 

 

 

 

  1. [19:42:56.427]收←◆0000 7FFF # 0000 81E0 # 0000 81E4 # 0000 8071 [19:43:28.837]收←◆0000 FFFF # 0001 0017 # 0001 001B # 0001 0035 简述串口输入代表含义?

答:第一串0000代表第一次通信序号,第二个第三个第四个0000是下一次的序号,其他数据应该是发送的消息。

 

  1. 观察连接一个节点(连接一个节点需要等至少 30 秒看到现象),灯的闪烁和连接两个有什么区 别?为什么会有这种区别?

答:led1灯亮的更晚一点;可能是因为节点的数量增多而导致通信更长,接收到的时间更晚。

 

  1. 尝试修改程序,使 TPSN 实验精准矫正频率上升。
  2. 能否修改程序隔一段时间记录一下 delta 的值,并一定时间进行串口打印。
  3. 如何实现 3 个节点乃至更多个节点的同步?

答:改地址号。

八、实验总结

  通过这次实验了解了时间同步的实现,也学会了tinyOS定时器相关组件的使用,对时间同步了解也更为深刻,实验不算很难,通过老师给的视频和代码间的一些注释,也能顺利的理解整个代码的工作流程。

标签:同步,0000,层次,定时器,时间,实验,节点
From: https://www.cnblogs.com/dhyyds/p/16960386.html

相关文章

  • SRP实验
    一、实验目的学习源路由协议的机制理解节点在源路由协议中的几种角色掌握源路由协议相关接口SourceRouteSend、SourceRoutePacket的使用 二、实验要求功能:root......
  • Dissemination实验
    一、实验目的学习少量数据在传感网中可靠传递的方法掌握TinyOS中DisseminationValue、DisseminationUpdate接口和组件的使用理解Dissemination的机制 二、实......
  • LEEP节点无线链路质量评估实验
    一、实验目的理解节点通信链路质量的影响因素理解提升链路质量的一般方法学习TinyOS系统中CC2530/CC2538节点发送功率的设置体验不同发送功率、不同通信距离、不......
  • rsync远程同步
    一、rsync介绍1.1rsync简介rsync(RemoteSync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算......
  • 实验6
    task3_1:#include<iostream>#include<fstream>#include<array>#defineN5intmain(){usingnamespacestd;array<int,N>x{97,98,99,100,101......
  • 无线传感器网络技术-实验一-TINYOS/6LOWPAN 编程基础
    【实验目的】1.掌握TinyOS/6LoWPAN开发环境的搭建方法2.掌握VisualStudioCode中TinyOS编程的相关设置3.掌握VSCode中CC2530节点(平台名称cc2530zn)和CC......
  • 实验六
    #pragmaonce#include<iostream>usingstd::cout;usingstd::endl;template<typenameT>classVector{public:Vector(Tn):size(n){p=newT[n];}......
  • 实验6 模板类和文件IO
    task3_1.cpp#include<iostream>#include<fstream>#include<array>#defineN5intmain(){ usingnamespacestd; array<int,N>x{97,98,99,100,101}; ofstr......
  • 实验六
    3.1.cpp#include<iostream>#include<fstream>#include<array>#defineN5intmain(){usingnamespacestd;array<int,N>x{97,98,99,100,101}......
  • rsync远程同步
    一、rsync概述1、rsync的概念rsync,remotesynchronize顾名思义就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加......