Zigbee入门开发_第1页
Zigbee入门开发_第2页
Zigbee入门开发_第3页
Zigbee入门开发_第4页
Zigbee入门开发_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、如有你有帮助,请购买下载,谢谢!12页Zigbee是一种新型的短距离无线通信技术。其特点是低功耗,低成本,组网灵活。Zigbee 协议由 zigbee联盟指定 包括应用层 和网络层 其下层采用无论是学习zigbee技术,还是利用zigbee技术开发产品 都需要较好的掌握zigbee协议*并比较深入的了解而全部是英文。如果从来没有接触过无线通信的开发要迅速掌握这么多内容确实有一些难度 笔者考虑到广大急切进入zigbee的同仁者,结合自己开发中总结出的理解协议的特定方法,从开发的角度,阐述协议内容 以达到抛砖引玉的效果,同时和广大同仁交流,共同提高 并希望zigbee技术能够在中国发扬光大。协议从

2、功能实现来讲 ZigBee协议层共包括物理层(又称实体层)、MAC层 数据链接层 网络层和应用支持层五个主要层次。在标准制定的分工上,ZigBee协议层是由ZigBee联盟和 物理层(又称实体层)、MAC层、数据锥接层,以及传输过程中的资料加密机制等都是由支持层则由IEEE所主导的0网络层和应用 ZigBee联盟来完成。,而未来还能依据系统客户的要求来修正其所需的应用界面。如图示:Zigbee协议整体架构作为理解协议从开发者的角度来讲,这样学习协议是比较费时间的也较难掌握。笔者从自己长期开发的经验来看,对无 线通信 最重要的就是在发送端根据用户的要求 把数据能够扔出去 并且是扔到指定的设备,在

3、接收端,能够把发送到该 设备的数据捡起来。并根据用户要求的作特定的处理。如果考虑在一个无线网路中的话,就得首先建立网络,其他得设备加 入网络。最后是才是一些其他的问题如设备离开网络设备重新加入网络等等。这样从通信过程去理解协议将会使得协议的内容非常明了也可以很好的知道利用协议开发产品达到事半功倍的效果。本人将根据这样的思路 分五期具体讲述协议内容:第一期:设备建立网络过程第二期:设备加入网络过程第三期:数据发送过程第四期:数据接收过程第五期:其他的问题zigbee设备建立网络过程在一个zigbee网络中 只有协调器(coordinator )设备可以建立网络 在建立网络过程中 所有的实现过程都

