zigbee
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
栈网络拓扑实验
Zigbee协议栈网络拓扑实验
由Zigbee协议得知,Zigbee协议定义了3种网络拓扑协议,分别是星型、树型、Mesh(网状型)。其中树型、Mesh型属于点对点的网络拓扑。他们各自有着以下特点:
星状网络:所有节点只能与协调器进行通信。
树状网络:终端节点智能与父节点通信,路由节点可与子节点和父节点通信。
Mesh网络:所有节点都是对等实体,任意两点之间都可以通信。 1、实验内容
为了实现上功能,整个应用程序应该具备以下基本功能:
(1)、协调器自动建立一个网络;
(2)、建立网络后,工作于采集模式,使用串口与PC机相连;
(3)、其他路由节点和终端节点自动发现该网络,并加入该网络;
(4)、上位机运行Z-Sensor Monitor软件进行解析协调器通过串口发来的信息;
(5)、解析后的数据,显示在PC屏幕上。
2、实验条件
(1)、在PC机上(Win XP 以上的32位系统平台)正确安装IAR Embedded Workbench for MCS-51 V7.51A集成开发环境;
(2)、正确安装Z-stack协议栈;
(3)、FANTAI_Zigbee开发评估板2个(插有FANTAI_Zigbee核心板);
(4)、FANTAI_Zigbee传感器节点4个(插有FANTAI_Zigbee核心板);
(5)、Z-Sensor Monitor上位机软件;
(6)、CC-Debugger多功能仿真器1个;
(7)、USB线1根,串口线1根。
3、实验原理
本实验通过修改SensorDemo实验,使用IT公司官方软件Z-Sensor Monitor,通过串口连接网络中的协调器,在软件界面上显示整个zigbee网络的拓扑结构。 4、实验内容
4.1、改造SensorDemo工程
由于官方工程中协调器和路由器是一个
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
需要通过方向键来进行设置并且各个节点都需要通过评估板上的方向按键主动触发
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
,而我们的FANTAI_Zigbee传感器节点没有此按键,所以我们通过改造他来实现协调器、路由器的分离并且路由器和终端节点在一进入网络之后立即主动发信息给协调器无需再使用按键。
将光盘提供的ZStack-CC2530-2.2.0-1.3.0协议栈源码拷贝至您的工作目录,然后依次打开Project->zstack->Samples->SensorDemo->CC2530D中的SensorDemo.eww工程文件。
我们可以查看左边WorkSpace工具栏中只有传感器节点(SensorEB)和协调器节点(CollectorEB),因此我们需要从协调器节点(CollectorEB)中继承出一个路由
器节点。
在Project菜单下找到Edit Configurations,进去之后点击New按钮,弹出New Configuration对话框,如下图所示填写,点击OK:
这时应为路由器节点方案是从协调器节点方案继承出来的所以配置是完全相同的。
选择并选中整个方案,打开Options选项,左边选择点开preprocessor选项卡在Defined Symbols那里加多一个编译选项MY_TYPE_COLLECTOR
在sapi.c文件的 SAPI_Init()函数,找到下面语句:
afSetMatch(sapi_epDesc.simpleDesc->EndPoint, FALSE);
修改为:
#ifdef MY_TYPE_COLLECTOR
afSetMatch(sapi_epDesc.simpleDesc->EndPoint, TRUE);//FALSE
#else
afSetMatch(sapi_epDesc.simpleDesc->EndPoint, FALSE);//FALSE
#endif
void zb_HandleOsalEvent( uint16 event ) 找到DemoCollector.c文件的函数
将if( event & ZB_ENTRY_EVENT )内的代码修改为以下内容:
if( event & ZB_ENTRY_EVENT )
{
// blind LED 1 to indicate starting/joining a network
HalLedBlink ( HAL_LED_1, 0, 50, 500 ); HalLedSet( HAL_LED_2, HAL_LED_MODE_OFF );
if ( appState == APP_INIT )
{
#ifdef MY_TYPE_COLLECTOR
logicalType = ZG_DEVICETYPE_COORDINATOR; zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, sizeof(uint8),
&logicalType);
initUart(uartRxCB);
#else
logicalType = ZG_DEVICETYPE_ROUTER; zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, sizeof(uint8),
&logicalType);
#endif
}
// Start the device
zb_StartRequest();
}
DemoSensor.c 和Democollector.c文件,找到void zb_BindConfirm( uint16
commandId, uint8 status )里的
if ( reportState )
{
.....
}保留花括号里面的语句
将这行注释掉。
到此SensorDemo工程改造完毕,路由器和终端节点在与协调器成功绑定之
后便会立刻发送报告信息,不需要按键触发了。
4.2、星状网络实验
将改造好的SensorDemo工程拷贝出一份至同级目录下改名为StarDemo并进入打开该工程。
从左边的工作目录选择NWK层点开nwk_globals.h文件,可以看到从108行到111行定义了3种网络类型
再向下看113行-118行z-stack协议自己定义了4种方案,这跟我们关系不大 我们使用默认的HOME_CONTROLS
注意125行-129行,这里默认定义了使用的方案为HOME_CONTROLS
接下来我们进入HOME_CONTROLS的方案配置里面143行-153行
这里定义了Zigbee网络的类型,最大深度、是否使用安全协议等等,我们将#define NWK_MODE改为NWK_MODE_STAR。这样网络类型就被我们修改成了星状网络。
4.2、树状网络实验
将改造好的SensorDemo工程拷贝出一份至同级目录下改名为TreeDemo并进入打开该工程。
由上面星状网络可知,首相将nwk_globals.h中145行中的#define
NWK_MODE该为NWK_MODE_TREE。并且为了提高演示效果,我们打开nwk_globals.c文件找到133行。
这里我们发现有2个数组CskispRtrs和CskipChldrn。CskispRtrs定义了每一层绑定最大的路由数量,CskipChldrn定义了每一层绑定终端的最大数量。这里我们分别把他们改成3和5以便于观察实验现象。
4.2、Mesh网络实验
Mesh网络:所有节点都是对等实体,任意两点之间都可以通信。
由上面的定义可以得知,Mesh网络是一种非常开放、随意的网络,所以他的网络拓扑是任意组合,算法是z-stack协议栈已经做好的打包成库的形式提供给我们的,我们只需要定义好NWK_MODE为,,,_MODE_MESH并且在nwk_globals.c里面给每层设置足够多的节点数量就行了,由于SensorDemo本身就是用的Mesh网络拓扑结构,所以我们无需任何设置。直接烧写改造好的SensorDemo实验即可 5、实验结果
5.1、星状网络实验结果
本次实验我们用一块FANTAI_Zigbee开发评估板做协调器,一块FANTAI_Zigbee开发评估板和2块FANTAI_Zigbee传感器节点作为路由器,2块FANTAI_Zigbee传感器节点作为终端节点烧写。
打开StarDemo的工程文件,选择,并将CCdebugger与PC机和FANTAI_Zigbee开发评估板连接好。点击将程序
下载
课程表模板下载资产负债表下载英语单词下载学习机资料下载励志文章下载
进单片机中。等待程序下载完成点击中的运行程序后,拔掉下载线。这时会看到评估板上LED1、3常亮而LED2闪烁。表示协调器建立网络完毕。此时点击方向键的Right键,发现LED2灯常亮。表示协调器进入采集模式。等待路由和终端节点报告。
将协调器开发板的串口与上位机的串口相连,打开上位机的Z-Sensor Monitor软件。
选择好串口后点击。看到现象:
说明协调器和上位机建立通讯,图中的红色为协调器节点。
打开到工程文件选择,然后分别烧写到1个FANTAI_Zigbee开发评估板,和2个FANTAI_Zigbee传感器节点上。(此处烧写过程参考协调器)。(有些时候路由器由于某些原因没有搜索到协调器,无法加载到网络,自己作为了协调器,遇到这种情况重新烧写即可。)
路由器开启时会自动寻找协调器的网络(大约5S左右)。并加入进去。
上图为依次添加上去的3个路由节点。
最后选择,依次烧入2个FANTAI_Zigbee传
感器节点中。烧写完毕启动节点,他们会自动寻找网络并且加入(大约5S左右)。
上图为2个终端节点加入网络。
由此实验我们可以看出星型网络结构中,所有节点只能和协调器本身通信。
5.1、树状网络实验结果
本次实验我们用一块FANTAI_Zigbee开发评估板做协调器,一块FANTAI_Zigbee开发评估板做路由器,4块FANTAI_Zigbee传感器节点作为终端节点烧写。
打开TreeDemo的工程文件,选择,并将CCdebugger与PC机和FANTAI_Zigbee开发评估板连接好。点击将程序下载进单片机中。等待程序下载完成点击中的运行程序后,拔掉下载线。这时会看到评估板上LED1、3常亮而LED2闪烁。表示协调器建立网络完毕。此时点击方向键的Right键,发现LED2灯常亮。表示协调器进入采集模式。等待路由和终端节点报告。
将协调器开发板的串口与上位机的串口相连,打开上位机的Z-Sensor Monitor软件。 选择好串口后点击。看到现象:
说明协调器和上位机建立通讯,图中的红色为协调器节点。
打开到工程文件选择,然后分别烧写到1个FANTAI_Zigbee开发评估板,和2个FANTAI_Zigbee传感器节点上。(此处烧写过程参考协调器)。(有些时候路由器由于某些原因没有搜索到协调器,无法加载到网络,自己作为了协调器,遇到这种情况重新烧写即可。)
路由器开启时会自动寻找协调器的网络(大约5S左右)。并加入进去。
上图为添加上去的1个路由节点。
最后选择,依次烧入2个FANTAI_Zigbee传
感器节点中。烧写完毕启动节点,他们会自动寻找网络并且加入(大约5S左右)。
上图依次为4个终端节点加入了网络。
由上图可以看出,我们设置了协调器带节点的数量为3,那么3个节点之后的节点还是
加入到了网络但不是连在协调器上,而是连在了路由器上。如上图便完成了一个树形结构拓扑。
5.1、MESH(网状)网络实验结果
本次实验我们用一块FANTAI_Zigbee开发评估板做协调器,一块FANTAI_Zigbee开发评估板和一块FANTAI_Zigbee传感器节点做路由器,2块FANTAI_Zigbee传感器节点作为终端节点烧写。
打开SensorDemo的工程文件,选择,并将CCdebugger与PC机和FANTAI_Zigbee开发评估板连接好。点击将程序下载进单片机中。等待程序下载完成点击中的运行程序后,拔掉下载线。这时会看到评估板上LED1、3常亮而LED2闪烁。表示协调器建立网络完毕。此时点击方向键的Right键,发现LED2灯常亮。表示协调器进入采集模式。等待路由和终端节点报告。
将协调器开发板的串口与上位机的串口相连,打开上位机的Z-Sensor Monitor软件。 选择好串口后点击。看到现象:
说明协调器和上位机建立通讯,图中的红色为协调器节点。
打开到工程文件选择,然后分别烧写到1个FANTAI_Zigbee开发评估板,和2个FANTAI_Zigbee传感器节点上。(此处烧写过程参考协调器)。(有些时候路由器由于某些原因没有搜索到协调器,无法加载到网络,自己作为了协调器,遇到这种情况重新烧写即可。)
路由器开启时会自动寻找协调器的网络(大约5S左右)。并加入进去。
上图为2个路由器加入网络。
最后选择,依次烧入2个FANTAI_Zigbee传
感器节点中。烧写完毕启动节点,他们会自动寻找网络并且加入(大约5S左右)。
上图为3个终端节点加入网络。
由上图可以看出,由于使用了网状网络拓扑结构,终端节点和路由会自己计算出最佳路
径加入网络,所以网络结构很随意、处处联通。