ZigBee 2006协议栈_开发指导手册_专业尚阳.PDF
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《ZigBee 2006协议栈_开发指导手册_专业尚阳.PDF》由会员分享,可在线阅读,更多相关《ZigBee 2006协议栈_开发指导手册_专业尚阳.PDF(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 专业尚阳 1 2010-01-10 ZigBee 2006协议栈 ZigBee 2006协议栈 开发指导手册 开发指导手册 专业尚阳 专业尚阳 2010-01-10 2010-01-10 专业尚阳 2 2010-01-10 5 ZDO消息请求(ZDO Message requests) . 14 目录 1 ZigBee. 4 1.1 设备类型(Device Types) . 4 1.1.1 Coordinator(协调器). 4 1.1.2 Router(路由器) . 5 1.1.3 End-Device(终端设备). 5 1.2 栈配置(Stack Profile) . 5 2 寻址(Ad
2、dressing). 5 2.1 地址类型(Address types) . 5 2.2 网络地址分配(Network address assignment) . 6 2.3Z-Stack寻址(Addressing in z-stack). 6 2.3.1 单点传送(Unicast). 7 2.3.2 间接传送(Indirect) . 7 2.3.3 广播传送(broadcast). 7 2.3.4 组寻址(Group Addressing). 8 2.4 重要设备地址(Important Device Adresses). 8 3 绑定(Binding) . 9 3.1 建立绑定表(Buil
3、ding a Binding Table) . 9 3.1.1 ZigBee Device Object Binding Request . 9 3.1.2 配置源绑定(Configuring Source Binding) . 11 4 路由(Routing) . 11 4.1 概述(Overview) . 11 4.2 路由协议(Routing Protocol) . 12 4.2.1 路径的发现和选择(Route Discovery and Selection) . 12 4.2.2 路径保持维护(Route maintenance) . 13 4.2.3 路径期满(Route expi
4、ry) . 13 4.3 表存储(Table storage) . 13 4.3.1 路由表(Routing table) . 13 4.3.2 路径发现表(Route discovery table) . 14 4.4 路径设置快速参考(Routing Settings Quick reference) . 14 6 便携式设备(Portable Devices). 15 7 端到端确认(End end acknowledgements) . 16 8 其他(Miscellaneous). 16 专业尚阳 3 2010-01-10 8.1 配置信道(Configuring channel)
5、. 16 8.2 配置PAN ID和要加入的网络(Configuring PAN ID and network to join) . 17 8.3 最大有效载荷大小(Maximum payload size) . 17 8.4 离开网络(Leave Network) . 17 8.5 描述符(Descriptors) . 18 8.6 非易失性存储项(Non-volatile Memory Items) . 18 8.6.1 网络层非易失性存储器(Network Layer Non-Volatile Memory) . 18 8.6.2 应用的非易失性存储器(Application Non-V
6、olatile Memory). 19 9 安全(Security). 19 9.1 概述(Overview) . 19 9.2 配置(Configuration) . 19 9.3 网络访问控制(Network access control) . 20 9.4 更新密码(Key Updates) . 20 9.5 快速参考(Quick Reference) . 20 专业尚阳 4 2010-01-10 1 ZigBee 1.1 设备类型(Device Types) 在 ZigBee 网络中存在三种逻辑设备类型:Coordinator(协调器),Router(路由 器)和 End-Device
7、(终端设备)。 ZigBee 网络由一个 Coordinator 以及多个 Router 和 多个 End_Device 组成。 上图是一个简单的 ZigBee 网络示意图。其中黑色节点为 Coordinator,红色 节点为 Router,白色节点为 End-Device。 1.1.1 Coordinator(协调器) 协调器负责启动整个网络。 它也是网络的第一个设备。 协调器选择一个信道 和一个网络 ID(也称之为 PAN ID,即 Personal Area Network ID),随后启动整个 网络。 协调器也可以用来协助建立网络中安全层和应用层的绑定(bindings)。注意, 协调
8、器的角色主要涉及网络的启动和配置。 一旦这些都完成后, 协调器的工作就 像一个路由器(或者消失 go away)。由于 ZigBee 网络本身的分布特性,因此接下 来整个网络的操作就不在依赖协调器是否存在。 专业尚阳 5 2010-01-10 1.1.2 Router(路由器) 路由器的功能主要是: 允许其他设备加入网络, 多跳路由和协助它自己的由 电池供电的儿子终端设备的通讯。 通常, 路由器希望是一直处于活动状态, 因此它必须使用主电源供电。 但是 当使用树群这种网络模式时, 允许路由间隔一定的周期操作一次, 这样就可以使 用电池给其供电。 1.1.3 End-Device(终端设备) 终
9、端设备没有特定的维持网络结构的责任, 它可以睡眠或者唤醒, 因此它可 以可以是一个电池供电设备。通常,终端设备对存储空间(特别是 RAM 的需要) 比较小。 注意:在 Z-Stack 1.4.1 中一个设备的类型通常在编译的时候通过编译选项 (ZDO_COORDINATOR 和 RTR_NWK)确定。所有的应用例子都提供独立的项目 文件来编译每一种设备类型。 1.2 栈配置(Stack Profile) 栈参数的集合需要被配置为一定的值,连同这些值在一起被称之为栈配置。 ZigBee 联盟定义了这些由栈配置组成的栈参数。 网络中的所有设备必须遵循同样的栈配置。 为了促进互用性这个目标,ZigB
10、ee 联盟为 ZigBee2006 规范定义了栈配置。 所有遵循此栈配置的设备可以在其他开发商开发的遵循同样栈配置的网络中。 2 寻址(Addressing) 2.1 地址类型(Address types) ZigBee 设备有两种类型的地址。一种是 64 位 IEEE 地址,即 MAC 地址,另 一种是 16 位网络地址。 64 位地址使全球唯一的地址, 设备将在它的生命周期中一直拥有它。 它通常 由制造商或者被安装时设置。这些地址由 IEEE 来维护和分配。 16 为网络地址是当设备加入网络后分配的。 它在网络中是唯一的, 用来在网 络中鉴别设备和发送数据。 专业尚阳 6 2010-01-
11、10 2.2 网络地址分配(Network address assignment) ZigBee 使用分布式寻址方案来分配网络地址。 这个方案保证在整个网络中所 有分配的地址是唯一的。 这一点是必须的, 因为这样才能保证一个特定的数据包 能够发给它指定的设备, 而不出现混乱。 同时, 这个寻址算法本身的分布特性保 证设备只能与他的父辈设备通讯来接受一个网络地址。 不需要整个网络范围内通 讯的地址分配,这有助于网络的可测量性。 在每个路由加入网络之前,寻址方案需要知道和配置一些参数。这些参数是 MAX_DEPTH, MAX_ROUTERS 和 MAX_CHILDREN。 这些参数是栈配置的一 部
12、 分 , ZigBee2006 协 议 栈 已 经 规 定 了 这 些 参 数 的 值 : MAX_DEPTH = 5 , MAX_ROUTERS = 6 和 MAX_CHILDREN = 20。 MAX_DEPTH 决定了网络的最大深度。协调器(Coordinator)位于深度 0,它 的儿子位于深度 1,他的儿子的的儿子位于深度 2,以此类推。MAX_DEPTH 参 数限制了网络在物理上的长度。 MAX_CHILDREN 决定了一个路由(Router)或者一个协调器节点可以处理的 儿子节点的最大个数。 MAX_ROUTER 决定了一个路由(Router)或者一个协调器(Coordinato
13、r)节点可 以处理的具有路由功能的儿子节点的最大个数。这个参数是 MAX_CHILDREN 的一个子集,终端节点使用(MAX_CHILDREN MAX_ROUTER)剩下的地址空 间。 如果开发人员想改变这些值,则需要完成以下几个步骤: 首先,你要保证这些参数新的赋值要合法。即,整个地址空间不能超过 216, 这就限制了参数能够设置的最大值。可以使用projectsZStacktools文件夹下的 CSkip.xls文件来确认这些值是否合法。 当在表格中输入了这些数据后, 如果你的 数据不合法的话就会出现错误信息。 当选择了合法的数据后,开发人员还要保证不再使用标准的栈配置,取而代 之的是网络
14、自定义栈配置(例如:在 nwk_globals.h 文件中将 STACK_PROFILE_ID 改为 NETWORK_SPECIFIC)。然后 nwk_globals.h 文件中的 MAX_DEPTH 参数 将被设置为合适的值。 此外,还必须设置 nwk_globals.c 文件中的 Cskipchldrn 数组和 CskipRtrs 数组。 这些数组的值由 MAX_CHILDREN 和 MAX_ROUTER 构成。 2.3Z-Stack 寻址(Addressing in z-stack) 为 了 向 一 个 在 ZigBee 网 络 中 的 设 备 发 送 数 据 , 应 用 程 序 通常
15、使 用 AF_DataRequest()函数。数据包将要发送给一个 afAddrType_t(在 ZComDef.h 中定 义)类型的目标设备。 typedef struct union 专业尚阳 7 2010-01-10 uint16 shortAddr; addr; afAddrMode_t addrMode; byte endPoint; afAddrType_t; 注意, 除了网路地址之外, 还要指定地址模式参数。 目的地址模式可以设置为以 下几个值: typedef enum afAddrNotPresent = AddrNotPresent, afAddr16Bit = Addr1
16、6Bit, afAddrGroup = AddrGroup, afAddrBroadcast = AddrBroadcast afAddrMode_t; 因为在 Zigbee 中, 数据包可以单点传送(unicast), 多点传送(multicast)或者广播 传送, 所以必须有地址模式参数。 一个单点传送数据包只发送给一个设备, 多点 传送数据包则要传送给一组设备,而广播数据包则要发送给整个网络的所有节 点。这个将在下面详细解释。 2.3.1 单点传送(Unicast) Uicast 是标准寻址模式,它将数据包发送给一个已经知道网络地址的网络设 备。将 afAddrMode 设置为 Addr
17、16Bit 并且在数据包中携带目标设备地址。 2.3.2 间接传送(Indirect) 当应用程序不知道数据包的目标设备在哪里的时候使用的模式。 将模式设置 为 AddrNotPresent 并且目标地址没有指定。 取代它的是从发送设备的栈的绑定表 中查找目标设备。这种特点称之为源绑定。 当数据向下发送到达栈中,从绑定表中查找并且使用该目标地址。这样,数 据包将被处理成为一个标准的单点传送数据包。如果在绑定表中找到多个设备, 则向每个设备都发送一个数据包的拷贝。 上一个版本的 ZigBee(ZigBee04),有一个选项可以讲绑定表保存在协调器 (Coordinator)当中。发送设备将数据包
18、发送给协调器,协调器查找它栈中的绑定 表 ,然 后 将 数 据 发 送 给 最 终 的 目 标 设 备 。 这 个附 加 的 特 性 叫做协调器绑定 (Coordinator Binding)。 2.3.3 广播传送(broadcast) 当应用程序需要将数据包发送给网络的每一个设备时,使用这种模式。地址 专业尚阳 8 2010-01-10 模式设置为 AddrBroadcast。目标地址可以设置为下面广播地址的一种: NWK_BROADCAST_SHORTADDR_DEVALL(0 xFFFF)数据包将被传送 到网络上的所有设备, 包括睡眠中的设备。 对于睡眠中的设备, 数据包将被保留 在其
19、父亲节点直到查询到它,或者消息超时(NWK_INDIRECT_MSG_TIMEOUT 在 f8wConifg.cfg 中)。 NWK_BROADCAST_SHORTADDR_DEVRXON(0 xFFFD) 数 据 包 将被 传送到网络上的所有在空闲时打开接收的设备(RXONWHENIDLE),也就是说, 除了睡眠中的所有设备。 NWK_BROADCAST_SHORTADDR_DEVZCZR(0 xFFFC)数据包发送给 所有的路由器,包括协调器。 2.3.4 组寻址(Group Addressing) 当应用程序需要将数据包发送给网络上的一组设备时,使用该模式。地址模 式设置为 afAddr
20、Group 并且 addr.shortAddr 设置为组 ID。 在使用这个功能呢之前,必须在网络中定义组。(参见 Z-stack API 文档中的 aps_AddGroup()函数)。 注意组可以用来关联间接寻址。 再绑定表中找到的目标地址可能是是单点传 送或者是一个组地址。另外,广播发送可以看做是一个组寻址的特例。 下面的代码是一个设备怎样加入到一个 ID 为 1 的组当中: aps_Group_t group; / Assign yourself to group 1 group.ID = 0 x0001; group.name0 = 0; / This could be a human
21、 readable string aps_AddGroup( SAMPLEAPP_ENDPOINT, &group ); 2.4 重要设备地址(Important Device Adresses) 应用程序可能需要知道它的设备地址和父亲地址。 使用下面的函数获取设备 地址(在 ZStack API 中定义): z NLME_GetShortAddr()返回本设备的 16 位网络地址 z NLME_GetExtAddr() 返回本设备的 64 位扩展地址 使用下面的函数获取该设备的父亲设备的地址: z NLME_GetCoordShortAddr()返回本设备的父亲设备的 16 位网 络地址 z
22、 NLME_GetCoordExtAddr() 返回本设备的父亲设备的 64 位扩 展地址 专业尚阳 9 2010-01-10 3 绑定(Binding) 绑定是一种两个(或者多个)应用设备之间信息流的控制机制。在 ZigBee2006 发布版本中,它被称为资源绑定,所有的设备都必须执行绑定机制。 绑定允许应用程序发送一个数据包而不需要知道目标地址。 APS 层从它的绑 定表中确定目标地址,然后将数据继续向目标应用或者目标组发送。 注意:在 ZigBee 的 1.0 版本中,绑定表是保存在协调器(Coordinator 当中)。 现在所有的绑定记录都保存在发送信息的设备当中。 3.1 建立绑定
23、表(Building a Binding Table) 有三种方法可以建立一个绑定表: z Zigbee Device Object Bind Request一个启动工具可以告诉设备创建 一个绑定记录 z Zigbee Device Object End Device Bind Request两个设备可以告诉协 调器它们想要建立一个绑定表记录。协调器来协调并在两个设备中创建 绑定表记录。 z Device Application一个设备上的应用程序建立或者管理一个绑定表 3.1.1 ZigBee Device Object Binding Request 任何一个设备都可以发送一个 ZDO 信
24、息给网络中的另一个设备,用来建立 绑定表。称之为援助绑定,它可以为一个发送设备创建一个绑定记录。 1.启动申请(The Commissioning Application) 一个应用程序可以通过 ZDP_BindReq()函数(在 ZDProfile.h),并在绑定表中 包含两个请求(地址和终点)以及想要的群 ID。第一个参数(目标 dstAddr)是绑定 源的短地址即,16 位网络地址。 确 定 你 已 经 在 ZDConfig.h 允 许 了 这 个 功 能 (ZDO_BIND_UNBIND_REQUEST)。 你也可以使用 ZDP_UnbindReq()用同样的参数取消绑定记录。 目标设
25、备发回 ZigBee Device Object Bind 或者 Unbind Response 信息,该信 息 是ZDO 代 码 根 据 动 作 的 状 态 , 通 过 调 用 ZDApp_BindRsq() 或 者 ZDApp_UnbindRsq()函数来分析和通知 ZDApp.c 的。 对 于 绑 定 响 应 , 从 协 调 器 返 回 的 状 态 将 是 ZDP_SUCCESS,ZDP_TABLE_FULL 或者 ZDP_NOT_SUPPORTED。 对 于 解 除 绑 定 响 应 , 从 协 调 器 返 回 的 状 态 将 是 专业尚阳 10 2010-01-10 ZDP_SUCCE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ZigBee 2006协议栈_开发指导手册_专业尚阳 2006 协议 开发 指导 手册 专业
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内