4、是通过原语实现的(具体在程序中如用C语言 就是调用一个一个函数,或者是一个一个任务来实现(不要刻意最求这句话的准确性,本来好的协议就是只要达到这样的结果,不管具体实现),首先协调器设备的应用层调用NLME_NETWORK_FORMATIONrequest原语 发出建立网络请求 网络层收到这个原语 就要求MAC层执行信道能S扫描(在,在2.4G频段,共有16个信道 每个信道的带宽为5M,深入理解 可以看协议和通信原理的相另资料)。这调用MLME_SCAN.request主要找到信道能量低于设定能量值的信道,并且标注这些信道是可用信道,下一步就在可用信道中执行活动情况扫描(active scan)

5、,就是在可接受的信道搜寻zigbeee设备,找到一个最好的信道,通过记录的结果,选择一个信道,该信道存在最少的zigbee网络 最好是没有zigbee I殳备。如果没有合适的,将发送confirm原语并告知上层结果;如果找到了合适的信道将随机选择一个PAN (网络号,就是可以识别一个特定zigbee网络的标识号) 不与原来的冲突 如果没有找到 也通过原语告诉上层结果如果找到了,就通过原语在MAC层注册,这个ID号,然后选择网络地址 并发送MLME_START.request 原语,获取PAN ID和信道扫描结果,将通过confirm原语告矩上层。NLME NETWORK.收到PAN开始的状态

6、NLME将告知应用层 它要求的建立网络的状态 这通过ORMATIONxonfirm原语实现。zigbee设备加入网络过程(方式一关联加入)end device ) 可以加入协调器建立在一个zigbee协调器设备建立网络后,路由器设备或者终端设备(的网络,具体加入网络有两种方式 一种是通过矣联(association )方式、就是待加入的设备发起加入网络 具体实现方式后面讨论 另一种是直接(direct )方式,就是待加入的设备具体加入到那个设备下,作为该设备的子节点 由以前网络中的设备 想待加入的设备作为其子设备决定。下面重点讨论第一种方式 也是实际中用的最多的方式通过矢联方式加入一个网络:加

7、入一个设备,是两个设备的事,即子设备和待定父设备原语设定待扫描的信道,以对于子设备 首先子设备调用NLMENETWORKDISCOVERYrequest及每个信道扫描的时间 网络层收到这个原语 将要求MAC层执行被动或主动扫描。具体发送到设备外的是一个becon request帧,当在这个信道中的设备收到该帧,将会发送beeon 帧这是子设备通过 BEACON-NOTIFYJndication原语,告知该设备的MAC层 该becon帧包含了发送该帧的地址信息,以及是否允许其他设备以其子节点的方式加入。待加入的设备,在网络层,将检査该beeon帧协议ID是否是zigbee ID。如果不是,将忽略

8、;如果是 该设备将复制收到每个 矣信息到其关联becon帧的相表中(neighbortable )。一旦MAC层完成了扫描 将发送MLME-SCAN.confirm 原语,告知网络层 网络层将发送NLME-NETWORK-DISCOVERY.confirm原语,告矩应用层。应用层收到该原语,应用层将根据情况要么重新要求扫描或者从矢联表中选择所发现的网络加入。调用NLMEJOIN.request原语*原语中各个参数的设置参看协议(可以在本站下载栏找到)非常容易。如 果在笑联表中找不到合适的准父节点将调用原语告知应用层如果由多个设备可以满足要求,将选择到协调器节点深度最低的设备如果有几个设备的深度

9、相同,且都是最小深度.将从中随机选择一个。一旦潜在的父节点确定,网络层将调用MLMEASSOCIATErequest原语到MAC层。具体设置参看协议相矢部分(213页)* 连接状态将通过 MLME-ASSOCIATE.confirm如果试图加入不成功,网络层将收到MAC层通过MLME-ASSOCIATE.confirm告知的加入失败 如果收到的是潜在父 节点拒绝该设备加入,这时候,网络层将会在矢联表中,把该潜在父节点的相应部分,潜在父节点位(potentialparent bit)置为零 确保网络层 不再给这个设备二次发送加入请求。如果一次加入没成功,将选择另一个潜在的父节点加入,指导找到一个

10、合适的设备加入或者所有的设备都不适合。如果加入成功*网络层收到的MLMEASSOCIATEconfirm原语*将含有该设备可用的16唯一的逻辑地址,网络层将在矢联表中设置与其父节点的矣系,同时,这个父节点也会在其另联表中加入这个新设备。如果是以路由器(router)形式成功加入网络,该设备的应用层将发送NLME-STAT_ROUTER.request原语*网络层将发送MLMESTATrequest原语到MAC层。收到了 MLMESTARTconfirm原语 含有同样的状态值。络层将发送 NLMESTARTROUTER.confirm对于父节点设备:只有协调器或路由器,可以加入设备,进行该操作

11、首先从MAC层开始,MAC接收到一帧(ASSOCIATE)数据,通过 MLME_ASSOCIATEindication 原语传到网络层潜在的父节点收到这帧数据首先判断原语告知该设备不MLME-ASSOCIAzigbee设备加入网络(方式二直接加入)该设备是否已经存在其矢联表中,如果找到,NLME将获取相应的16位网络地址,并发送association response到MAC层,如果没有找到,将分配一个在这个网络中唯一的地址给待加入的设备,如果潜在父节点已经用完了地址分配*NLME将中止 通过MLMEASSOCIATEreponse 能接收子设备了,在多跳网络中,其他的设备还可以接收。如果设备

12、加入得到许可,这时候,将在笑联表中创建一个表项,作为其子节点,并通过TE.re ponse 原语 告知该设备 已经成功加入网络。直接方式加入网络(directly )F面讲述如何一个子设备在其潜在父节点预先指派的情况下加入网络.以这种方式加入网络的过程中首先由父节点发起,下面根据建网的过程来讲述父节点:首先调用 NLME-DIRECTJOIN.requese原语,在目的地址部分设置成要求加入网络设备的IEEE地址 当这个过程初始化后 在父节点的网络层要判断该子设备是否已经加入网络 如果在confirm 原语告诉应用层 设备已经加入网络 如果没有找到匹配的,在网络层 如果可能,将分配一个在这个网

13、络其矢联表中找到了这个设备 将终止操作 并通过NLME_ DIRECT JOIN.中唯一的16位网络地址,将在其矢联表中为这个子节点创建一个表项,如果不可以,NLME DIRECT JOIN, confirm原语告诉应用层表已满,如果可以,NLME DIRECT JOIN.onfirm原语告诉应用层创建成功.注意,这个过程父节点设备是没有向空中发射信息,只是在自己设备内处理但是,在子设备要求加入时 以孤节点方式实现 因为该过程和孤节点方式重新加入实现方式一样.子节点:子节点通过孤节点方式加入首先子设备调用NLME JOIN, request原语 并在R ejoinN etwork项设置为真 然

14、后网络层要request初始化 通过MLME求MAC执行孤节点扫描 对设置的信道、该步由MLME SCAN. SCAN, comfirm原语返回结果.confirm原语告之应用层 加入成功.如果扫描成功 网络层将通过调用NLME JOIN如果扫描没有成功 网络层将终止操作 并告之应用层 没有找到网络 该步通过调用NLME-JO1N. confirm原语实现.子节点要求加入后,父节点将做如下处理在 MAC 层收到 MLME OR PH AN. indication原语*只有协调器或路由器将做进一步处理.当这一过程完成后 网络层将首先査找看其子设备是否为孤节点 如果有 将比较IEEE地址 如果匹r

15、epo nse原语告之子设备.配 将获取相应的16位网络地址 通过MAC层MLME ORPHAN.接收发送数据的总体过程在前面已经讲述了 zigbee网络的建立过程 以及设备设备加入网络 现在作为实质的网络通信的平台已经搭建好了可以进行数据传输了下面将讲述在zigbee网络中 数据从一个设备发送到另一个设备的PAN CLUSTERID 等等信息,详细参考协议,帧构建好后然后调用 firmMAC 层的原语 MCPS-DATA.request将收到结果通过MCPSDATAcon整体过程 后面在讲述涉及到数据传输的路由发现以及路由过程0传输:只有设备加入到网络中,才可以传输数据,首先按照协议中规定的

16、帧形式构建帧数据该帧数据包括 帧头帧内容其中帧头包括帧类型源地址目的地址,接收:设备可以接收数据首先必须使能接收在协调器或路由器中只要设备不发送数据就可以处于接收状态, 对于end device,应用调用NLMESYNCrequest原语 网络层,调用MLME-POLL.request 去查看其父节点是否暂存数据/待发送到该节点如果有将使能接收。在MAC层收到数据后,首先帧头控制部分的传输半径内容将减一,然后交到网络层,网络层判断目的地址是否是自己或者 该帧是广播数据帧将把该数据传到应用层,广播帧数据将通过后面(广播传输部分)继续传输,如果目的地址不是自己 该节点是路由器或协调器将通过后面(路由传输部分)继续传输,否则该帧数据将被丟弃。如果是路由发现帧,将会用 路由回复帧,并继续发送路由发送帧,具体过程后 面详细讨论。zigbee设备收发数据的整体过程zigbee设备发送数据只有加入了网络的设备才可以发送数据首先,应用层将一帧数据打包好,然后调用网络层的原语并在 网络层按照协议的 配置,加上帧头如果考虑安全机制,还要做安全处理。接收和再发送:在非信标的网络中,只要设备不发送数据,就可以处于接收的状态,只要在接收使能的情况下,收到一帧数据,将把该帧数 据帧头的传输半径减一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论