《无线传感器网络中的数据分发方法.pdf》由会员分享,可在线阅读,更多相关《无线传感器网络中的数据分发方法.pdf(17页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102883466 A (43)申请公布日 2013.01.16 C N 1 0 2 8 8 3 4 6 6 A *CN102883466A* (21)申请号 201210164141.8 (22)申请日 2012.05.24 201110198362.2 2011.07.15 CN H04W 84/18(2009.01) (71)申请人中国科学院深圳先进技术研究院 地址 518055 广东省深圳市南山区西丽大学 城学苑大道1068号 (72)发明人陈亮 于峰崎 (74)专利代理机构广州华进联合专利商标代理 有限公司 44224 代理人吴平 (54) 发明名称 无线传。
2、感器网络中的数据分发方法 (57) 摘要 本发明提供了一种无线传感器网络中的数据 分发方法,特别适用于对传感器网络节点进行程 序无线更新的场景。本发明通过将大容量分发数 据划分为固定大小的数据块、进一步划分为预设 数量个固定长度的数据包,且每个数据包对应了 不同的序号,通过位向量标记接收节点收到的数 据包并请求重传丢失的包,网络中离数据源不同 距离的节点可以同时传输不同编号的数据块,形 成管道式传输;节点通过TDMA方式按时隙发送和 接收数据,在检测到冲突时动态调整时隙表并交 换以减少后续冲突,也可以减少冗余的数据接收; 多个发送节点还可按照不同的起始序号发送数据 包,能够减少数据分发时间,并。
3、能减少数据分发过 程中的能量消耗。 (66)本国优先权数据 (51)Int.Cl. 权利要求书2页 说明书10页 附图4页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 10 页 附图 4 页 1/2页 2 1.一种无线传感器网络中的数据分发方法,包括以下步骤: A当发送者节点有新的数据块需要分发时,向一跳邻居节点广播ADV消息; B收到ADV消息的接收者节点检测是否需要接收所述数据块,若是,则向发送者节点 发送REQ消息; C发送者节点接收到REQ消息,如果拥有REQ消息请求的数据块,则开始向发送REQ 消息的接收者节点发送所述数据块中的数据包,所述。
4、数据块包含预设数量个固定长度的数 据包,所述数据块中的每个数据包对应了不同的序号; D接收者节点接收所述数据包,且每收到一个数据包则将该数据包的序号所对应的位 向量中相应比特清零; E发送者节点发送完所述数据块中的最后一个数据包后,等待接收者节点返回的REQ 消息,当接收者节点接收完所述数据块中的最后一个数据包后向发送者节点发送REQ消 息,该REQ消息中包含接收者节点接收到的数据包的序号所对应的位向量; F发送者节点接收到REQ消息,根据REQ消息中的数据包的序号所对应的位向量判断 是否需再次发送数据包,若是,则根据所述位向量获取需再次发送的数据包并发送至接收 者节点,返回步骤E,否则结束。。
5、 2.根据权利要求1所述的无线传感器网络中的数据分发方法,其特征在于,所述ADV消 息中包含分发协议的版本号、分发数据的时间戳和程序版本号或发送者节点当前分发数据 块的序号;所述步骤B中收到ADV消息的接收者节点检测ADV消息中的分发协议的版本号 是否与所使用的分发协议版本号相同,若是,则进一步判断ADV消息中的程序版本号比已 拥有的程序版本号新或ADV消息中的发送者节点声明的数据块序号是否比自身最后接收 的数据块序号大,若是,则向发送者节点发送REQ消息请求数据块。 3.根据权利要求1或2所述的无线传感器网络中的数据分发方法,其特征在于,所述步 骤B中接收者节点向发送者节点发送的REQ消息中。
6、包含请求的数据块中的数据包的序号和 对应的位向量;所述步骤C中发送者节点接收到REQ消息后,将REQ消息中的序号和对应的 位向量拷贝到本地的发送向量中,根据所述发送向量确定要发送的数据包的序号,并将确 定的序号对应的数据包发送至接收者节点,发送完成后将发送向量中所述发送的数据包的 序号对应的比特置位。 4.根据权利要求1所述的无线传感器网络中的数据分发方法,其特征在于,所述无线 传感器网络中的节点,包括发送者节点和接收者节点,都维护了一个时隙表,所述时隙表的 每一项中包含两个域:发送者和接收者;所述发送者为在该时隙进行发送的某一跳邻居节 点,所述接收者为在该时隙内进行接收的某一跳邻居节点;如果。
7、在该时隙内没有一跳邻居 节点进行发送或接收,则相应域为空;如果节点要在某个时隙内从一跳邻居节点接收,则将 该时隙的接收者设为自身。 5.根据权利要求4所述的无线传感器网络中的数据分发方法,其特征在于,所述方法 还包括: 当在属于节点的发送时隙内监听到邻居节点发送数据,或在节点的接收时隙内收到非 预期节点发送的数据时,节点本地更新时隙表并与邻居节点进行交换。 6.根据权利要求5所述的无线传感器网络中的数据分方法,其特征在于,所述节点本 地更新时隙表并与邻居节点进行交换的步骤包括: 权 利 要 求 书CN 102883466 A 2/2页 3 当在属于节点的发送时隙内收到其他节点发送的数据或在节点。
8、的接收时隙内收到非 预期节点发送的数据时,在节点本地的时隙表中添加一个该节点作为发送者的时隙;当节 点通过来自邻居节点的SLOT消息得知自身与另一节点在某时隙存在冲突时,合并过程中 在时隙表中添加一个时隙以该邻居节点作为接收者; 如果时隙表添加或合并后发生了变化,节点在下一个发送时隙内将更新的时隙表通过 SLOT消息广播给邻居节点; 所述邻居节点收到SLOT消息时,将SLOT消息中的时隙表与本地维护的时隙表进行合 并,再向其邻居节点广播合并后的时隙表。 7.根据权利要求6所述的无线传感器网络中的数据分发方法,其特征在于,所述节点 本地更新时隙表并与邻居节点进行交换的步骤还包括: 当节点本地的时。
9、隙表中已存在作为发送者的时隙时,节点在下一个发送时隙内单播 SYNC消息给邻居节点,所述SYNC消息中包含下一个邻居节点所占用时隙的起始时刻、实际 开始发送时间; 所述邻居节点收到SYNC消息时,计算SYNC消息的发送节点到下一个自身占用时隙开 始的剩余时间,邻居节点根据所述剩余时间调整自身的下一个时隙和SYNC消息的发送节 点的下一个时隙在同一时刻开始。 8.根据权利要求4至7任一项所述的无线传感器网络中的数据分发方法,其特征在于, 所述时隙的长度大于两倍的平均数据包发送时长。 9.根据权利要求1所述的无线传感器网络中的数据分发方法,其特征在于,节点根据 本地的时隙表中发送节点的个数和数据块。
10、中数据包的数量设置数据包发送时的起始序号; 所述步骤C中,发送者节点从所述起始序号开始至块尾依次发送数据块中的数据包,然后 再从块首开始至所述起始序号依次发送数据块中的数据包。 10.根据权利要求9所述的无线传感器网络中的数据分发方法,其特征在于,按照如下 公式计算所述起始序号: n start (N page /n i *s i )(mod N page ) 其中,n i 是节点i的时隙表中发送节点的个数,S i 是节点i的时隙编号,N page 是一个数 据块的数据包的数量,mod表示取模运算。 权 利 要 求 书CN 102883466 A 1/10页 4 无线传感器网络中的数据分发方法。
11、 技术领域 0001 本发明涉及无线传感器网络技术,特别是涉及一种无线传感器网络中的数据分发 方法。 背景技术 0002 无线传感器网络是由部署在监测区域内的大量微型传感器节点组成的无线网络 系统,节点间通过自组织技术形成多条的无线网络。传感器网络应用的一个重要需求是如 何在网络部署后调整或改变网络节点上的运行程序,称为无线更新或空中编程。要实现无 线更新,则需要将新程序所包含的大量数据分发到所有网络节点上。 0003 程序代码分发(code dissemination)就是要将更新代码通过多条的无线路由从 基站节点(BS)发送到网络目标更新区域的所有节点上的过程。代码分发过程与一般的数 据分。
12、发问题不同之处在于,它会涉及到大量的数据在短时间内进行分发,同时必须保证分 发的程序镜像在接收端是完整的。 0004 传感器网络的研究者们针对程序代码分发问题提出了一些相关协议,例如CSMA 方式的分发协议。然而该协议不能避免隐终端问题造成的大量传输冲突,在管道式传输的 情景下,节点会重复接收已收到过的数据而增加无谓的能量消耗。也有提出使用TDMA方式 的分发协议减少冲突,然而,使用TDMA方式的分发协议建立了固定的网络时隙分配方案, 当网络节点转换其作为更新数据发送者和接收者的角色后,固定时隙方案会导致部分节点 等待很多时隙而不能立刻能发送数据,从而增加了整个分发过程的时间。而有些TDMA方。
13、案 的时隙调整方式较为复杂,其代价并不适用于管道式传输情况下节点角色的频繁变化。 发明内容 0005 基于此,有必要提供一种能减少数据分发过程中的能量消耗,并能减少数据分发 时间的无线传感器网络中的数据分发方法。 0006 一种无线传感器网络中的数据分发方法,包括以下步骤: 0007 A当发送者节点有新的数据块需要分发时,向一跳邻居节点广播ADV消息; 0008 B收到ADV消息的接收者节点检测是否需要接收所述数据块,若是,则向发送者 节点发送REQ消息; 0009 C发送者节点接收到REQ消息,如果拥有REQ消息请求的数据块,则开始向发送 REQ消息的接收者节点发送所述数据块中的数据包,所述。
14、数据块包含预设数量个固定长度 的数据包,所述数据块中的每个数据包对应了不同的序号; 0010 D接收者节点接收所述数据包,且每收到一个数据包则将该数据包的序号所对应 的位向量中相应比特清零; 0011 E发送者节点发送完所述数据块中的最后一个数据包后,等待接收者节点返回的 REQ消息,当接收者节点接收完所述数据块中的最后一个数据包后向发送者节点发送REQ 消息,该REQ消息中包含接收者节点接收到的数据包的序号所对应的位向量; 说 明 书CN 102883466 A 2/10页 5 0012 F发送者节点接收到REQ消息,根据REQ消息中的数据包的序号所对应的位向量 判断是否需再次发送数据包,若。
15、是,则根据所述位向量获取需再次发送的数据包并发送至 接收者节点,返回步骤E,否则结束。 0013 在其中一个实施例中,所述ADV消息中包含分发协议的版本号、分发数据的时间 戳和程序版本号或发送者节点当前分发数据块的序号;所述步骤B中收到ADV消息的接收 者节点检测ADV消息中的分发协议的版本号是否与所使用的分发协议版本号相同,若是, 则进一步判断ADV消息中的程序版本号比已拥有的程序版本号新或ADV消息中的发送者节 点声明的数据块序号是否比自身最后接收的数据块序号大,若是,则向发送者节点发送REQ 消息请求数据块。 0014 在其中一个实施例中,所述步骤B中接收者节点向发送者节点发送的REQ消。
16、息中 包含请求的数据块中的数据包的序号和对应的位向量;所述步骤C中发送者节点接收到 REQ消息后,将REQ消息中的序号和对应的位向量拷贝到本地的发送向量中,根据所述发送 向量确定要发送的数据包的序号,并将确定的序号对应的数据包发送至接收者节点,发送 完成后将发送向量中所述发送的数据包的序号对应的比特置位。 0015 在其中一个实施例中,所述无线传感器网络中的节点,包括发送者节点和接收者 节点,都维护了一个时隙表,所述时隙表的每一项中包含两个域:发送者和接收者;所述发 送者为在该时隙进行发送的某一跳邻居节点,所述接收者为在该时隙内进行接收的某一跳 邻居节点;如果在该时隙内没有一跳邻居节点进行发送。
17、或接收,则相应域为空;如果节点 要在某个时隙内从一跳邻居节点接收,则将该时隙的接收者设为自身。 0016 在其中一个实施例中,所述方法还包括: 0017 当在属于节点的发送时隙内监听到邻居节点发送数据,或在节点的接收时隙内收 到非预期节点发送的数据时,节点本地更新时隙表并与邻居节点进行交换。 0018 在其中一个实施例中,所述节点本地更新时隙表并与邻居节点进行交换的步骤包 括: 0019 当在属于节点的发送时隙内收到其他节点发送的数据或在节点的接收时隙内收 到非预期节点发送的数据时,在节点本地的时隙表中添加一个该节点作为发送者的时隙; 当节点通过来自邻居节点的SLOT消息得知自身与另一节点在某。
18、时隙存在冲突时,合并过 程中在时隙表中添加一个时隙以该邻居节点作为接收者; 0020 如果时隙表添加或合并后发生了变化,节点在下一个发送时隙内将更新的时隙表 通过SLOT消息广播给邻居节点; 0021 所述邻居节点收到SLOT消息时,将SLOT消息中的时隙表与本地维护的时隙表进 行合并,再向其邻居节点广播合并后的时隙表。 0022 在其中一个实施例中,所述节点本地更新时隙表并与邻居节点进行交换的步骤还 包括: 0023 当节点本地的时隙表中已存在作为发送者的时隙时,节点在下一个发送时隙内单 播SYNC消息给邻居节点,所述SYNC消息中包含下一个邻居节点所占用时隙的起始时刻、实 际开始发送时间;。
19、 0024 所述邻居节点收到SYNC消息时,计算SYNC消息的发送节点到下一个自身占用时 隙开始的剩余时间,邻居节点根据所述剩余时间调整自身的下一个时隙和SYNC消息的发 说 明 书CN 102883466 A 3/10页 6 送节点的下一个时隙在同一时刻开始。 0025 在其中一个实施例中,所述时隙的长度大于两倍的平均数据包发送时长。 0026 在其中一个实施例中,节点根据本地的时隙表中发送节点的个数和数据块中数据 包的数量设置数据包发送时的起始序号;所述步骤C中,发送者节点从所述起始序号开始 至块尾依次发送数据块中的数据包,然后再从块首开始至所述起始序号依次发送数据块中 的数据包。 002。
20、7 在其中一个实施例中,按照如下公式计算所述起始序号: 0028 n start (Npage/n i *s i )(mod N page ) 0029 其中,n i 是节点i的时隙表中发送节点的个数,S i 是节点i的时隙编号,N page 是一 个数据块的数据包的数量,mod表示取模运算。 0030 上述无线传感器网络中的数据分发方法,通过将数据块分为预设数量个固定长度 的数据包,且每个数据包对应了不同的序号,并采用位向量标记接收节点收到的数据包,多 个发送节点还可按照不同的起始序号发送数据包,能够减少数据分发时间,并能减少数据 分发过程中的能量消耗。 附图说明 0031 图1为无线传感器。
21、网络数据分发过程示意图; 0032 图2为本发明中进行管道式传输的示意图; 0033 图3为本发明中的无线传感器网络中的数据分发方法的流程图; 0034 图4为节点间分发一个数据块时的状态转换图; 0035 图5为说明TDMA调度表示方法的局部网络示意图; 0036 图6为节点获知竞争对象的示意图; 0037 图7为节点间进行协作式传输的示意图。 具体实施方式 0038 无线传感器网络由大量的节点组成,起初,所有节点工作在常规模式下,进行数据 采集和传输。当节点收到第一个ADV消息以后,节点中断常规的应用程序执行,开始进入到 数据分发过程(也是程序分发过程)。无线传感器网络中的数据分发过程是所。
22、有节点都需要 参与的分发过程,通常从基站节点(BS)开始向其他所有节点分发数据。 0039 处于数据分发过程的节点可以分为两类角色:发送者和接收者。数据会以数据块 的形式进行传输,在一个数据块的传输过程中,负责发送该数据块的节点称为发送者节点, 而负责接收该数据块的节点称为接收者节点。网络完成一个数据块的完整传输所需时段称 为一轮,每一轮的时间不完全相同。在本轮充当发送者的节点一般在下一轮转变为接收者。 0040 在无线传感器网络中,包括基站节点(BS)和普通节点,如图1所示,接站节点通过 有线接口从上位机软件接收程序更新数据,发起数据分发过程,初始时作为网络中唯一的 发送者节点。 0041 。
23、本发明中,采用数据块的管道式传输方式进行数据分发,如图1和图2所示,网络 中的节点依据其到基站的跳数可以分为不同层,到基站需经过N跳无线传输的节点的集合 以下则称为第N层节点。 说 明 书CN 102883466 A 4/10页 7 0042 如上所述,网络完成一个数据块的完整传输所需时段称为一轮,本发明所提供的 基于数据块的管道式传输方式进行数据分发的过程如下: 0043 (1)在第1轮中,基站节点通过广播方式将第一个数据块的所有数据包发送给第1 层节点。第1轮结束时第1层所有节点拥有第一个数据块。 0044 (2)在第2轮中,第1层中的部分节点(一般具有更多的邻居节点属于第2层)作为 发送。
24、者将第一个数据块发给它们的一跳邻居节点,即第2层节点。所谓一跳邻居节点是指 与节点相邻的节点,若节点之间的距离为2层,则节点相互为二跳邻居节点,以此类推。本 申请中,若没有特殊说明,邻居节点则指的是一跳邻居节点。第1层的非发送节点(可设置 第1层节点中的部分节点发送第一个数据块)进入“休眠”状态等待本轮结束。第2轮结束 时,第2层的节点都拥有第一个数据块。 0045 (3)在第3轮中,基站节点向第1层节点发送第二个数据块,同时第2层节点向第 3层节点发送第一个数据块。 0046 以此类推。 0047 (4)在第2N-1轮中,基站节点向第1层节点发送第N个数据块,第2层节点向第3 层节点发送第N。
25、-1个数据块,第4层节点向第5层节点发送第N-2个数据块,.以此类 推。 0048 (5)在第2N轮中,基站节点空闲,第1层节点向第2层节点发送第N个数据块,与 此同时,第3层节点向第4层节点发送第N-1个数据块,第5层节点向第6层节点发送第 N-1个数据块,以此类推,直到所有数据块传输完毕。 0049 在某一轮中,同一层节点中部分作为发送者,向它们的邻居节点发送数据块。这些 发送者的其他同层节点经过ADV-REQ过程后若没有邻居节点需要其发送更新数据,将进入 “休眠”状态,停止接收数据包直到本轮结束。 0050 数据块按照块的序号顺序进行传输,当下游层发送数据块时,其上一层节点虽然 可能收到。
26、,但发送的消息中的块序号将小于节点已接收到的最后一个数据块的序号,因此 上一层节点将忽略该消息。 0051 对于每一个数据块,通过这种流水线式的管道式传输方式,使网络中不同层次的 尽可能多的节点同时传输不同的数据块,从而能够减少数据分发时间。 0052 为清楚阐述本发明的方案,首先对本发明所涉及到的节点间交换的几种类型的消 息进行说明。本发明所涉及到的在节点间交换的消息及其用途如表1所示: 0053 表1 0054 消息名称 用途 ADV 通知周围节点可传输数据块的摘要信息 REQ 向源节点请求下载一个数据块 DATA 传输实际待分发的数据 SLOT 与邻居节点交换时隙表信息 SYNC 实现与。
27、邻居节点的时间同步 说 明 书CN 102883466 A 5/10页 8 0055 如图3所示,在一个实施例中,本发明提供的一种无线传感器网络中的数据分发 方法,包括以下步骤: 0056 步骤S10,当发送者节点有新的数据块需要分发时,向一跳邻居节点广播ADV消 息。 0057 本申请中的数据块是指将要分发的大容量数据按固定大小(如1KB)分割得到的一 定数量的数据块。在一个实施例中,发送者节点广播的ADV消息包括可传输数据块的摘要 信息,包括分发协议的版本号、分发数据的时间戳和程序版本号或发送者节点已收到的数 据块的块数。 0058 步骤S20,收到ADV消息的接收节点检测是否需要接收该数。
28、据块,若是,则向发送 者节点发送REQ消息。 0059 进一步的,在步骤S20中,收到ADV消息的接收者节点可检测ADV消息中的分发协 议的版本号是否与所使用的分发协议的版本号相同,如果相同,则进一步判断ADV消息中 的程序版本号比已拥有的程序版本号新或ADV消息中的发送者节点声明的数据块序号是 否比自身最后接收的数据块的序号大,若是,则向发送者节点发送REQ消息请求数据块。 0060 步骤S30,发送者节点收到REQ消息,如果拥有REQ消息请求的数据块,则开始向发 送REQ消息的接收节点发送数据块中的数据包。其中,数据块包括预设数量个固定长度的 数据包,数据块中的每个数据包对应了不同的序号。。
29、 0061 每一个数据块进一步被划分为固定长度的数据包(例如每个数据包包含32字节 数据),一个数据块中的不同数据包对应了不同的序号,根据序号可以得到对应的数据。 0062 步骤S40,接收者节点接收数据包,每收到一个数据包则将数据包的序号所对应的 位向量中的位清零。 0063 具体的,接收者节点维护一个与序号对应的位向量,该位向量用于标识对应的序 号的数据包是否已接收。例如某位为1,表示相应的数据包未接收到,若该位为0,表示相应 的数据包已接收到。初始时,所有序号所对应的位都为1,当接收者节点收到一个数据包,则 将相应的序号所对应的位设为0。 0064 步骤S50,发送者节点发送完数据块中的。
30、最后一个数据包后,等待接收者节点返回 的REQ消息,当接收者节点接收完数据块中的最后一个数据包后向发送者发送REQ消息,该 REQ消息中包含接收者节点接收到的数据包序号所对应的位向量。 0065 步骤S60,发送者节点接收到REQ消息,根据REQ消息中的数据包的序号所对应的 位向量判断是否需再次发送数据包,若是,则进入步骤S70,否则结束。 0066 发送者节点接收到REQ消息后,根据其中的序号对应的位向量的位确定需再次发 送的数据包,如果位向量的所有位都为0,则表明发送REQ消息的该接收者节点已收到所有 的数据包,此轮流程结束。如果有某些位为1,则表明发送REQ消息的该接收者节点没有收 到相。
31、应的数据包(数据包可能在传输过程中丢失),则需要将这些数据包再次发送。 0067 步骤S70,根据位向量获取需再次发送的数据包并发送至接收者节点,返回步骤 S50。 0068 遍历位向量,获取所有位为1所对应的序号,根据该序号获取到对应的数据包,然 后将这些数据包再次广播或单播给邻居节点,直到接收者节点返回的REQ消息中的位向量 表明所有数据包已接收到。 说 明 书CN 102883466 A 6/10页 9 0069 为清楚阐述上述提供的无线传感器网络中的数据分发方法,下面分别从发送者节 点和接收者节点的角度阐述数据分发过程及节点的状态变换过程。 0070 结合图4所示,发送者节点(以下也称。
32、发送者)向邻居节点分发一个数据块时,其所 要执行的步骤如下: 0071 步骤101,发送者有新的数据块要分发时,进入到“发布”状态,准备发送ADV消息 给邻居节点,进入步骤102。 0072 步骤102,发送者在发布状态下周期性的向邻居节点发送ADV消息并启动一个超 时计时器等待REQ消息。ADV消息中包含分发协议的版本、分发数据的时间戳和程序版本号 或发送者节点当前分发数据块的序号等。如果在计时器超时发生前收到一个合法的REQ消 息,则进入步骤103,否则进入步骤108。 0073 步骤103,发送者切换到“发送”状态开始发送当前数据块的DATA消息,发送者将 REQ消息中的位向量拷贝到本地。
33、的发送向量中,并根据发送向量确定下一个要发送的DATA 消息序号。发送者从RAM或FLASH存储器中根据序号取出对应数据(即数据包),封装在DATA 消息中广播给接收者节点,发送完成后将发送向量中该DATA消息对应的位由1置为0,表示 对应的数据包已发送,进入步骤104。 0074 步骤104,发送者发送DATA消息后检查发送向量,如果仍有发送向量的位为1,则 取该位对应的数据封装在DATA消息中发送。如果该位是发送向量中的最后一个1,则在 DATA消息的选项字节标记其为请求的最后一个数据包。该过程持续到发送向量所有位都为 0,即请求的所有数据包已发送,发送者进入“恢复”状态,进入步骤105。。
34、 0075 步骤105,发送者接收到REQ消息,继续等待一定时间以接收来自其他接收者的 REQ消息。所有接收者的REQ消息都收到以后,检查是否有接收者要求重传数据,如上所示, 即根据REQ消息中的位向量查看是否有相应位为1,如果有,则进入步骤106,否则进入步骤 107。 0076 步骤106,发送者综合所有接收者要求重传的数据包并更新发送向量,由“恢复”状 态转入“发送”状态,转入步骤104。 0077 步骤107,发送者已成功将当前数据块发送到所有邻居节点,转变角色为接收者, 向自己的上游节点发送REQ消息请求接收下一个数据块,进入“请求”状态。 0078 步骤108,发送者从REQ消息中。
35、的状态位得知,邻居节点不需要其发布的数据时, 标记该邻居节点不需要分发;或者当前忙于其他任务而不能立即请求时,标记该邻居节点 需要延时。检查所有的REQ消息后,如果还有邻居节点需要分发,启动一个延时定时器在 一个约定时间后再次发送ADV消息,进入步骤109,否则没有邻居节点需要其发布的更新数 据,节点进入“休眠”状态,并启动一个定时器在本轮结束前由“休眠”状态转入“空闲”状 态。 0079 步骤109,发送者的延时定时器到时,转入步骤101重新发送ADV消息。 0080 作为接收者的邻居节点则执行以下步骤: 0081 步骤201,接收者收到ADV消息后检查是否与自己使用的分发协议为相同版本,如。
36、 果协议版本号不同,则忽略此ADV消息,报告协议错误,否则进入步骤202。 0082 步骤202,接收者比较程序的版本号和数据块的序号,如果ADV消息中包含的程序 版本号更新或者数据块序号更大,则接收者向这个ADV消息的发送者请求下载更新数据。 说 明 书CN 102883466 A 7/10页 10 在这种情况下,接收者从“空闲”状态切换到“请求”状态。 0083 步骤203,在“请求”状态下,接收者发送REQ消息给ADV消息的发送者,并忽略来 自其他发送者的ADV消息。等待来自选定发送者的DATA消息,进入步骤204。 0084 步骤204,接收者收到请求的第一个DATA消息时,从“请求”。
37、状态切换到“接收”状 态,将位向量的所有位都置为1,表示该数据块的所有DATA消息都尚未收到,持续等待来自 发送者的DATA消息,进入步骤205。 0085 步骤205,接收者检查收到的DATA消息是否与目标接收块的序号匹配(接收者在 收到ADV消息后记录其中的数据块的序号),并在匹配时将数据写入到存储器,且置接收到 的数据包对应的位向量相应位为0。如果该DATA消息是不需要的(如序号不匹配),则接收 者利用这个监听到的数据包更新本地的时隙表,关于时隙表的更新过程下面会详细阐述, 在此先不做描述。 0086 步骤206,接收者收到请求的最后一个DATA消息(检查DATA消息的选项字节,发现 标。
38、记位对应最后一个数据包),向发送者发送REQ消息。如果所有数据包都已收到,REQ消 息中的位向量的所有位都为0,进入步骤207,如果部分需要重传的数据包的位向量的相应 位为1,等待发送者重新传输丢失的数据包,转入步骤205。 0087 步骤207,接收者完成了接收这个数据块的数据后,转换角色为发送者,进入步骤 101尝试向邻居节点分发刚刚完成接收的数据块。 0088 对于接收者,如果在一定时间内没有收到任何ADV消息,则节点将进入“休眠”状 态,并启动定时器在本轮结束时进入“空闲”状态。 0089 本发明所提供的无线传感器网络中的数据分发方法遵循TDMA调度,网络中的每 个节点按照TDMA调度。
39、开启射频开始收发操作,在不属于该节点的时隙内,节点射频则进入 “休眠”状态。 0090 在一个实施例中,无线传感器网络中的节点,包括发送者节点和接收者节点,都维 护了一个时隙表。时隙表中的每个项中包含两个域:发送者和接收者。发送者为在该时隙 进行发送的某一跳邻居节点,接收者为在该时隙内进行接收的某一跳邻居节点;如果在该 时隙内没有一跳邻居节点进行发送或接收,则相应域为空;如果节点要在某个时隙内从一 跳邻居节点接收,则将该时隙的接收者设为自身。 0091 例如,对于如图5所示的局部网络,假设每个节点仅能与它最近的节点(即一跳邻 居节点)通讯。对于节点5,它的时隙表可能如表2所示: 0092 表2。
40、 0093 0 1 2 3 4 Sender(发送者) 4 5 7 Receiver(接收者) 1 2 0094 从表2中可以看出,节点5和节点7分别在3号时隙和4号时隙发送数据,节点4 在2号时隙发送数据,节点1和2分别在0号时隙和1号时隙接收数据。根据这个时隙表, 节点5可以决定它的传输调度。即节点5不能在0、1号时隙发送数据,因为发出的数据包 说 明 书CN 102883466 A 10 8/10页 11 将与其他节点发给节点1、2的数据包发生冲突;节点5也不能在2、4号时隙发送数据,因为 节点4在2号时隙将要发送,节点7在4号时隙将要发送。节点5只能在属于它的3号时 隙发送数据。 00。
41、95 在初始化时,节点的时隙表中仅包含一项,该项的发送者是节点本身。本发明的数 据分发方法按TDMA调度协作传输,具体的,当在属于节点的发送时隙内收到其他节点发送 的数据或在节点的接收时隙内收到非预期节点发送的数据时,节点本地更新时隙表并与邻 居节点进行交换。节点仅与一跳邻居节点交换时隙表。 0096 进一步的,当在属于节点的发送时隙内监听到另据节点发送数据或在节点的接收 时隙内收到非预期节点发送的数据时,在节点本地的时隙表中添加一个该数据包发送节点 作为发送者的时隙;当节点通过来自邻居节点的SLOT消息得知自身与另一节点在某时隙 存在冲突时,合并过程中在时隙表中添加一个时隙以邻居节点作为接收。
42、者。 0097 如果时隙表添加或合并后发生了变化,则节点在下一个发送时隙内将更新后的时 隙表通过SLOT消息广播给邻居节点;邻居节点收到SLOT消息时,将SLOT消息中的时隙表 与本地维护的时隙表进行合并,再向其邻居节点广播合并后的时隙表。 0098 在一个实施例中,当节点本地的时隙表中已存在作为发送者的时隙时,节点在下 一个发送时隙内单播SYNC消息给该邻居节点,所述SYNC消息中包含下一个邻居节点所占 用时隙的起始时刻、实际开始发送时间;进一步的,所述邻居节点收到SYNC消息时,计算 SYNC消息的发送节点到下一个自身占用时隙开始的剩余时间,邻居节点根据所述剩余时间 调整自身的下一个时隙和。
43、SYNC消息的发送节点的下一个时隙在同一时刻开始。 0099 在一个具体的实施例中,对于发送者节点和接收者节点,都需运行以下步骤: 0100 步骤301,节点R在自己的发送时隙收到来自任意邻居节点S、或者在自己的接收 时隙收到并非来自时隙表记录的发送者S(S为R的邻居节点)的数据包,检查时隙表,如果 不存在一个时隙表项以S为发送者,进入步骤302,否则进入步骤304。 0101 步骤302,新增一个时隙表项,填充S的地址为发送者,标记该时隙为当前活动时 隙。节点R根据旧时隙表在下一个自己可发送的时隙将更新过的时隙表通过SLOT消息广 播给邻居节点,邻居节点收到SLOT消息时进入步骤303。 0。
44、102 步骤303,节点S收到一个SLOT消息时,节点S将消息中包含的时隙表与本身维护 的时隙表进行合并,完成后再将时隙指针指向自己所在时隙的位置,并向邻居节点广播合 并后的时隙表。节点R收到该合并后的时隙表后,与节点S具有了相同的时隙表。 0103 步骤304,节点R已存在发送者为S的时隙项时,表明节点R与节点S的时间不同 步,节点R在下一个自己的发送时隙内广播SYNC消息给邻居节点,该SYNC消息包含下一个 邻居节点所占用时隙的起始时刻、实际开始发送时间和单个数据包处理时间。 0104 具体的,下一个节点S所占用时隙的起始时刻可根据如下公式计算得到: 0105 t s.st t slot.。
45、i +(n s -n i +N slot )(mod N slot )*T slot 0106 其中,t slot.i 为当前时隙的起始时刻,n s 为节点S所占用时隙的编号,n i 为当前时 隙的编号,N slot 为时隙表的项数,T slot 为时隙长度,mod表示取模运算。 0107 实际开始发送时间即MAC层发送时刻t r.tx ,也就是协议栈将SYNC消息马上要写入 射频芯片之前的本地时间。 0108 步骤305,节点S收到一个SYNC消息时,将调整它的下一个时隙的开始时刻。节 说 明 书CN 102883466 A 11 9/10页 12 点S还可计算出SYNC消息的发送节点R到下。
46、一个时隙开始的剩余时间。具体的,该剩余时 间为T left (t s.st -t r.tx )-nT slot ,其中nN且(t s.st -t r.tx )/T slot n(t s.st -t r.tx )/T slot +1。 节点S先停止时隙定时器,在以该剩余时间T left 启动时隙定时器,从而使自己的下一个时隙 和节点R在同一个时刻开始。 0109 本发明中,节点在数据传输过程中,监听和检测与邻居节点间的传输冲突,在冲突 发生时与一跳邻居节点交换调度信息,并更新自己的时隙表以避免后续的冲突。如图6所 示,给出了时隙竞争者获知的机制。图中的深色节点B、C、D都是发送者,则当节点C收到。
47、B 发出的数据包时,C可以判定B是它的一个竞争者;当节点E预定接收C发送的数据包时却 收到D发送的数据包,则表明C、D是彼此的竞争者,节点E应该通过SLOT消息通知C、D这 一情况。 0110 本发明中,时隙表中的项只包含一跳邻居节点。由于一个节点A如果和它的一个 两跳邻居节点B存在冲突,则表示存在A的某个一跳邻居节点C,在B向C发送数据时,A也 向C发送而导致冲突。因此两跳邻居B的发送时隙也即一跳邻居C的接收时隙,可以用一 跳邻居C填充为该项的接收者。 0111 节点对TDMA调度的知识只需要是相对的,即节点不需要维护全局(两跳)范围内的 发送者的信息,而只需要知道它应该避开哪些一跳邻居节点。
48、的时隙。通过在时隙表中仅包 含一跳邻居几点,可以避免时隙更新时立即的两跳转发。 0112 本发明中,通过交换时隙表,所有节点的时隙表最终具有同样的大小。网络中节 点i要发送数据时,和一定数目的一跳及两跳邻居节点形成竞争,该数目加节点自身的总 数(即节点自身加上节点的竞争者)定义为N i 。网络中所有节点的N i 值的最大值即为充分 交换和调整后时隙表中项的数目。时隙表在所有竞争者被纳入之前一直处于更新状态。 0113 本发明中,时隙表中的所有者按其ID(16bit整数短地址,0-65535)保持一个序 列顺序(升序或降序)。通过保持时隙表为序列顺序,在两跳范围内具有相同竞争者集的节 点最终能够。
49、建立相容的时隙表,虽然各节点的时隙表中所有项中填充的发送者和接收者ID 不完全相同,但依据该表这些竞争者可避免大部分收发冲突。 0114 在一个实施例中,时隙的长度设置为大于两倍的平均数据包发送时长。优选的,时 隙长度T slot 设置为略大于两倍的平均数据包发送时长T pkt 。在数据传输过程中,定义如下 发送规则: 0115 (1)若发送者A处在发送-请求阶段,则在它的某时隙的前一半时间发送的ADV消 息到达接收节点B后,B可以在该时隙的后半段里发送REQ消息给A;若B发送的第一次REQ 消息没有成功被接收,则它可以在下一个属于A的时隙的前半段时间再次发送REQ消息给 A。 0116 (2)若发送者A处在数据传输阶段,则在某个时隙的前半段发送一个DATA消。