一种无线传感网络的新型多信道介质访问控制方法转让专利

申请号 : CN201010289201.X

文献号 : CN101925132B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈冬岩邵珠瑜秦绍华

申请人 : 济南普赛通信技术有限公司

摘要 :

本发明公开了一种无线传感网络的新型多信道介质访问控制方法,该方法首先是从收到的信标中提取到时钟、物理地址及超帧信息;收到其它节点信标的任一节点,以提取到的物理地址为种子,获得伪随机序列,并根据伪随机序列算出其它节点所处的信道;当任一节点向接收方发送数据时,它根据提取到的超帧信息获取接收方的苏醒时间片,并进行随机延时及信号强度检测。本发明中提高了网络的可靠性;通过将一个大的超帧分成数个小时间片,有效避免了信号冲突;同时实现了超帧大小不相同的节点互相通信的机制,并且利用碰撞后退避的机制,保证已经产生的数据传输不受到影响,使正在进行的数据通信得以成功。

权利要求 :

1.一种无线传感网络的新型多信道介质访问控制方法,其特征是,该方法包括以下步骤:Step1:系统上电,无线传感网络初始化;

Step2:无线传感网络中的所有节点在控制信道上广播信标,同时定时在侦听信道上侦听信标;

Step3: 当任一节点收到其它节点广播的信标时,该节点将会从收到的相应节点的信标中提取时钟、物理地址及超帧信息,并把这些信息存放在邻居表中;

Step4:判断节点是否需要发送数据,需要发送数据的节点以提取到的对方节点的物理地址为种子,在本地根据与对方节点同样的伪随机序列产生器获得对方节点的伪随机序列;由于对方节点以自己的物理地址作为种子,根据所述伪随机序列产生器产生一个伪随机序列,按这个伪随机序列在多个信道之间切换,因此当发送数据的节点获得对方节点的伪随机序列后,就可根据此伪随机序列计算出对方节点所处的信道,同时转入Step5继续执行;反之则等待数据,返回Step4继续判断; Step5:判断需要发送数据的节点是否成功占用射频芯片资源,如是则转入step6,反之则继续等待射频芯片资源,返回step5继续判断;

Step6:获取接收方下个超帧的苏醒时间片,到接收方的下个超帧苏醒时间片到来时,切换信道到接收方所在的信道,并进行随机延时; Step7:随机延时后,利用射频芯片资源对当前信道的信号强度进行给定时间的检测;

Step8:如果信号强度未超过设定阈值,则向接收方发送数据,并转入step9继续执行;

反之则放弃此次发送,并转入step6继续执行;

Step9:如发送数据成功,则发送数据的节点切换到自己的默认信道,释放射频芯片资源,结束通信;反之进行重复发送,如发送次数大于给定次数,则释放射频芯片资源,结束通信,如发送次数小于给定次数,则转入step6继续执行。

2.如权利要求1所述的一种无线传感网络的新型多信道介质访问控制方法,其特征是,所述step6中获取苏醒时间片的过程如下:A、用超帧的长度除以给定时长,得到超帧中给定时长的个数;

B、以对方节点的物理地址为种子,获得对方的伪随机序列,伪随机序列的长度及伪随机序列中的最大值为给定时长的个数;

C、发送数据的节点根据对方节点的时间片伪随机序列,获得对方节点的苏醒时间片。

3.如权利要求2所述的一种无线传感网络的新型多信道介质访问控制方法,其特征是,所述苏醒时间片为节点苏醒时所在的时间片。

4.如权利要求1所述的一种无线传感网络的新型多信道介质访问控制方法,其特征是,所述射频芯片采用支持多信道通信的射频芯片。

5.如权利要求1所述的一种无线传感网络的新型多信道介质访问控制方法,其特征是,所述step2中,广播信标过程为:a.节点首先判断是否占用射频芯片资源;

b.如果占用射频芯片资源,则切换到控制信道,发送设定时间的信标,然后释放射频芯片资源,等待下次发送信标;

c.如果未占用射频芯片资源,则等待射频芯片资源,转入步骤a继续执行。

6.如权利要求1所述的一种无线传感网络的新型多信道介质访问控制方法,其特征是,所述step2中,侦听信标过程为:

1)节点首先判断是否占用射频芯片资源;

