实验十三: 树型网络拓扑
13.1实验目的
1. 了解网络拓扑的基本概念;
2. 掌握星网拓扑的实现过程;
3. 学习星网拓扑的编程思想。
13.2 实验环境
1. 硬件平台:ZigBee模块5个(1个Status,4个Data)、ZB-LINK调试器、USB3.0数据线、USB方口线两根、RJ11连接线;
2. 软件平台:WinXP/Win7、IAR开发环境、SmartRFFlashProgrammer、ZigBeeSensorMonitor。
13.3 实验原理
ZigBee有三种网络拓扑,即星形、树形和网状网络,这三种网络拓扑在Z-Stack协议栈下均可实现。星形网络中,所有节点只能与协调器进行通信,而他们相互之间的通信是禁止的;树形网络中,终端节点只能与它的父节点通信,路由节点可与它的父节点和子节点通信;网状网络中,全功能节点之间是可以相互通信的。
在Z-Stack中,通过设置宏定义STACK_PROFILE_ID的值(在nwk_globals.h中定义)可以选择不同控制模式(总共有三种控制模式,分别为HOME_CONTROLS、GENERIC_STAR和NETWORK_SPECIFIC,默认模式为 HOME_CONTROLS),再选择不同的网络拓扑(NWK_MODE),也可以只修改HOME_CONTROLS的网络模式
(NWK_MODE),来选择不同的网络拓扑,由于网络的组建是由协调器来控制的,因此只需修改协调器的程序即可。此外,可以设定数组CskipRtrs和CskipChldrn的值(在nwk_globals.c中定义)进一步控制网络的形式,CskipChldrn数组的值代表每一级可以加入的子节点的最大数目,CskipRtrs数组的值代表每一级可以加入的路由节点的最大数目,如在树状网络中,定义 CskipRtrs[MAX_NODE_DEPTH+1]=
{1,1,1,1,1,0},CskipChldrn[MAX_NODE_DEPTH+1]={2,2,2,2,2,0},代表每级最多允许2个子节点加入,其中最多1个路由节点,剩余的为终端节点。本实验已通过宏定义(在工程options中的preprocessor中定义)设定了数组的大小。
配置网络拓扑为树状网络后,启动协调器节点,协调器节点上电后进行组网操作,再启动路由节点和终端节点,路由节点和终端节点上电后进行入网操作,成功入网后周期的将父节点的短地址,自己的节点信息封装成数据包发送给sink节点,sink节点接收到数据包后通过串口传给PC,从PC机上的ZigBeeSensor Monitor程序查看组网情况
13.3.1 电路分析与程序配置
本节实验使用的是LED接口电路,Uart及RF接口,原理图如下:
图 5.4.1 LED接口电路
图5.4.2Uart与RF接口
本节的程序配置为协调器实验工程编译选项中的各编译项,路由及终端的编译选项亦可参照:Project→Options→C/C++ Compiler→Preprocessor→Defined Symbols中的内容。
HOLD_AUTO_START
BUILD_ALL_DEVICESREFLECTOR
NV_INIT xNV_RESTORE ZTOOL_P1 MT_TASK MT_SYS_FUNC xMT_SAPI_FUNC
xMT_SAPI_CB_FUNCTREETEST
//不要自动启动ZDApp实践处理循环
//编译所有设备
//使能绑定
//在设备重启后载入基本的NV项
// x表示不加入编译选项
// Z-Tool工具使能
//协议栈下的串口层支持