zigbee关联请求入网

时间秒杀一切 提交于 2020-02-01 20:23:13

 

2、任何一个zigbee模块要加入到某个网络,一定要有一个处于该网络里的节点作为介绍人,并且这个介绍人不能是终端节点。介绍人节点为被介绍人节点的父节点,被介绍加入的节点称为子节点。二者是父子节点关系。

3、有三个模块:A模块下载了协调器功能代码;B模块下载了路由器功能代码;C模块下载了终端功能代码;

当A没上电,而B、C上电的时候,会一直去寻找网络请求加入网络;直到A模块上电以后,先去创建一个网络确定PANID,以及设定自己的ID为0x0000,然后把B、C加入到网络中来,加入网络可以分成两种:1)、下载了终端代码的C模块先加入网络,那么C模块的父节点肯定是A模块;C入网后,B又开始入网,因为C不能作为介绍人,那么B的父节点只能是A模块。网络拓扑结构为

2)如果是B节点先入网,那么其网络拓扑结构有两种:

4、当被加入节点有多个介绍人可以选择加入的时候,根据相对于被加入节点的信号强度等一些其他的参数来选择最佳的介绍人节点。

5、zigbee网络组建之后,网络里的节点可以进行相互通信,其通信方式有四种:单播、广播、组播和绑定。

6、入网前:路由器都做了些什么事儿?

一直在发上面这个帧。

TYPE:为CMD命令帧格式。是信标请求帧,Beacon request;它的作用是,让在它附近的所有具备介绍人资格的节点,都回复信标帧,这些返回的信标帧被这个想要加入的无线模块拿到,通过这些信标帧,选出最佳介绍人节点,请求加入。

入网前:终端都做了些什么事儿?

和路由器做了相同的事情。

那么上电后,协调器做了些什么事儿?

首先也发送了一帧信标请求帧,发送这一帧也会得到周围具备介绍人资格的节点回复信标帧,但是协调器拿到回复的信标帧是拿来判断周围的环境情况,为创建网络做准备的。

当协调器创建成功以后,就会发送一个数据帧,这个帧里面可以看到协调器的地址0x0000,以及PANID,可以把这个帧叫做网络连接状态帧。

从入网(因为只有路由器和终端才会有)到稳定工作

前提是网络存在,即协调器一直存在:

路由器:

第一帧:为协调器发出的网络连接状态帧,表明协调器稳定工作,与路由器入网无关。

第二帧:为路由器发出的信标请求帧,用于发现周围的网络,请求加入。

第三帧:协调器模块发出的信标请求帧,路由器模块在拿到这个帧之后,可以得到协调器模块相对于它自己的信号强度,判断是不是最佳介绍人。

第四帧-第五帧以及第六帧与第七帧在重复第二帧和第三帧。这是必须要重复的!

补充:在zigbee网络里面如果一个模块发出的射频帧,非常明确的指定接收目标节点的地址,那么目标节点接收到这个帧以后,硬件会自动回复一个ACK,表明已经收到了。

TI在出厂CC2530芯片,会在flash上固化一个8个字节的地址,这个地址也是唯一的,称为MAC地址或者称为IEEE地址,以及物理地址。

第八帧:是路由器模块发给协调器模块,这个帧的作用是,在前面路由器模块收到了协调器模块的信标帧,通过信标帧判断协调器是当前路由器模块的最佳介绍人,路由器模块发送这一帧高速协调器,你是我当前的最佳介绍人,请你从当我入网的介绍人,介绍我入网,并且在这个帧携带了自己的MAC,这个MAC地址是介绍人模块(协调器模块)给被介绍人模块(路由器模块)分配网络的地址的依据。

第九帧:是协调器模块回复给路由器模块的ACK,表明我已经收到了你发过来的帧。

第十帧:是路由器模块发给协调器模块的帧,作用是请求协调器,把你根据我前面发给你的MAC地址给我分配的网络地址发给我,是一个数据请求帧

第十一帧:协调器回复给路由器的ACK表明收到了路由器发过来的帧。

第十二帧:协调器把为路由器分配好的网络地址发给路由器。而这个帧需要非常明确的发给路由器模块,但路由器模块还不知道自己的网络地址是多少,所以在指定目标地址的时候用MAC地址,

第十三帧:在路由器模块收到根据自己的MAC地址收到了协调器发过来分配给自己的网络地址,硬件自动回复ACK,表明已经收到了。

第十四帧:入网宣告帧,通过这个帧告诉当前网络里所有节点,我入网了,我的网络地址是0xE9EB。

第十五帧:是协调器模块收到了路由器模块发的入网宣告帧以后,转发的帧。

第十六帧和第十七帧:是协调器模块和路由器模块在工作稳定时,发出的网络连接状态帧。协调器和路由器在入网后,稳定工作时的行为是,每隔一段时间发一次网络连接状态帧,默认时间是15s(代码中可调)。

终端入网后,到稳定工作

终端的入网过程和路由器的入网过程,所有的行为都是一样的。

入网稳定后,终端会给父节点发送数据请求帧:

第十六帧:终端节点发送给他的介绍人节点(父节点)协调器的数据请求帧(间隔发送),为了告诉它的父节点,我还在线。

第十七帧:协调器在收到终端发来的帧,硬件会自动回复的ACK。

除了USBDongle可以抓包外,也可以用zigbee模块来抓包!

首先,将仿真器一头插到电脑上,一头插在学习板上,把数据包软件Packet Sniffer启动,选中

信道启动:

一样也可以抓到无线数据包,其结果:

这样可以抓包,但是会把板子里面的程序给破坏掉,而且这样抓包有时候不是很灵。

zigbee帧结构

http://www.cnblogs.com/ac-carrot/archive/2012/07/30/2614474.html

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!