2)如果占用射频芯片资源则切换到控制信道,打开射频侦听信标;反之等待射频芯片资源,转入步骤1)继续执行;

3)在给定时间内,如果侦听到数据则更新邻居表和时间同步表,更新完成后释放射频芯片资源;反之则释放射频芯片资源,等待下次侦听信标。

说明书 :

一种无线传感网络的新型多信道介质访问控制方法

技术领域

[0001] 本发明涉及一种无线传感网络的新型多信道介质访问控制方法。

背景技术

[0002] 无线传感器网络(wireless sensor networks,WSN)是由部署在监测区域内的大量廉价微型传感器节点,通过无线通信方式形成的一种多跳的自组织网络系统。多信道MAC通信协议中,网络内的众多节点分散于不同的信道,减少了通信竞争,特别是并行协商的多信道MAC通信协议,克服了控制信道的瓶颈问题,极大地提高了网络的吞吐量和网络的抗干扰性。现有的无线传感网络中的多信道mac机制中整个网络采用唯一的big slot(超帧),采用的信号强度检测也只是由硬件来实现,在软件上没有有效的避免碰撞的机制。
[0003] 目前已有多种多信道MAC协议,例如用于无线传感器网络的多频段介质访问控制协议MMSN(Multi-Frequency Media Access Control for Wireless SensorNetworks),多信道介质访问控制协议MMAC(Multi-Channel Media AccessControl),基于时分多址的多信道介质访问控制协议TMMAC(ATDMA basedmulti-channel MAC protocol),树形多信道介质访问控制协议TMCP(aTree-based Multi-Channel Protocol),基于时间和频率的多信道介质访问控制协议TFMAC(Time-Frequency Multi-Channel Protocol),用于无线传感器网络的多信道介质访问控制协议MC-LMAC(A Multi-Channel MAC Protocol forWireless Sensor Networks),并行协商的多信道介质访问控制协议McMAC(AParallel Rendezvous Multi-Channel MAC Protocol),基于时间同步的网格网络协议TSMP(TIME SYNCHRONIZED MESH PROTOCOL)。本文将从协议的信道分配方式和信道访问方式两个方面对上述协议进行分析。
[0004] 从信道分配方式看,多信道MAC协议主要可以分为固定信道分配,分阶段的信道切换和并行信道协商三种方式。固定信道分配方式,节点在网络初始化时,选定各自的信道,并固定在自己信道上。节点想要与别的节点进行通信时,就会切换到对方的信道进行信息交换,通信完毕再切换到自己的信道,MMSN,TMCP,TFMAC和MC-LMAC协议都属于这类方式。这种方式实现简单,可以使网络内的众多节点分散在多个信道上,减少了节点通信竞争的程度。但是在这类方式中,由于节点固定于具体的一个信道,当这个信道受到干扰时,处于这个信道上的节点便无法进行通信,影响网络的稳定性。分阶段的信道切换方式的信道分配分为协商时段和通信时段,在协商时段,有通信要求的节点在控制信道上进行协商,协商成功后,对应节点在通信时段切换到协商好的信道进行通信,通信完毕后再回到控制信道,MMAC和TMMAC协议都属于这类方式。分阶段的信道切换方式可以使节点选择在不同的信道上同时进行通信,避免了单个信道受到干扰而影响整个网络,提高了网络的稳定性。但是这种方式严重依赖控制信道的存在,所有节点都集中在控制信道进行协商,容易造成控制信道的饱和,而且,如果控制信道受到干扰,将影响整个网络,因此,控制信道成为整个网络的瓶颈。并行信道协商方式,节点按自己固定的伪随机序列在多个信道之间切换,有通信要求的节点则根据对方节点的伪随机序列,切换到对应的信道进行通信,通信完毕则切换到自己信道。由于节点的通信过程不依赖于控制信道,消除了控制信道的瓶颈问题,提高了网络的吞吐量和可靠性。但是,由于缺乏控制信息的交换,当节点脱离自己的默认信道,切换到对方节点的信道进行通信时,网络内的其他节点并不知道,如果此时,另外一个节点想与之通信,便不能根据他的伪随机序列在其默认信道上找到它,好像这个节点消失一样,我们称之为节点消失问题。
[0005] 从信道访问方式看,目前MAC协议采用的有载波侦听多路访问CSMA(Carrier Sense Multiple Access)和时分多址TDMA(Time Division MultipleAddress)两种方式。CSMA方式是一种基于竞争的访问方式,当节点数量较多时,节点之间的通信竞争程度会很严重,降低网络的吞吐量,同时,节点用于信道竞争的时间甚至会超过信息包发送的时间。
当网络内节点数量众多,而信息包的长度较小时,这种情况显得尤为突出,而这往往是无线传感器网络的常有的情景。MMSN,MMAC,TMCP,和McMAC协议都属于这类方式。TDMA方式是一种基于调度的信道访问方式,时间域被分为多个固定长度的时间片,多个时间片组成一个超帧,作为一个循环周期,节点在每个超帧的特定时间片苏醒,而在其他时间片休眠。
TDMA方式使得节点在时间域按时间片分散,减少了通信竞争的程度。时间片的分配方式主要有两种,静态分配方式和动态分配方式。静态分配方式是在网络初始化时,分配给节点固定的时间片,节点在自己的时间片苏醒,而在其他时间休眠,MC-LMAC和TSMP协议属于这种方式。静态分配方式实现简单,在网络运行时不需要额外的控制信息。但是,当网络结构因为节点失效或新节点加入等因素发生变化时,这种方式不能很好地调整时间片的分配,造成网络性能的下降,限制了网络的可扩展性。动态时间片分配方式是在网络运行时,动态地给有通信要求的节点分配时间片,TMMAC和TFMAC协议属于这种方式。这种方式,可以有效地利用时间片,但是,这种方式,节点每次通信前都需要在控制信道交换控制信息,来预约时间片,增加了网络通信开销和对控制信道的依赖,不利于网络提高吞吐量和靠干扰性。

