本帖最后由 冒汗的心情 于 2016-3-3 18:07 编辑
Zigbee地址的基础知识
1、PANID:个域网ID号,有效值:0~0xFFFE。如果为0xFFFF则网络层将选择PANID供网络使用!配置文件中为0xFFFF 2、扫描的频道,11~26。
3、NLME_GetShortAddr() 4、网络形成:
5、第一类是IEEE地址,也叫做扩展地址。这是一个64位的地址,由设备商固化到设备中,地址由IEEE发配,当然我们现在买到的开发板芯片上的IEEE地址一般应该为全F,这是一个无效地址,就是说这个芯片还没有分配地址拉。可以用ti的flash编程软件烧写一个IEEE地址。
6、第二类地址是所谓的网络地址,也就叫做短地址。这是一个16位的地址,其中有几个特殊的地址: 【1】0xFFFF -这是一个对全网络中设备进行广播的广播地址 【2】0xFFFD -如果在命令中将目标地址设为这个地址的话那么只对打开了接收的设备进行广播 【3】0xFFFC -广播到协调器和路由器 【4】0xFFFE -如果目的地址为这个地址的话,那么应用层将不指定目标设备,而是通过协议栈读取绑定表来获得相应目标设备的短地址
7、一旦在源节点上建立了绑定,其应用服务即可向目标节点发送数据,而不需指定目标地址了(调用zb_SendDataRequest(),目标地址可用一个无效值0xFFFE代替)。这样,协议栈将会根据数据包的命令标识符,通过自身的绑定表查找到所对应的目标设备地址。
在绑定表的条目中,有时会有多个目标端点。这使得协议栈自动地重复发送数据包到绑定表指定的各个目标地址。同时,如果在编译目标文件时,编译选项NV_RESTORE被打开,协议栈将会把绑定条目保存在非易失性存储器里。因此当意外重启(或者节点电池耗尽需要更换)等突发情况的发生时,节点能自动恢复到掉电前的工作状态,而不需要用户重新设置绑定服务。
配置设备绑定服务,有两种机制可供选择。如果目标设备的扩展地址(64位地址)已知,可通过调用zb_BindDeviceRequest()建立绑定条目。如果目标设备的扩展地址未知,可实施一个“按键”策略实现绑定。这时,目标设备将首先进入一个允许绑定的状态,并通过zb_AllowBindResponse()对配对请求作出响应。然后,在源节点中执行zb_BindDeviceRequest()(目标地址设为无效)可实现绑定。
此外,使用节点外部的委托工具(通常是协调器)也可实现绑定服务。请注意,绑定服务只能在“互补”设备之间建立。那就是,只有分别在两个节点的简单描述结构体(simple descriptor structure)中,同时注册了相同的命令标识符(command_id)并且方向相反(一个属于输出指令“output”,另一个属于输入指令“input”),才能成功建立绑定。
8、ZigBee2006版本中规定,在全部节点中实现绑定机制,并将其称为源绑定。绑定机制允许一个应用服务在不知道目标地址的情况下向对方(的应用服务)发送数据包。发送时使用的目标地址将由应用支持子层从绑定表中自动获得,从而能使消息顺利被目标节点的一个或多个应用服务,乃至分组接收。
绑定表 【1】. 绑定表存放的位置是内存中预先定义的块,如果编译选项NV_RESTORE被激活, 也能保存在Flash里。 【2.】 绑定表放置在源节点(需要激活编译选项REFLECTOR)。 【3.】 绑定表的条目把需要发送的消息映射到它们的目标地址上。 . 【4.】 绑定表中每个条目包括以下内容: 【5.】 绑定表条目结构体的定义
typedef struct { uint16 srcIdx; //源地址索引 uint8 srcEP; //源端点 uint8 dstGroupMode; //指定寻址模式 uint16 dstIdx; //目标地址索引或者分组号 uint8 dstEP; //目标端点 uint8 numClusterIds; //在簇标识符表中簇标识符的个数 uint16 clusterIdList[MAX_BINDING_CLUSTER_IDS]; //簇标识符表 }BindingEntry_t;
9、自动绑定 a) 负责发送消息的设备在网络上广播带有如下参数的“个人公告”(Personal Advertisement): (1) 地址,配置文件标识符,簇集合列表; (2) 描述符匹配请求- ZDP_MatchDescReq()。 b) 匹配的设备会作出响应。 c) 由ZDO处理和验证响应。 d) 负责发送消息的设备建立绑定表并保存绑定记录。 e) 这种方法有时也称“服务发现”,“自动找寻”或者“自动匹配”。
10、stochastic(random) address assignment: a quick description is this: A node joining a network chooses its own address. It then sends a broadcast announcement to the network to see if any other node already has that address. If so, then the node chooses another address. If not then the node keeps that address. 11、In tree (Cskip) addressing, the ZigBee Coordinator (who forms the network) is node 0 (0x0000), by definition. The next node to join the network will receive an address from the parent node. The address that this node is assigned depends on whether the child is a router, which can have children of its own, or an end-device, which cannot:
|