ZigBee无线传感器毕业论文
上电 初始化 发送入网信标要求 N 收到信标响应 Y 最大重试次数? 发送连接请求 Y Y 入网失败 连接超时? N 连接响应解析 N 入网失败 响应正确? Y 入网成功 N 入网失败
图3.5 终端节点入网流程
当收到节点的入网请求后,协调器的MAC层会将分配给子节点的16-bit网络地址与其IEEE 64-bit网络地址存入AddressMap,并在NeighborEntry中加以记录。随后,将6-bit网络地址包含在确认信息中返回终端节点。
在协调器接收到终端节点的数据信息后,协调器通过串口向计算机发送数据,串口传输设置为:波特率为57600,8位数据位,1位起始位,1位停止位,无奇偶校验,无流量控制。
(2)终端节点的入网实现
终端节点初始化后采用aplJoinNetwork()函数进行入网,该函数启动NWK层的网络服务NWK_JOIN_NETWORK,通过该项服务向协调器发起入网请求。当接收到协调器的确认信息后,终端节点将分配给自身的16-bit网络地址储存,同时,也将协调器的地址保存在父节点地址存储区中。然后,终端节点会向协调器发送一组我们既定的信息,进行数据传递。
22
ZigBee无线传感器毕业论文
3.3.2 ZigBee簇树网的组网设计与实现
在前一节中,描述了星型网的组建,网络中各种节点的功能以及各个节点间是如何交互的。星型网覆盖的范围以及容纳的节点数是有限的,在节点数增多以及要求覆盖面积更广的情况下,星型网的局限性就表现出来了;在这种情况下,簇树结构的Zigbee拓扑网络应运而生,如图3.6所示,是簇树网拓扑图。
EPC R C E R R E R E E R E E
E C:协调器 R:路由节点 E:终端节点
图3.6 簇树网拓扑图
与星型网相比,簇树网多出一个功能节点—路由节点,它的作用是连接协调器与超出协调器影响范围的终端节点,起到中继桥梁的作用。路由节点可以与终端节点组建小型星型网,这个星型网是以路由节点为中心以终端节点为子节点的。与标准星型网不同的是,在以路由节点为中心的小型星型网络中,路由节点并不会向终端节点发出任何控制命令,它只起到一个中继的作用,实际的控制命令是由协调器发出的。这样通过路由节点的连接中继作用,协调器可以控制超出它的能量覆盖范围的终端节点。
理论上,包括协调器在内的ZigBee网络规模可以达到65536个节点,本方案中所设计的簇树网的网络结构由1个协调器、3个路由节点和若干个终端节点组成。由于我们设计的为一个静态网络,因此,对于路由节点和终端节点不存在角色转换问题,即我们将所有终端节点看作是精简功能器件(RFD),将路由节点看作是全功能器件(FFD)这在程序编译下载时就己经确定。下面将分别介绍三种节点的设计思想。
23
ZigBee无线传感器毕业论文
(1)协调器的设计
簇树网中,协调器的设计思想与星型网中基本相同,所不同的是,协调器会通过计算为其子节点分配网络16-bit地址。在簇树网中,每个设备都有一个相关深度,代表该设备到达协调器的最小跳数。如协调器的深度为0,它的一级子节点深度为1。在ZigBee中,节点可以通过最大簇树深度MaxDepth(Lm),最大节点数 MaxChildren(Cm)和每一节点允许的最大路由节点数MaxRputersPerParent(Rm),决定对于给定深度d每个路由子节点可拥有的子节点地址大小Cskip(d)。
路由子节点16-bit网络地址的分配使用Cskip(d)作为地址偏移量。父节点为第一个路由子节点分配的网络地址比自身地址大1。之后加入的路由子节点地址与其相差Cskip(d)。
如果设备的Cskip(d)为0,则该设备为终端节点,不具备拥有子节点的能力。对于终端节点,网络地址的分配是根据入网顺序决定的,具体公式如3-1式:
A?Aparent?Cskip(d)*Rm?n (3-1)
其中1?n?(Cm?Rm),Aparent,代表父节点地址。
由上述过程可知,在簇树网的设计中,协调器需在其初始化阶段将最大簇树深度MaxDepth(Lm),最大子节点数MaxChildren(Cm)和每一节点允许的最大路由节点数MaxRputersPerParent(Rm)配置清楚,以便为子节点分配地址提供参数。如表3-4所示,为簇树网中协调器的网络参数配置情况。
表3-4 协调器网络参数配置
参数名称 网络信道号 静态PAN ID 接收缓冲区大小 最大簇树深度 最大子节点数 最大路由点数 默认值 20 0x1347 1024 5 17 4 备注 为11-26中任意值均可 为0-0xFFFF中任意值 Byte (2)路由节点的设计
路由节点在簇树网中担任中继任务,主要执行网络搭建和数据中继操作,下面我们将从这两方面考虑路由节点的设计。
①路由节点的网络搭建设计
由于采用上述地址分配方法,在网络地址分配伊始,网络的路径就已经确立,
24
ZigBee无线传感器毕业论文
路由节点只需储存父节点,并在邻居列表中存储子节点信息即可,因此通常意义上的路由表在簇树网中可以省略。
在网络搭建方面,路由节点实际的动作即为入网和组网,即集合协调器和终端节点的网络组建方面的功能。
当路由节点成功入网后,会得到16-bit网络地址以及父节点的簇树深度,路由节点保存自身的簇树深度等于父节点深度加1,之后路由节点计算出Cskip(d)的值,再根据自身网络地址就可以计算出其父节点的网络地址。路由节点也可以根据目的地址,计算出目的节点距离自己的跳数,这些参数在终端节点可以相互通信的情况下是十分必要的,但是本方案中由于终端节点间相互不通信,所以不必要做出计算。
当有子节点加入路由节点时,路由节点会根据配置计算该子节点的网络地址,并告知该子节点。如表3-5所示为d=1-5的Cskip(d)的值域表,其中,最大簇树深度MaxDepth(Lm)=5,最大子节点数MaxChildren(Cm)=17,最大路由节点数MaxRputersPerParent(Rm)=4。在程序中,我们将此表做为配置信息放入配置文件中。
表3-5 Cskip(d)值域表
网络深度,d 1 2 3 4 5
Cskip(d) 1446 358 86 18 0 25
ZigBee无线传感器毕业论文
②路由节点的中继传输设计
开始 收到信息包 MAC层解析 数据信息? Y NWK层解析 N 其他处理 目的节点为自身? N NWK层打包 Y 其他处理 MAC层打包 发送
图3.7 路由节点数据中继流程
路由节点在数据传输过程中获取到数据信息后,若目的地址不为自身则会将数据信息转发给其父或子节点,否则进一步的数据包解析来获取数据负载,如图3.7所示,路由节点在NWK层获知数据的目的地址,如需数据中继,则路由节点将数据信息重新打包发送出去。
(3)终端节点的设计
簇树网中,终端节点入网设计流程和数据传输设计流程基本与星型网中相同。需要注意的是:在入网过程中,父节点的选定是节点依据从所收到的确认信息探测到的能量大小来判定的,终端节点会选择能量较多的全功能器件(FFD)作为其父节点;在终端节点加入某一路由节点后,终端节点会发送一条设备声明给协调器,表明该节点己加入协调器所组织的网络,尽管可能不在协调器的能量距离之内;在数据传输过程中,终端节点需要将目的节点地址置为NULL,表明数据是通过路由节
26