发明内容

[0006] 为克服现有技术的不足,提供一种无线传感网络的新型多信道介质访问控制方法。
[0007] 为实现上述目的,本发明采用下述技术方案:
[0008] 一种无线传感网络的新型多信道介质访问控制方法,该方法包括以下方面:
[0009] Step1:系统上电,无线传感网络初始化;
[0010] Step2:无线传感网络中的所有节点在控制信道上广播信标,同时定时在侦听信道上侦听信标;
[0011] Step3:当任一节点收到其它节点广播的信标时,该节点将会从收到的相应节点的信标中提取时钟、物理地址及超帧信息,并把这些信息存放在邻居表中;
[0012] Step4:需要发送数据的节点,以提取到的对方节点的物理地址为种子,获得对方节点的伪随机序列,并根据伪随机序列计算出对方节点所处的信道,同时转入step5继续执行;反之则等待数据,返回step4继续判断;
[0013] Step5:判断需要发送数据的节点是否成功占用射频芯片资源,如是则转入step6,反之则继续等待射频芯片资源,返回step5继续判断;
[0014] Step6:获取接收方下个超帧的苏醒时间片,到接收方的下个超帧苏醒时间片到来时,切换信道到接收方所在的信道,并进行随机延时;
[0015] Step7:随机延时后,利用射频芯片资源对当前信道的信号强度进行给定时间的检测;
[0016] Step8:如果信号强度未超过设定阈值,则向接收方发送数据,并转入step9继续执行;反之则放弃此次发送,并转入step6继续执行;
[0017] Step9:如发送数据成功,则发送数据的节点切换到自己的默认信道,释放射频芯片资源,结束通信;反之进行重复发送,如发送次数大于给定次数,则释放射频芯片资源,结束通信,如发送次数小于给定次数,则转入step6继续执行。
[0018] 所述step6中获取苏醒时间片的过程如下:
[0019] A.用超帧的长度除以给定时长,得到超帧中给定时长的个数;
[0020] B.以对方节点的物理地址为种子,获得对方的伪随机序列,伪随机序列的长度及伪随机序列中的最大值为给定时长的个数;
[0021] C.发送数据的节点根据对方节点的时间片伪随机序列,获得对方节点的苏醒时间片。
[0022] 所述苏醒时间片为节点苏醒时所在的时间片。
[0023] 所述射频芯片采用支持多信道通信的射频芯片。
[0024] 所述step2中,广播信标过程为:
[0025] a.节点首先判断是否占用射频芯片资源;
[0026] b.如果占用射频芯片资源,则切换到控制信道,发送设定时间的信标,然后释放芯片资源,等待下次发送信标;
[0027] c.如果未占用射频芯片资源,则等待射频芯片资源,转入步骤a继续执行。
[0028] 所述step2中,侦听信标过程为:
[0029] 1)节点首先判断是否占用射频芯片资源;
[0030] 2)如果占用射频芯片资源则切换到控制信道,打开射频侦听信标;反之等待射频芯片资源,转入步骤1)继续执行;
[0031] 3)在给定时间内,如果侦听到数据则更新邻居表和时间同步表,更新完成后释放射频芯片资源;反之则释放芯片资源,等待下次侦听信标。
[0032] 本发明的原理:本发明中MAC协议采用并行协商的多信道通信方式。每个节点以自己的MAC地址作为种子,根据固定的伪随机序列产生器产生一个伪随机序列,节点按这个伪随机序列在多个信道之间切换,即每个苏醒周期切换一次信道。
[0033] 如果一个序列它是可以预先确定的,并且是可以重复产生和复制的,但是它又具有某种随机序列的随机统计特性,我们就称这种序列为伪随机序列。因此可以说,伪随机序列是具有某种随机特性的确定序列。因为同样具有随机特性无法从一个已经产生的序列的特性中判断是真随机序列还是伪随机序列,只能根据序列的产生办法来判断。伪随机序列系列具有良好的随机性和接近于白噪声的相关函数,并且有预先的可确定性和可重复性。在一开始,每个节点都独立地选择一个种子,而且种子一旦选定就不再变化。把这个种子作为随机序列产生器的种子,每个节点用同样的随机序列产生器产生本节点的伪随机信道序列,由于每个节点选择不同的种子,所以每个节点的伪随机信道序列都是独立的。一般情况下,在同一个无线传感器网络中,每个节点都有一个唯一的MAC地址,可以把它作为伪随机序列产生的种子。对于随机信道序列的选择并没有严格的要求,只要是选择不同的种子使这些序列看上去是一个独立地随机序列就可以,它们的统计独立特性并不是很重要的,因为它只是为了平衡各个信道的利用率。一般情况下,没有必要用随机序列的整个周期,只要随机信道序列中的信道数比可用信道数大的多就可以。
[0034] 在多信道MAC协议中引入时间片的划分,使得网络节点可以在频率和时间两个域内分散(多信道本身在频域内就已分散),减少通信竞争程度。把一个大的big slot分成数个小时间片,通过伪随机序列选择苏醒时的小时间片,对方在发送时也要先计算所要选择的小时间片。本协议将时间域分为多个时间片,节点按伪随机序列选择不同的时间片作为自己的苏醒期,避免节点苏醒期重合而发生通信碰撞。如果不使用时间片,使节点在整个超帧周期内随机选择自己的苏醒期,也会达到使网络内节点在时间域随机分布的效果,但是这种方式节点通信碰撞的概率比较大。这里用到的伪随机序列是以节点的MAC地址为种子算出的,由于网络中所有的节点采用同一种算法,所以当其它节点获得某个节点的MAC地址信息时,就也可以算出一样的伪随机序列了。
[0035] 在每一次发送数据之前,都进行随机延时,随机延时后,利用射频芯片对当前信道的信号强度进行持续检测。检测的时间越长,漏掉其它节点发射的信号的可能性越小,故越能有效的避免信号冲突;但因为接收方苏醒的时间是有限的,所以检测时间也不宜太长,否则剩下的数据通信的时间会太短从而影响数据通信。若在这段时间内未检测到信号忙(即在当前信道未检测到达到一定强度的信号),则发送数据包;若检测到信号忙(即在当前信道检测到达到一定强度的信号),则放弃此次发送,待接收方的下一个big slot的苏醒期再尝试发送,在下一次发送前也要有随机延时并进行信号检测(即无论何时,发送数据前都要有随机延时和对当前信道的信号强度进行检测)。
[0036] 每个节点在收到数据包时,都会从数据包中取出发送方的big slot信息,并保存在邻居表中,待发送数据时用来准确计算对方的苏醒时间。
[0037] 本发明的有益效果:
[0038] 1.本MAC协议中的多信道通信方式,节点所处的信道是不断变化的,节点之间的通信可以在多个信道上同时进行,不需要在控制信道上进行信道协商,不存在控制信道的瓶颈问题,也提高了网络的可靠性。
[0039] 2.big slot小时间片的选择;通过将一个大的big slot分成数个小时间片,从而有效避免了信号冲突。
[0040] 3.碰撞后退避的机制;当检测到信道忙时,放弃此次发送,即选择了退避,这样能比较有效的保证已经产生的数据传输不受到影响,使正在进行的数据通信得以成功。
[0041] 4.big slot大小不相同的节点互相通信的机制;在同一网络中,能够根据应用的不同,让结点选择不同的big slot。比如可以让终端节点选择比较大的big slot而让路由节点选择比较小的big slot;这种情况非常适合于路由节点有电源的应用场合,能够极大的提高通信的成功率。比如电表的查表系统,电表的数据可能只需一天向路由节点上传一次,所以终端节点的big slot可以设置地比较大一些(如big slot的大小设为1小时),而路由节点可以选择比较小的big slot(如1分钟),这样对于终端节点来说,就可以做到更加节能,从而在不需要外部供电的情况下维持更长的运转时间。

