http://hi.baidu.com/a263238386/archive/tag/zigbee
在IEEE 802.15.4 CSMA/CA机制中,网络协调器在网络中,会发出信标给所有的可感应节点,而对于有数据需传送的设备来说,它们会向网络协调器要求进行传送,由于在一个时间内只能有一个设备进行传输,因此所有想要传输的节点设备就会通过CSMA/CA机制来竞争传输媒体的使用权。所有准备传输数据的设备,会监测目前的无线传输媒体是否有其他设备在使用中,如果为空闲,此时,这些设备会产生一个倒退延迟时间,来错开这些设备同时送出数据从而造成碰撞的可能。若目前的无线传输媒体是忙碌中的,则这些设备将会在监测到媒体为空闲后,再进行CSMA/CA的竞争。
在IEEE 802.15.4 CSMA/CA算法中,CSMA/CA算法是用于节点问数据传输时的信道争用机制,此算法中有三个重要的参数由每个要传送数据的设备去维护:Nb、CW和BE。
Nb(后退次数,Number Of Back):Nb的初始值为0,当设备有数据要传送时,经过一段后退时间后,发送CCA检测,若检测到信道忙,则会再一次产生倒退时间,此时Nb值会加1,在IEEE802.15.4中,Nb值最大定义为4,当信道在经过4次的后退延迟时间后仍为忙,刚放弃此次的传送,以避免过大开销。
CW (碰撞窗口的长度,content window length):也就是后退延迟时间的长度,单位是Backoff,一个后退周期的定义在MAC PIB中由参数aUnitBackofPerio
频分多址(FDMA)是采用调频的多址技术。业务信道在不同的频段分配给不同的用户。如:TACS系统、AMPS系统等。
时分多址(TDMA)是采用时分的多址技术。业务信道在不同的时间分配给不同的用户。如:GSM、 DAMPS等。
CDMA(码分多址)是采用扩频的码分多址技术。所有用户在同一时间、同一频段上,根据不同的编码获得业务信道。
FDMA(Frequence Division Multiple Access)直译频分多址。有同用户分配在时隙(出现时间)相同、工作频率不同的信道上,模拟的FM蜂
窝系统都采服了FDMA。我们可以想象一个很大的房子被做成很多的隔段,每一个隔段里都有一对人正在交谈。这样由于隔段的分离,谈话都不
会听到其他人交谈。这就像一个“FDMA”系统。
TDMA(Time Division Multiple Access)直译时分多址。不同用户分配在时隙不同、频率相同的信道上,目前运营的GSM网络制式。TDMA可以
在FDMA的基础上进一步类比,我们可以把隔段做得大些,这样一隔段可以容纳几对交谈者。但是大家的交谈有一个原则:只能同时有一对人在
讲话。如果再把交谈的时间按照交谈者的数目分成若干等分,就成为一个“TDMA”的系统。
CDMA(Code Division Multiple Access)直译为码分多址,我们可以想像一个宽敞的空间,在这里正在进行着一个聚会,其中的
那个获取主机ID的程序我是直接双击打开的,由于WIN7的一些限制,无法获取真正的ID,也就是说那是个假的ID。解决方法就是右键单击该程序,选择“以管理员身份运行”,这样就能获得真正的ID了。
ZigBee/IEEE 802.15.4的网络所有节点都工作在同一个信道上,因此如果邻近的节点同时发送数据就有可能发生冲突。为此MAC层采用了CSMA/CA的技术,简单来说,就是节点在发送数据之前先监听信道,如果信道空闲则可以发送数据,否则就要进行随机的退避,即延迟一段随机时间,然后再进行监听,这个退避的时间是指数增长的,但有一个最大值,即如果上一次退避之后再次监听信道忙,则退避时间要增倍,这样做的原因是如果多次监听信道都忙,有可能表明信道上的数据量大,因此让节点等待更多的时间,避免繁忙的监听。通过这种信道接入技术,所有节点竞争共享同一个信道。在MAC层当中还规定了两种信道接入模式,一种是信标(beacon)模式,另一种是非信标模式。信标模式当中规定了一种“ superframe”的格式,在超帧的开始发送信标帧,里面含有一些时序以及网络的信息,紧接着是竞争接入时期,在这段时间内各节点以竞争方式接入信道,再后面是非竞争接入时期,节点采用时分复用的方式接入信道,然后是非活跃时期,节点进入休眠状态,等待下一个超帧周期的开始又发送信标帧。而非信标模式则比较灵活,节点均以竞争方式接入信道,不需要周期性的发送信标帧。显然,在信标模式当中由于有了周期性的信标,整个网络的所有节点都能进行同步,但这种同步网络的规模不会很大。实际上,在ZigBee当中用得更多的可能是非信标模式。
http://blog.youkuaiyun.com/P_Chou/archive/2009/04/12/4066238.aspx
各表中的元素结构: 1、组表的元素结构 aps_Group_t; typedef struct{uint16 ID; // 组IDuint8 name[APS_GROUP_NAME_LEN]; // 组名称} aps_Group_t;2、组列表的元素结构 typedef struct apsGroupItem{struct apsGroupItem *next; //指向下一个组表条目uint8 endpoint; //此终端接收发送给组的信息aps_Group_t group; //组ID和组名} apsGroupItem_t;3、路由表的元素结构 rtgEntry_t; typedef struct{uint16 dstAddress; //目标地址uint16 nextHopAddress; //单跳地址byte expiryTime; //有效时间byte status; //状态} rtgEntry_t;4、
在一个zigbee协 调器设备建立网络后,路由器设备或者终端设备(end device),可以加入协调器建立的网络,具体加入网络有两种方式,一种是通过关联(association)方式,就是待加入的设备发起加入网络,具 体实现方式后面讨论,另一中是直接(direct)方式,就是待加入的设备具体加入到那个设备下,作为该设备的子节点,由以前网络中的设备,想待加入的设 备作为其子设备决定。
下面重点讨论第一种方式,也是实际中用的最多的方式
通过关联方式加入一个网络:
加入一个设备,是两个设备的事,即子设备和待定父设备
对于子设备,首先子设备调用NLME-NETWORK-DISCOVERY.request 原语,设定待扫描的信道,以及每个信道扫描的时间,网络层收到这个原语,将要求MAC层执行被动或主动扫描。
具体发送到设备外的是一个becon request 帧,当在这个信道中的设备收到该帧,将会发送becon帧,这是子设备通过BEACON-NOTIFY.indication 原语,告知该设备的MAC层,该becon帧包含了发送该帧的地址信息,以及是否允许其他设备以其子节点的方式加入。待加入的设备,在网络层,将检查该 becon帧 协议 ID是否是zigbee ID 。如果不是,将 忽略;如果是,该设备将复制收到每个becon帧的相关信息到其关联表中(neighbor t
欢迎转载学习,但请注明办公室来源【成都无线龙通讯科技有限公司上海办事处http://wr.cccv.cn/zigbee/主营项目:无线传感网络 无线透传 无线覆盖 地区:上海 上海】
网络层功能:
1. 加入和退出网络
2. 申请安全结构
3. 路由管理
4. 在设备之间发现和维护路由
5. 发现邻设备
6. 储存邻设备 信息
当适当的重新分配地址联合其他设备,ZIGBEE2006可以依赖于网络协调者建立一个新网络.
ZIGBEE应用层由APS(应用支持)、AF(应用结构)、ZDO(ZIGBEE设备对象)和厂商自定义应用对象组成。
APS功能
1. 绑定维持工作台,定义一个两个合拢的设备进行比较建立他们的需要和服务。
2. 促进信息在设备之间的限制
3. 组地址定义,移除和过滤组地址消息
4. 地址映射来自于64位IEEE地址和16位网络地址
5. 分裂、重新组装和可靠数据传输
ZDO功能
1. 定义设备内部网络(ZigBee协调者和终端接点)
2. 开始和/或回答绑定请求
3. 在网络设备中建立一个网络安全关系
4.
多任务:
OS中每个任务都有一个任务初始化函数和任务事件处理回调函数,如SampleApp_Init( taskID )和SampleApp_ProcessEvent( byte task_id, UINT16 events )。如果需要深入了解任务的工作机制,如任务管理、调度任务的同步与通信等,可以去看uC/OS得相关资料。而任务下面又划分很多事件(可以把事件理解为 当前任务下的一些小的任务)。在OS中事件是为了实现任务间的同步与通信的,如信号量、消息邮箱和消息队列。单片机基础对于OS不胜了解的可以这样来理 解,自己当初也是这样来理解的(可以把任务中的发送事件理解为置标志位,在本任务或另一个任务中查询标志位来完成相应操作)在uCOS中任务和事件的处理 是由操作系统来完成的,任务按照优先级来调度,每个任务有自己的任务控制块来决定和记录任务的执行情况,而事件有事件控制块。在实际应用中很多时候做得也 是这个工作,例如在SampleApp_ProcessEvent中来完成事件的功能,刚开始可以把各个事件按照C中的SWITCH CASE来理解,或者状态机的状态切换的理解(实际上应该据自己浅薄的理解,OS中任务及事件的跳转就如同状态机完成各个状态间的切换,只是每个任务都有 个优先级和任务的执行时间,uC/OS中的任务正是基于优先级的调度)
查看相关书籍,任务中的事件尽