ZigBee协议栈开发(四)

1、要对ZigBee无线局域网有清晰的认识,明白ZigBee网络的组建过程中,网络工作时ZigBee无线模块在空气中数据交换过程中进行了什么工作。

2、ZigBee无线局域网中,节点按照在网络里的功能划分为协调器,路由器,终端。他们的硬件可以完全一样,之所以在网络中表现不同的功能,是因为下载了不同功能的代码。

3、下载了路由器和终端代码的模块,上电后第一件事是去寻找网络,请求加入;网络的创建由下载了协调器代码的模块完成。网络创建的标志是确定下来PANID,协调器地址永远为0x0000,。任何网络第一个节点都是协调器,且一个网络只能有一个协调器。

4、任何一个ZigBee模块要加入到某个网络,一定要一个处于该网络的节点作为介绍人,并且这个介绍人不能是终端节点,在加入网络以后,介绍节点和被介绍节点互为父子关系,介绍人节点是被介绍节点的父节点。例如协调器组建网络后,若终端先加入网络,则终端是协调器的子节点,路由器只能经由协调器加入网络,路由器也是协调器的子节点;而若路由器

先加入网络,那么终端既可以经由协调器加入网络,作为协调器的子节点,也可以经由路由器加入网络,作为路由器的子节点。具体选择经由哪个节点,要检测哪个节点的信号强度更高,经由信号强度更高的节点加入网络。

5、ZigBee网络组建之后,网络里的节点可以进行相互通信,通信方式有四种:

单播

广播

组播

绑定(实际开发基本不用)

6、入网前

路由器:在入网前一直发送信标请求帧,它的作用是让在它附近的所有具备介绍入网资格的节点回复信标帧,这些信标帧被这个想要加入的无线模块拿到,选择最优的节点经由加入网络。

终端:它在入网前的行为与下载了路由器代码的模块在入网前的行为完全一样。

协调器:建网前也发送了一帧信标请求帧,从而也会得到其余节点的回复信标帧,但协调器拿到此信标帧并不是为了加入其它网络,而是为了判断当前区域的网络情况,从而建立一个不同于其它网络的唯一的最优网络。当协调器创建网络成功后会发送个数据帧,这个帧里可以看到协调器地址以及PANID,可以把这个帧叫做网络连接状态帧。

7、从入网到稳定工作

路由器:

(1)协调器发出的网络连接状态帧,表明协调器稳定工作,与路由器入网无关

(2)路由器模块发出的信标请求帧,用于发现周围的网络,请求加入。

(3)协调器模块发出的信标请求帧,路由器模块拿到此帧后,判断其信号强度

(4)之后再重复两次上面的两个过程

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

TI在CC2530出厂时在FLASH上固化了一个8个字节的编号唯一的值,这个值是芯片的MAC(物理)地址。

(5)是路由器模块确定好最好的介绍节点后,发给协调器一个命令帧,,这个  命令帧就相当于告诉了介绍节点将要通过你加入网络,这个帧中携带了路由器模块的MAC地址,这个地址是介绍模块给被介绍节模块分配网络地址的依据。

(6)协调器模块硬件回复给路由器模块一个ACK,表明已经收到上一帧。

(7)路由器模块又发给协调器模块一个数据请求帧,作用是请求协调器把根据其MAC地址分配的网络地址发回给路由器模块。

(8)协调器回复给路由器的ACK表明收到了路由器发来的数据请求帧。

(9)协调器将分配给路由器的网络地址发给路由器,此时由于路由器还不知道自己的网络地址,而又需要明确发给路由器,因此此时目标地址用MAC地址。

(10)路由器模块根据自己的MAC地址收到了协调器发来的分配给自己的网络地址,硬件回复一个ACK,表明已经收到。

(11)路由器确定好自己的网络地址后,发出一个入网宣告帧,告诉网络中的所有节点它已经入网,而且其地址为现在的网络地址。

(12)协调器模块收到路由器的入网宣告帧后会转发这个入网宣告帧告诉所有节点路由器的加入和它的网络地址。

(13)之后协调器和路由器一起在工作稳定时,每隔一段时间发出一次网络连接状态帧。默认时间为15s。

终端:与路由器的入网过程中所有行为完全一样,只是在入网完成之后不会发送网络连接状态帧,而是会不断发送数据请求帧到它的父节点,父节点收到后回复ACK,这是为了告诉父节点终端一直在线,可以进行数据交换。

猜你喜欢

转载自blog.csdn.net/x603560617/article/details/80212048