附图说明

[0042] 图1是节点信道切换示意图;
[0043] 图2是按不同方式选择苏醒期的通信碰撞情况,a为采用唯一big slot机制,b为采用big slot小时间片机制;
[0044] 图3是是碰撞后退避机制示意说明图;
[0045] 图4是不同big slot不相同的节点互相通信的机制说明图;
[0046] 图5是发送数据任务程序流程图;
[0047] 图6是侦听任务程序流程图;
[0048] 图7是发信标任务程序流程图;
[0049] 图8是侦听信标任务流程图;
[0050] 图9是超帧不对齐的两个节点。

具体实施方式

[0051] 下面结合附图和实施例对本发明作进一步说明:
[0052] 本发明所需要的硬件平台是支持多信道通信的射频芯片,例如TI公司生产的CC2420,CC2520,CC1100等。在组网初期,无线传感网络中的所有节点在控制信道上广播信标,同时定时在侦听信道上侦听信标,图5-8是发送/侦听数据流程图。
[0053] 本MAC协议采用并行协商的多信道通信方式。每个节点以自己的MAC地址作为种子,根据固定的伪随机序列产生器产生一个伪随机序列,节点按这个伪随机序列在多个信道之间切换,即每个苏醒周期切换一次信道。这样,其他节点只需知道对方的MAC地址,便会在本地根据同样的伪随机序列产生器,得到对方节点的伪随机序列,进而估计出对方节点所处的信道。当节点需要与对方通信时,便在对方的苏醒期内,切换到对方的信道进行通信,通信完毕,节点则切换到自己的默认信道。如图1所示,节点A和B按自己的默认的信道切换序列在4个信道上进行切换,当节点A有信息需要发送时,他就切换到节点B所在的信道,与节点B进行通信,通信完毕后,节点A依然按自己原来默认的序列进行信道切换。
[0054] 下面介绍如何应用伪随机信道序列。在本协议中,我们所使用的信道可以按数字编号。假设一共可用的信道数为16,而我们使用1到5这5个信道,则随机序列中的数值就分布在1到5之间。如图9所示,把节点系统时间分为固定大小的超帧,假设总信道个数为5,伪随机信道序列为2、4、1、3、5,节点根据本节点所处的超帧去对应随机序列中的元素来选择信道。这样节点根据本地时间来选择本节点所工作的信道。比如当big slot大小为256ms时,若本结点在700ms时接收任务苏醒,700/256的整数部分为2,这时随机序列中的第三个随机数(0对应随机序列中的第一个随机数)就是我们要用的那个随机数,即本次接收任务要用的信道1。
[0055] 这样,其他节点只需知道对方的MAC地址,便会在本地根据同样的伪随机序列产生器,得到对方节点的伪随机序列,进而算出对方节点所处的信道。当节点需要与对方通信时,便在对方的苏醒期内,切换到对方的信道进行通信,通信完毕,节点则切换到自己的默认信道。
[0056] 在多信道MAC协议中引入时间片的划分,使得网络节点可以在频率和时间两个域内分散(多信道本身在频域内就已分散),减少通信竞争程度。把一个大的big slot分成数个小时间片,通过伪随机序列选择苏醒时的小时间片,对方在发送时也要先计算所要选择的小时间片。在图2中:如图2(a)所示,当节点在整个超帧周期内随机选择自己的苏醒期时,由于节点苏醒期的边沿是不对齐的,因此节点不仅会在苏醒期完全重合时发生完全碰撞,而且当苏醒期部分重合时还会发生不完全碰撞,这都会造成通信失败。而划分时间片后,节点的苏醒期是对齐的,只有在节点选择同一个时间片时才会发生完全碰撞的情况,如图2(b)所示,而不会出现不完全碰撞的情况。因此,采用时间片的方式,比按随机方式选择苏醒期可以减少节点碰撞的概率。
[0057] 本协议将时间域分为多个时间片,节点按伪随机序列选择不同的时间片作为自己的苏醒期,避免节点苏醒期重合而发生通信碰撞。一个big slot中小时间片(小时间片的含义为给定的时长)的数量的计算方法是:用big slot的大小除以小时间片的长度,得到的整数(该整数为舍去小数后的整数)部分就是一个big slot中小时间片的个数。比如当big slot是256ms,小时间片大小是10ms时,小时间片的个数就是25,因为256/10得到的整数部分为25。结点在每次接收任务苏醒时都会计算下次在第几个小时间片苏醒,计算所采用的伪随机序列同计算随机信道时用的算法是一样的,但是是不同的伪随机序列。伪随机序列中的最大值由小时间片的个数来决定。如小时间片个数是25时,伪随机序列中的数值就分布在1到25之间。这里用到的伪随机序列是以节点的MAC地址为种子算出的,由于网络中所有的节点采用同一种算法,所以当其它节点获得某个节点的MAC地址信息时,就也可以算出一样的伪随机序列了,所以当发送方要给接收方发送数据时,发送方会先计算出接收方在哪个小时间片苏醒,待到接收方苏醒时,发送方才会准时地发送数据。
[0058] 在每一次发送数据之前,都进行随机延时(0-2.5毫秒),随机延时后,利用射频芯片(如CC2420、CC2520)对当前信道的信号强度进行持续2毫秒的检测。检测的时间越长,漏掉其它节点发射的信号的可能性越小,故越能有效的避免信号冲突;但因为接收方苏醒的时间是有限的,所以检测时间也不宜太长,否则剩下的数据通信的时间会太短从而影响数据通信。若在这段时间内未检测到信号忙(即在当前信道未检测到达到一定强度的信号),则发送数据包;若检测到信号忙(即在当前信道检测到达到一定强度的信号),则放弃此次发送,待接收方的下一个big slot的苏醒期再尝试发送,在下一次发送前也要有随机延时并进行信号检测(即无论何时,发送数据前都要有随机延时和对当前信道的信号强度进行检测)。
[0059] 在图3中:在节点A的苏醒期间,节点B和节点C要同时给节点A发送数据。节点B和节点C都要经历一段随机延时,在图3中,节点B的此次的随机延时相比较节点C短一些,于是它率先进行了信号强度检测,这时由于没有任何节点在发送信号,节点B在检测信号强度期间检测不到达到阈值强度的信号,于是与节点A进行了通信。在节点A与节点B进行通讯期间,度过了随机延时的节点C正在进行信号强度检测,这时它检测到了节点A与节点B之间通讯的信号,此信号在正常情况下信号强度会超过阈值,于是节点C放弃此次与节点A通讯的机会,等待节点A下次苏醒再与其通讯。而由于节点C放弃了此次通讯的机会,节点A和节点B之产的通讯就不会受到节点C的干扰。否则,在节点A与节点B通讯期间,节点C会向节点A发送数据,而此时无论节点B还是节点A收到节点C发送的数据,都会极大的损害节点B和节点A之间的通讯质量,从而造成节点B和节点A之间此次通讯的失败,而节点C本身与节点A之间的通讯也会受到影响,从而失败;于是B和C都会在下一次A苏醒的时候再次争夺对A的通讯权,而大部分情况下会再次失败,如此恶性循环下去,会极大的降低通讯的成功率。所以从图3中我们可以清晰地看出碰撞后退避的机制会极大的提高通信成功率。在这里我们用到的随机延时是以取本地时钟时间的最后一位获得的,所以这里的随机是绝对的。
[0060] 在图4中:节点B的big slot的大小是节点A的两倍,节点C的big slot的大小是节点B的两倍。首先它们都会在控制信道上广播信标beacon,也会定时在侦听信道上侦听beacon,当一个节点收到另一个节点广播的beacon时,就会从beacon包中提取出对方当前的时钟、对方的地址以及big slot的大小等信息,并把这些信息存放在邻居表中。所以一段时间后每个节点在发送数据时都会有数据接收方的时钟信息、通过地址计算出的随机序列信息以及bigslot信息,并能由此计算出数据接收方的苏醒时间,所以节点间相互的通讯总能保证成功。
[0061] 本发明实现了big slot大小不相同的节点互相通信的机制;在同一网络中,能够根据应用的不同,让结点选择不同的big slot。比如可以让终端节点选择比较大的big slot而让路由节点选择比较小的big slot;这种情况非常适合于路由节点有电源的应用场合,能够极大的提高通信的成功率。比如电表的查表系统,电表的数据可能只需一天向路由节点上传一次,所以终端节点的bigslot可以设置地比较大一些(如big slot的大小设为1小时),而路由节点可以选择比较小的big slot(如1分钟),这样对于终端节点来说,就可以做到更加节能,从而在不需要外部供电的情况下维持更长的运转时间。
[0062] 图5是发送数据任务程序流程图。第一,程序从数据发送消息队列中取需要发送的数据,此数据只包含目的地址和数据内容,所以需要对数据进行打包,包括节点本地MAC地址、网络ID、数据包序号等信息。第二,再占用射频资源。射频资源只有一个,同一时间它只能为一个任务服务,为了使各个任务共享此资源且不发生冲突,本文用一个二进制信号量来表示射频资源,任何任务需要应用射频资源时,都需要占用它,用完以后再释放资源。第三,计算邻居节点下一超帧到来的时间以及所工作信道,调用任务延时函数,等到邻居节点下个超帧开始,切换工作信道,发送数据。最后,释放射频资源。程序流程图如图5所示。
[0063] 图6是侦听数据任务程序流程图。侦听任务是节点周期性的苏醒,侦听是否有其它节点发往本节点的数据。由于节点发送数据优先级大于接收数据优先级,所以,当节点有数据发送时苏醒,则节点放弃侦听发往本节点的数据。程序流程图如图6所示:1)节点首先判断是否占用射频芯片资源;2)如果占用射频芯片资源成功,则计算当前工作信道,同时切换到控制信道,打开射频侦听10ms;反之则转入步骤4);3)在10ms内,如果侦听到数据则回复确认信息,且更新邻居表和时间同步表,更新完成后释放射频芯片资源转入步骤4);反之则释放芯片资源,转入步骤4);4)计算下一个超帧,并进行任务休眠。
[0064] 图7发信标任务程序流程图。发信标任务主要有两个方面的作用,一、新加入网络的节点可以找到自己周围一跳范围内的邻居。二、如果很长一段时间内各个节点之间没有数据通信,信标帧可以使各个节点之间时间同步,不会因为时钟晶振的差别,造成时间同步出现问题。当发信标时间到时,该任务在一段时间内连续发送信标帧,然后进入任务延时状态,等待下次发送信标到来。程序流程图如图7所示:节点首先判断是否占用射频芯片资源;如果占用射频芯片资源成功,则切换到控制信道,发送信标100ms,然后释放芯片资源,等待下次发送信标;如果未占用射频芯片资源,则等待射频芯片资源。
[0065] 图8是侦听信标任务流程图。侦听信标任务主要负责寻找周围邻居,并把邻居加入到邻居表和时间同步表中,并且更新时间同步表,使邻居和本节点时间同步,同时删除已经脱离网络的邻居。该任务在侦听信标时间到时,进入控制信道并打开射频一段时间(20ms),接收到信标后,更新邻居表和时间同步表。最后检查时间同步表中是否有需要删除的邻居。程序流程图如图8所示:1)节点首先判断是否占用射频芯片资源;2)如果占用射频芯片资源成功则切换到控制信道,打开射频侦听信标;反之等待射频芯片资源,转入步骤1)继续执行;3)在给定时间内,如果侦听到数据则更新邻居表和时间同步表,更新完成后释放射频芯片资源;反之则释放芯片资源,等待下次侦听信标。