




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
无线传感器网络实验教程绑定实验 主讲教师 柯宗武2012年12月 1 可编辑 本章内容 绑定的基本概念绑定的方法实例讲解 2 可编辑 实验内容 协调器通过广播方式绑定终端节点 在液晶屏上显示绑定过程 终端节点绑定到协调器 绑定成功后发送 HelloWorld 给协调器并显示 绑定完成后 按协调器中键 center 时点亮对方的指示灯 3 可编辑 预备知识 传感器网络数据通信 4 可编辑 预备知识 ZigBee网络地址 网络地址在一个新设备加入网络之后协调器会主动为它分配一个网络地址 以方便在网络中的身分确认理论地址范围 0 65535某些专用的地址不会分配给设备如 0 xFFFF是广播地址 所有设备 0 xFFFE是广播到FFD设备 全功能设备 路由器 5 可编辑 预备知识 ZStack中网络地址定义 typedefstruct union uint16shortAddr ZLongAddr textAddr addr byteaddrMode zAddrType t 枚举类型enum AddrNotPresent 0 AddrGroup 1 Addr16Bit 2 Addr64Bit 3 AddrBroadcast 15 6 可编辑 预备知识 应用框架 ApplicationFramework AF层为各个用户自定义的应用对象提供了模板式的活动空间 为每个应用对象提供了键值对KVP服务和报文MSG服务两种服务供数据传输使用 每个节点除了64位的IEEE地址 16位的网络地址 每个节点还提供了8位的应用层入口地址 对应于用户应用对象 端点0为ZDO接口 端点1至240供用户自定义用于对象使用 端点255为广播地址 端点241 254保留将来使用 7 可编辑 预备知识 应用框架 ApplicationFramework 每一个应用都对应一个配置文件 Profile 配置文件包括 设备ID DeviceID 事务集群ID clusterID 属性ID AttributeID 等 AF可以通过这些信息来决定服务类型 8 可编辑 预备知识 profiles 应用profiles是一组统一的消息 消息格式和处理方法 允许开发者建立一个可以共同使用的分布式应用程序 这些应用是利用驻扎在独立设备中的应用实体来实现的 这些应用profiles允许应用程序发送命令 请求数据和处理命令的请求 总之 配置文件使得ZigBee设备可以互操作 ZigBee联盟已经定义了很多标准的配置文件 比如远程控制开关配置文件和智能家居等 任何遵循某一标准配置文件的节点都可以与其他实现相同配置文件的节点进行互操作 一个publicprofile也规定了profile的ID 比如智能家居就规定是0 x104 9 可编辑 预备知识 簇 cluster 簇标识符可用来区分不同的簇 簇标识符联系着从设备流出和向设备流入的数据 在特殊的应用profiles范围内 簇标识符是唯一的 cluster要理解成一个大方向下的一个特定对象 比如智能家居下的一个调光器 操作这个调光器就需要一些命令 比如变亮 变暗 关灯 开灯这些 另外 这个调光器也会有一个attribute 也就属性 比如当前的亮度 由亮变暗的过程经历多长时间 10 可编辑 预备知识 簇 cluster 总结说来 Profile规范了应该包括哪些cluster 一个cluster会有一个ID 在一个cluster下又会有很多command 也会有很多attibute 在一个cluster下面command和attribute的ID要唯一 不同的cluster下可以重复 不同的profile下clusterID也可以重复 11 可编辑 预备知识 ZigBee设备对象 ZDO ZigBee设备对象 ZDO 描述了一个基本的功能函数 这个功能在应用对象 设备profile和APS之间提供了一个接口 ZDO位于应用框架和应用支持子层之间 它满足所有在ZigBee协议栈中应用操作的一般需要 此外ZDO还有以下作用 初始化应用支持子层 APS 网络层 NWK 安全服务规范 SSS 从终端应用集合中配置的信息来确定和执行安全管理 发现 网络管理 以及绑定管理 12 可编辑 预备知识 ZigBee设备对象 ZDO ZDO描述了应用框架层中应用对象的公用接口以及控制设备和应用对象的网络功能 在终端节点0 ZDO提供了与协议栈中与低一层连接的接口 如果是数据则通过APSDE SAP 如果是控制信息则通过APSME SAP APS数据实体 APSDE 提供在同一个网络中的两个或者更多的应用实体之间的数据通信 通过APSDE服务接入点 APSDE SAP APS管理实体 APSME 提供多种服务给应用对象 这些服务包含安全服务和绑定设备 并维护管理对象的数据库 也就是我们常说的AIB 13 可编辑 预备知识 ZDO与Profile的关系 ZDO是ZigBee设备对象 属于特殊的Endpoint 特制自己 Profile面向某个应用的公约或准则 包括5种描述项 AF是应用层 Profile是法律条款 ZDO是逻辑工作实体 自己 Profile中的多种描述项是条例 是图纸 ZDO是具体实现 以上内容详见 ZigBee2007协议规范 14 可编辑 绑定 Binding 的基本概念 绑定是一种两个 或者多个 应用设备之间信息流的控制机制 绑定允许应用程序发送一个数据包而不需要知道目标地址 APS层从它的绑定表中确定目标地址 然后将数据继续向目标应用或者目标组发送当两个设备已经在他们的简单描述符结构中登记为一样的簇ID 并且一个作为输入另一个作为输出时 绑定才能成功 绑定服务是针对设备端点上的簇 用户程序只需要提供端点号和簇ID 就可以通过绑定表找到对应的被绑定的节点的网络地址和端点号 从而实现无线数据的发送 15 可编辑 建立绑定表 有四种方法可以建立一个绑定表 ZigBeeDeviceObjectBindRequest Match方式 一个启动工具可以告诉设备创建一个绑定记录ZigBeeDeviceObjectEndDeviceBindRequest两个设备可以告诉协调器它们想要建立一个绑定表记录 协调器来协调并在两个设备中创建绑定表记录 DeviceApplication一个设备上的应用程序建立或者管理一个绑定表由管理员手工绑定通过pc机串口发送绑定命令 集中管理 16 可编辑 ZigBeeDeviceObjectBindRequest 任何一个设备都可以发送一个ZDO信息给网络中的另一个设备 用来建立绑定表 称之为援助绑定 它可以为一个发送设备创建一个绑定记录 Match方式一个节点可以通过调用afSetMatch函数允许或禁止本节点被Match 协议栈默认允许 可以手工关闭 然后另外一个节点在一定的时间内发起ZDP MatchDescReq请求 允许被Match的节点会响应这个Req 发起的节点在接收到RSP的时候就会自动处理绑定 17 可编辑 Match方式 网络中不一定有协调器存在 但是有A B C D等多个节点 A性质是Outcluster B C D的性质是Incluster 你可以通过按键策略来在一定时间内允许B C D中的任何一个开启被Match的功能 同时A发起Match请求 广播的 那么被允许Match的节点就会在收到请求后将自己的信息返给A A在得到rsp的时候来处理绑定 18 可编辑 Match方式绑定流程 19 可编辑 Match方式绑定流程 20 可编辑 ZigBeeDeviceObjectEndDeviceBindRequest 这个机制是在指定的时间周期 timeoutperiod 内 通过按下选定设备上的按钮或者类似的动作来绑定 协调器在指定的时间周期内 搜集终端设备的绑定请求信息 然后以配置ID ProfileID 和簇ID ClusterID 协议为基础 创建一个绑定表记录作为结果 默认的设备绑定时间周期 APS DEFAULT MAXBINDING TIME 是16秒钟 在nwk globals h中定义 但是将它添加到f8wConfig cfg中 则可以更改 21 可编辑 ZigBeeDeviceObjectEndDeviceBindRequest绑定程序流程 在GenericApp c中的GenericApp HandleKeys函数中首先确定目的地址类型及目的地址 然后调用ZDApp SendEndDeviceBindReq 函数ZDApp SendEndDeviceBindReq搜集所有终端节点的请求信息 然后调用ZDP EndDeviceBindReq userApp c 函数将这些信息通过fillAndSend ZDProfile c 函数调用AF DataRequest ZDProfile c 函数发送给协调器 22 可编辑 ZigBeeDeviceObjectEndDeviceBindRequest绑定程序流程 协调器调用函数ZDApp ProcessOSALMsg ZDApp c ZDApp ProcessOSALMsg调用函数ZDP IncomingData ZDProfile c 函数接收这些信息 ZDApp ProcessMsgCBs函数处理响应信息 调用ZDO MatchEndDeviceBind ZDObject c中 函数来处理这个请求 23 可编辑 ZigBeeDeviceObjectEndDeviceBindRequest绑定程序流程 当收到两个匹配的终端设备绑定请求 协调器在请求设备中启动创建源绑定记录的进程 假设在ZDO终端设备中发现了匹配的请求 协调器将执行下面的步骤 发送一个解除绑定请求给第一个设备 这个终端设备锁定进程 这样解除绑定被首先发送来去掉一个已经存在的绑定记录 等待ZDO解除绑定的响应 如果响应的状态是ZDP NO ENTRY 则发送一个ZDO绑定请求 24 可编辑 ZigBeeDeviceObjectEndDeviceBindRequest绑定程序流程 在源设备中创建一个绑定记录 如果状态是ZDP SUCCESS 则继续前进到第一个设备的簇ID 等待ZDO绑定响应 如果收到了 则继续前进到第一个设备的下一个簇ID 当地一个设备完成后 用同样的方法处理第二个设备 当第二个设备也完成之后 发送ZDO终端设备绑定请求消息给两个设备 25 可编辑 DeviceApplication 另一种进入设备绑定记录的方式是应用自己管理绑定表 这就意味着应用程序需要通过调用下面的绑定管理函数在本地进入并且删除绑定记录 bindAddEntry 在绑定表中增加一个记录bindRemoveEntry 从绑定表中删除一个记录bindRomoveClusterIdFromList 从一个存在的绑定表记录中删除一个群IDbindAddClusterIdToList 向一个已经存在的绑定记录中增加一个群IDbindRemoveDev 删除所有地址引用的记录 26 可编辑 DeviceApplication bindRemoveSrcDev 删除所有源地址引用的记录bindUpdateAddr 将记录更新为另一个地址bindFindExisting 查找一个绑定表记录bindIsClusterIdInList 在表记录中检查一个已经存在的群IDbindNumBoundTo 拥有相同地址 源或者目的 的记录的个数bindNumEntries 表中记录的个数bindCapacity 最多允许的记录个数bindWriteNV 在NV中更新表 27 可编辑 实例讲解 预备知识 ENDPOINT一般描述符 每个ENDPOINT都必须有一个Zigbee简单描述 这些描述对Zigbee网络刻画了这个ENDPOINT 其他设备可以询问这个终端以知道这个设备的类型 28 可编辑 实例讲解 预备知识 ENDPOINT一般描述符 SimpleDescriptionFormatStructuretypedefstruct byteEndPoint uint16AppProfId uint16AppDeviceId byteAppDevVer 4 byteReserved 4 AF V1 SUPPORTusesforAppFlags 4 byteAppNumInClusters cId t pAppInClusterList byteAppNumOutClusters cId t pAppOutClusterList SimpleDescriptionFormat t 29 可编辑 实例讲解 预备知识 ENDPOINT一般描述符 EndPoint 端口号 1 240这是节点的子地址 用来接收数据AppProfId 定义了这个终端上支持的ProfileID ID最好遵循由ZigBee联盟的分配 AppDeviceId 终端支持的设备ID ID最好遵循ZigBee联盟的分配 AppDevVer 此终端上设备执行的设备描述的版本 0 x00为Version1 0 Reserved 保留AppNumInClusters 终端支持的输入簇数目pAppInClusterList 指向输入ClusterID列表的指针AppNumOutClusters 终端支持的输出簇数目pAppOutClusterList 指向输出ClusterID列表的指针 30 可编辑 实例讲解 预备知识 ENDPOINT描述符 节点中的每一个ENDPOINT都必须有一个设备描述符typedefstruct byteendPoint byte task id PointertolocationoftheApplicationtaskID SimpleDescriptionFormat t simpleDesc afNetworkLatencyReq tlatencyReq endPointDesc t task id 任务ID指针 当接收到消息时 此任务ID将指示消息传递目的 接收到的消息是以OSAL消息形式包装的 将发送到一个任务 simpleDesc 指向这个终端的ZigBee简单描述 必须用noLatencyReqs来填充 31 可编辑 实例讲解 预备知识 设备注册函数 afStatus tafRegister endPointDesc t epDesc 为设备注册一个新的终端epDesc 指向终端描述符返回值 afStatus t 若成功则返回ZSuccess 否则返回ZComDef h中定义的错误 32 可编辑 实例讲解 预备知识 发送数据的函数 afStatus tAF DataRequest afAddrType t dstAddr endPointDesc t srcEP uint16cID uint16len uint8 buf uint8 transID uint8options uint8radius dstAddr 目标地址指针 srcEP 发送终端的终端描述符指针cID 簇IDlen 要发送的字节数buf 指向要发送的数据缓存的指针transID 事务序列号指针 如果消息缓存发送 这个函数将增加这个数字 33 可编辑 实例讲解 预备知识 发送数据的函数 options 发送选项 可以由下面一项 或几项相或得到AF ACK REQUEST0 x10要求APS应答 这是应用层的应答 只在直接发送 单播 时使用 AF DISCV ROUTE0 x20总要包含这个选项AF SKIP ROUTING0 x80设置这个选项将导致设备跳过路由而直接发送消息 终点设备将不向其父亲发送消息 在直接发送 单播 和广播消息时很好用 radius 最大的跳数 用默认值AF DEFAULT RADIUSafStatus t 成功则为ZSuccess definedinZComDef h 否则Errors definedinZComDef h 34 可编辑 实例讲解 预备知识 绑定请求 ZDP EndDeviceBindReq参数说明afStatus tZDP EndDeviceBindReq zAddrType t dstAddr uint16LocalCoordinator byteendPoint uint16ProfileID byteNumInClusters cId t InClusterList byteNumOutClusters cId t OutClusterList byteSecurityEnable dstAddr 协调器地址 有协调器协助进行绑定 LocalCoordinator 需要绑定的节点网络地址 本节点地址 endPoint 需要绑定的端点号 ProfileID 协议ID NumInClusters 输入簇个数 InClusterList 输入簇列表 NumOutClusters 输出簇个数 OutClusterList 输出簇列表 35 可编辑 实例讲解 预备知识 绑定匹配应答 afStatus tZDP MatchDescReq zAddrType t dstAddr uint16nwkAddr uint16ProfileID byteNumInClusters cId t InClusterList byteNumOutClusters cId t OutClusterList byteSecurityEnable 36 可编辑 实例讲解 定义输入 输出簇定义两个设备描述用户任务初始化用户任务处理函数按键处理上键 ENDDEVICE发起绑定请求右键 CORDINATER发起绑定请求左键 启动Match方式中键 要求添加一个程序 按下CORDINATER中键控制ENDDEVICE一个灯 37 可编辑 绑定表演程序简介 38 可编辑 绑定表演 1 重新依次启动协调器 路由节点及终端节点 等待节点都加入网络后 把路由节点或终端节点的摇杆按键向右拔 OLED显示 39 可编辑 绑定表演 2 然后把另一个节点的摇杆按键也向右拔 OLED显示 如果绑定成功 两个节点同时显示 40 可编辑 绑定表演 3 如果两个节点绑定成功后 这两个节点会启动超时定时器 每隔3秒向对方发送一次数据 另一个节点接收到数据后显示出来 并显示接收到数据的次数 如图 41 可编辑 实例讲解2 自动匹配使用IAR7 51打开 Projects zstack Samples GenericApp CC2530DB 中工程文件 GenericApp eww 查看物理地址 两个节点物理地址不能相同修改PANID 每个同学不一样 42 可编辑 代码讲解 GenericApp cGenericApp HandleKey ZDP MatchDescReq 发送绑定请求fillAndSend AF DataRequest 将打包好的数据通过无线的形式发送出去 注意是发给ZDO层地址ZDO层接收到无线数据包后 会产生一个AF INCOMING MSG CMD消息 43 可编辑 代码讲解 ZDApp cZDP IncomingData 将消息按指定格式提取出来 并将消息路由到不同函数进行处理 将在ZDO注册过的回调消息 转交到回调消息响应部分处理 将指定的簇交由对应函数处理 handled ZDO SendMsgCBs 在文件ZDProfile c中注册绑定消息处理函数ZDO ProcessMatchDescReq 44 可编辑 代码讲解 ZDO ProcessMatchDescReq 遍历本设备中注册过的端点描述符 使每个端点描述符的簇列表与无线收到簇列表进行匹配 ZDP MatchDescRsp 成功匹配 发送Match Desc rsp消息在应用层注册有匹配描述符响应消息 当无线接收到响应数据包 在应用层回产生一个ZDO CB MSG消息 并调用GenericApp ProcessZDOMsgs函数进行处理 45 可编辑 代码讲解 GenericApp ProcessZDOMsgs caseMatch Desc rsp ZDO ParseEPListRsp 对接收到的信息包进行解析 并将解析得到地址信号保存起来 作为通信的依据 在应用层注册匹配描述符响应 ZDO RegisterForZDOMsg GenericApp TaskID Match Desc rsp 46 可编辑 编写无线应用程序的基本流程 定义简单描述符定义输入 输出簇ID 注意要绑定的一对簇ID要一样发送绑定请求ZDP EndDeviceBindR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 太原年会活动策划方案
- 城投公司合作策划方案
- 地产公司国庆策划方案
- 大型活动直播活动方案
- 夜宵店铺活动方案
- 夏天婚礼活动方案
- 多彩花盆活动方案
- 大学跨校区活动方案
- 基层活动系列活动方案
- 大棚种菜体验活动方案
- 2025年湖北省中考生物、地理合卷试卷真题(含答案)
- 大疆无人机内部管理制度
- 路面铣刨工入场安全教育试卷(含答案)
- 2025长沙市辅警考试试卷真题带答案
- 胸痛健康教育课件
- 2025年合肥城建发展股份有限公司及所属子公司招聘17人(二批次)笔试参考题库附带答案详解
- 2025年项目终止协议
- 医院员工手册管理制度
- 2024大华网络摄像机使用说明书全集
- 泉州水务集团有限公司招聘考试真题2024
- 东航客运岗位面试题目及答案
评论
0/150
提交评论