无线传感器网络实验教程---zstack协议栈中绑定.ppt

上传人:y****3 文档编号:7108847 上传时间:2020-03-13 格式:PPT 页数:49 大小:1.12MB
返回 下载 相关 举报
无线传感器网络实验教程---zstack协议栈中绑定.ppt_第1页
第1页 / 共49页
无线传感器网络实验教程---zstack协议栈中绑定.ppt_第2页
第2页 / 共49页
无线传感器网络实验教程---zstack协议栈中绑定.ppt_第3页
第3页 / 共49页
点击查看更多>>
资源描述
无线传感器网络实验教程绑定实验 主讲教师 柯宗武2012年12月 Copyright 柯宗武 本章内容 绑定的基本概念绑定的方法实例讲解 Copyright 柯宗武 实验内容 协调器通过广播方式绑定终端节点 在液晶屏上显示绑定过程 终端节点绑定到协调器 绑定成功后发送 HelloWorld 给协调器并显示 绑定完成后 按协调器中键 center 时点亮对方的指示灯 Copyright 柯宗武 预备知识 传感器网络数据通信 Copyright 柯宗武 预备知识 ZigBee网络地址 网络地址在一个新设备加入网络之后协调器会主动为它分配一个网络地址 以方便在网络中的身分确认理论地址范围 0 65535某些专用的地址不会分配给设备如 0 xFFFF是广播地址 所有设备 0 xFFFE是广播到FFD设备 全功能设备 路由器 Copyright 柯宗武 预备知识 ZStack中网络地址定义 typedefstruct union uint16shortAddr ZLongAddr textAddr addr byteaddrMode zAddrType t 枚举类型enum AddrNotPresent 0 AddrGroup 1 Addr16Bit 2 Addr64Bit 3 AddrBroadcast 15 Copyright 柯宗武 预备知识 应用框架 ApplicationFramework AF层为各个用户自定义的应用对象提供了模板式的活动空间 为每个应用对象提供了键值对KVP服务和报文MSG服务两种服务供数据传输使用 每个节点除了64位的IEEE地址 16位的网络地址 每个节点还提供了8位的应用层入口地址 对应于用户应用对象 端点0为ZDO接口 端点1至240供用户自定义用于对象使用 端点255为广播地址 端点241 254保留将来使用 Copyright 柯宗武 预备知识 应用框架 ApplicationFramework 每一个应用都对应一个配置文件 Profile 配置文件包括 设备ID DeviceID 事务集群ID clusterID 属性ID AttributeID 等 AF可以通过这些信息来决定服务类型 Copyright 柯宗武 预备知识 profiles 应用profiles是一组统一的消息 消息格式和处理方法 允许开发者建立一个可以共同使用的分布式应用程序 这些应用是利用驻扎在独立设备中的应用实体来实现的 这些应用profiles允许应用程序发送命令 请求数据和处理命令的请求 总之 配置文件使得ZigBee设备可以互操作 ZigBee联盟已经定义了很多标准的配置文件 比如远程控制开关配置文件和智能家居等 任何遵循某一标准配置文件的节点都可以与其他实现相同配置文件的节点进行互操作 一个publicprofile也规定了profile的ID 比如智能家居就规定是0 x104 Copyright 柯宗武 预备知识 簇 cluster 簇标识符可用来区分不同的簇 簇标识符联系着从设备流出和向设备流入的数据 在特殊的应用profiles范围内 簇标识符是唯一的 cluster要理解成一个大方向下的一个特定对象 比如智能家居下的一个调光器 操作这个调光器就需要一些命令 比如变亮 变暗 关灯 开灯这些 另外 这个调光器也会有一个attribute 也就属性 比如当前的亮度 由亮变暗的过程经历多长时间 Copyright 柯宗武 预备知识 簇 cluster 总结说来 Profile规范了应该包括哪些cluster 一个cluster会有一个ID 在一个cluster下又会有很多command 也会有很多attibute 在一个cluster下面command和attribute的ID要唯一 不同的cluster下可以重复 不同的profile下clusterID也可以重复 Copyright 柯宗武 预备知识 ZigBee设备对象 ZDO ZigBee设备对象 ZDO 描述了一个基本的功能函数 这个功能在应用对象 设备profile和APS之间提供了一个接口 ZDO位于应用框架和应用支持子层之间 它满足所有在ZigBee协议栈中应用操作的一般需要 此外ZDO还有以下作用 初始化应用支持子层 APS 网络层 NWK 安全服务规范 SSS 从终端应用集合中配置的信息来确定和执行安全管理 发现 网络管理 以及绑定管理 Copyright 柯宗武 预备知识 ZigBee设备对象 ZDO ZDO描述了应用框架层中应用对象的公用接口以及控制设备和应用对象的网络功能 在终端节点0 ZDO提供了与协议栈中与低一层连接的接口 如果是数据则通过APSDE SAP 如果是控制信息则通过APSME SAP APS数据实体 APSDE 提供在同一个网络中的两个或者更多的应用实体之间的数据通信 通过APSDE服务接入点 APSDE SAP APS管理实体 APSME 提供多种服务给应用对象 这些服务包含安全服务和绑定设备 并维护管理对象的数据库 也就是我们常说的AIB Copyright 柯宗武 预备知识 ZDO与Profile的关系 ZDO是ZigBee设备对象 属于特殊的Endpoint 特制自己 Profile面向某个应用的公约或准则 包括5种描述项 AF是应用层 Profile是法律条款 ZDO是逻辑工作实体 自己 Profile中的多种描述项是条例 是图纸 ZDO是具体实现 以上内容详见 ZigBee2007协议规范 Copyright 柯宗武 绑定 Binding 的基本概念 绑定是一种两个 或者多个 应用设备之间信息流的控制机制 绑定允许应用程序发送一个数据包而不需要知道目标地址 APS层从它的绑定表中确定目标地址 然后将数据继续向目标应用或者目标组发送当两个设备已经在他们的简单描述符结构中登记为一样的簇ID 并且一个作为输入另一个作为输出时 绑定才能成功 绑定服务是针对设备端点上的簇 用户程序只需要提供端点号和簇ID 就可以通过绑定表找到对应的被绑定的节点的网络地址和端点号 从而实现无线数据的发送 Copyright 柯宗武 建立绑定表 有四种方法可以建立一个绑定表 ZigBeeDeviceObjectBindRequest Match方式 一个启动工具可以告诉设备创建一个绑定记录ZigBeeDeviceObjectEndDeviceBindRequest两个设备可以告诉协调器它们想要建立一个绑定表记录 协调器来协调并在两个设备中创建绑定表记录 DeviceApplication一个设备上的应用程序建立或者管理一个绑定表由管理员手工绑定通过pc机串口发送绑定命令 集中管理 Copyright 柯宗武 ZigBeeDeviceObjectBindRequest 任何一个设备都可以发送一个ZDO信息给网络中的另一个设备 用来建立绑定表 称之为援助绑定 它可以为一个发送设备创建一个绑定记录 Match方式一个节点可以通过调用afSetMatch函数允许或禁止本节点被Match 协议栈默认允许 可以手工关闭 然后另外一个节点在一定的时间内发起ZDP MatchDescReq请求 允许被Match的节点会响应这个Req 发起的节点在接收到RSP的时候就会自动处理绑定 Copyright 柯宗武 Match方式 网络中不一定有协调器存在 但是有A B C D等多个节点 A性质是Outcluster B C D的性质是Incluster 你可以通过按键策略来在一定时间内允许B C D中的任何一个开启被Match的功能 同时A发起Match请求 广播的 那么被允许Match的节点就会在收到请求后将自己的信息返给A A在得到rsp的时候来处理绑定 Copyright 柯宗武 Match方式绑定流程 Copyright 柯宗武 Match方式绑定流程 Copyright 柯宗武 ZigBeeDeviceObjectEndDeviceBindRequest 这个机制是在指定的时间周期 timeoutperiod 内 通过按下选定设备上的按钮或者类似的动作来绑定 协调器在指定的时间周期内 搜集终端设备的绑定请求信息 然后以配置ID ProfileID 和簇ID ClusterID 协议为基础 创建一个绑定表记录作为结果 默认的设备绑定时间周期 APS DEFAULT MAXBINDING TIME 是16秒钟 在nwk globals h中定义 但是将它添加到f8wConfig cfg中 则可以更改 Copyright 柯宗武 ZigBeeDeviceObjectEndDeviceBindRequest绑定程序流程 在GenericApp c中的GenericApp HandleKeys函数中首先确定目的地址类型及目的地址 然后调用ZDApp SendEndDeviceBindReq 函数ZDApp SendEndDeviceBindReq搜集所有终端节点的请求信息 然后调用ZDP EndDeviceBindReq userApp c 函数将这些信息通过fillAndSend ZDProfile c 函数调用AF DataRequest ZDProfile c 函数发送给协调器 Copyright 柯宗武 ZigBeeDeviceObjectEndDeviceBindRequest绑定程序流程 协调器调用函数ZDApp ProcessOSALMsg ZDApp c ZDApp ProcessOSALMsg调用函数ZDP IncomingData ZDProfile c 函数接收这些信息 ZDApp ProcessMsgCBs函数处理响应信息 调用ZDO MatchEndDeviceBind ZDObject c中 函数来处理这个请求 Copyright 柯宗武 ZigBeeDeviceObjectEndDeviceBindRequest绑定程序流程 当收到两个匹配的终端设备绑定请求 协调器在请求设备中启动创建源绑定记录的进程 假设在ZDO终端设备中发现了匹配的请求 协调器将执行下面的步骤 发送一个解除绑定请求给第一个设备 这个终端设备锁定进程 这样解除绑定被首先发送来去掉一个已经存在的绑定记录 等待ZDO解除绑定的响应 如果响应的状态是ZDP NO ENTRY 则发送一个ZDO绑定请求 Copyright 柯宗武 ZigBeeDeviceObjectEndDeviceBindRequest绑定程序流程 在源设备中创建一个绑定记录 如果状态是ZDP SUCCESS 则继续前进到第一个设备的簇ID 等待ZDO绑定响应 如果收到了 则继续前进到第一个设备的下一个簇ID 当地一个设备完成后 用同样的方法处理第二个设备 当第二个设备也完成之后 发送ZDO终端设备绑定请求消息给两个设备 Copyright 柯宗武 DeviceApplication 另一种进入设备绑定记录的方式是应用自己管理绑定表 这就意味着应用程序需要通过调用下面的绑定管理函数在本地进入并且删除绑定记录 bindAddEntry 在绑定表中增加一个记录bindRemoveEntry 从绑定表中删除一个记录bindRomoveClusterIdFromList 从一个存在的绑定表记录中删除一个群IDbindAddClusterIdToList 向一个已经存在的绑定记录中增加一个群IDbindRemoveDev 删除所有地址引用的记录 Copyright 柯宗武 DeviceApplication bindRemoveSrcDev 删除所有源地址引用的记录bindUpdateAddr 将记录更新为另一个地址bindFindExisting 查找一个绑定表记录bindIsClusterIdInList 在表记录中检查一个已经存在的群IDbindNumBoundTo 拥有相同地址 源或者目的 的记录的个数bindNumEntries 表中记录的个数bindCapacity 最多允许的记录个数bindWriteNV 在NV中更新表 Copyright 柯宗武 实例讲解 预备知识 ENDPOINT一般描述符 每个ENDPOINT都必须有一个Zigbee简单描述 这些描述对Zigbee网络刻画了这个ENDPOINT 其他设备可以询问这个终端以知道这个设备的类型 Copyright 柯宗武 实例讲解 预备知识 ENDPOINT一般描述符 SimpleDescriptionFormatStructuretypedefstruct byteEndPoint uint16AppProfId uint16AppDeviceId byteAppDevVer 4 byteReserved 4 AF V1 SUPPORTusesforAppFlags 4 byteAppNumInClusters cId t pAppInClusterList byteAppNumOutClusters cId t pAppOutClusterList SimpleDescriptionFormat t Copyright 柯宗武 实例讲解 预备知识 ENDPOINT一般描述符 EndPoint 端口号 1 240这是节点的子地址 用来接收数据AppProfId 定义了这个终端上支持的ProfileID ID最好遵循由ZigBee联盟的分配 AppDeviceId 终端支持的设备ID ID最好遵循ZigBee联盟的分配 AppDevVer 此终端上设备执行的设备描述的版本 0 x00为Version1 0 Reserved 保留AppNumInClusters 终端支持的输入簇数目pAppInClusterList 指向输入ClusterID列表的指针AppNumOutClusters 终端支持的输出簇数目pAppOutClusterList 指向输出ClusterID列表的指针 Copyright 柯宗武 实例讲解 预备知识 ENDPOINT描述符 节点中的每一个ENDPOINT都必须有一个设备描述符typedefstruct byteendPoint byte task id PointertolocationoftheApplicationtaskID SimpleDescriptionFormat t simpleDesc afNetworkLatencyReq tlatencyReq endPointDesc t task id 任务ID指针 当接收到消息时 此任务ID将指示消息传递目的 接收到的消息是以OSAL消息形式包装的 将发送到一个任务 simpleDesc 指向这个终端的ZigBee简单描述 必须用noLatencyReqs来填充 Copyright 柯宗武 实例讲解 预备知识 设备注册函数 afStatus tafRegister endPointDesc t epDesc 为设备注册一个新的终端epDesc 指向终端描述符返回值 afStatus t 若成功则返回ZSuccess 否则返回ZComDef h中定义的错误 Copyright 柯宗武 实例讲解 预备知识 发送数据的函数 afStatus tAF DataRequest afAddrType t dstAddr endPointDesc t srcEP uint16cID uint16len uint8 buf uint8 transID uint8options uint8radius dstAddr 目标地址指针 srcEP 发送终端的终端描述符指针cID 簇IDlen 要发送的字节数buf 指向要发送的数据缓存的指针transID 事务序列号指针 如果消息缓存发送 这个函数将增加这个数字 Copyright 柯宗武 实例讲解 预备知识 发送数据的函数 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 Copyright 柯宗武 实例讲解 预备知识 绑定请求 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 输出簇列表 Copyright 柯宗武 实例讲解 预备知识 绑定匹配应答 afStatus tZDP MatchDescReq zAddrType t dstAddr uint16nwkAddr uint16ProfileID byteNumInClusters cId t InClusterList byteNumOutClusters cId t OutClusterList byteSecurityEnable Copyright 柯宗武 实例讲解 定义输入 输出簇定义两个设备描述用户任务初始化用户任务处理函数按键处理上键 ENDDEVICE发起绑定请求右键 CORDINATER发起绑定请求左键 启动Match方式中键 要求添加一个程序 按下CORDINATER中键控制ENDDEVICE一个灯 Copyright 柯宗武 绑定表演程序简介 Copyright 柯宗武 绑定表演 1 重新依次启动协调器 路由节点及终端节点 等待节点都加入网络后 把路由节点或终端节点的摇杆按键向右拔 OLED显示 Copyright 柯宗武 绑定表演 2 然后把另一个节点的摇杆按键也向右拔 OLED显示 如果绑定成功 两个节点同时显示 Copyright 柯宗武 绑定表演 3 如果两个节点绑定成功后 这两个节点会启动超时定时器 每隔3秒向对方发送一次数据 另一个节点接收到数据后显示出来 并显示接收到数据的次数 如图 Copyright 柯宗武 实例讲解2 自动匹配使用IAR7 51打开 Projects zstack Samples GenericApp CC2530DB 中工程文件 GenericApp eww 查看物理地址 两个节点物理地址不能相同修改PANID 每个同学不一样 Copyright 柯宗武 代码讲解 GenericApp cGenericApp HandleKey ZDP MatchDescReq 发送绑定请求fillAndSend AF DataRequest 将打包好的数据通过无线的形式发送出去 注意是发给ZDO层地址ZDO层接收到无线数据包后 会产生一个AF INCOMING MSG CMD消息 Copyright 柯宗武 代码讲解 ZDApp cZDP IncomingData 将消息按指定格式提取出来 并将消息路由到不同函数进行处理 将在ZDO注册过的回调消息 转交到回调消息响应部分处理 将指定的簇交由对应函数处理 handled ZDO SendMsgCBs 在文件ZDProfile c中注册绑定消息处理函数ZDO ProcessMatchDescReq Copyright 柯宗武 代码讲解 ZDO ProcessMatchDescReq 遍历本设备中注册过的端点描述符 使每个端点描述符的簇列表与无线收到簇列表进行匹配 ZDP MatchDescRsp 成功匹配 发送Match Desc rsp消息在应用层注册有匹配描述符响应消息 当无线接收到响应数据包 在应用层回产生一个ZDO CB MSG消息 并调用GenericApp ProcessZDOMsgs函数进行处理 Copyright 柯宗武 代码讲解 GenericApp ProcessZDOMsgs caseMatch Desc rsp ZDO ParseEPListRsp 对接收到的信息包进行解析 并将解析得到地址信号保存起来 作为通信的依据 在应用层注册匹配描述符响应 ZDO RegisterForZDOMsg GenericApp TaskID Match Desc rsp Copyright 柯宗武 编写无线应用程序的基本流程 定义简单描述符定义输入 输出簇ID 注意要绑定的一对簇ID要一样发送绑定请求ZDP EndDeviceBindReq或ZDP MatchDescReq绑定成功后通过调用AF DataRequest发送无线信息接收方在AF INCOMING MSG CMD消息下对接收消息进行处理 根据簇ID决定相应动作 Copyright 柯宗武 Thanks Copyright 柯宗武 参考 采集节点zmain初始化 sapiinit初始化 进入事件 按键事件 设置设备类型和启动方式 进入事件 启动设备请求 检查设备逻辑类型是否正确 初始化设备 设置一个网络初始化事件 初始化网络 交给zdapp处理 网络形成请求 网络形成确认 反馈信息 网络启动事件处理 ZDO状态改变事件处理 更新网络状态 向sapi发送ZDO状态改变事件 启动确认 至此采集节点已经启动 按键事件 允许绑定 至此采集节点已设置完毕 传感节点zmain初始化 sapiinit初始化 进入事件 按键事件 设置设备类型和启动方式 进入事件 启动设备请求 检查设备逻辑类型是否正确 初始化设备 设置一个网络初始化事件 初始化网络 交给zdapp处理 网络发现请求 网络发现确认 向ZDO发送网络发现处理信息 网络层加入请求 网络加入确认 向ZDO发送网络加入处理信息 设置ZDO状态改变事件 更新网络 向sapi发送ZDO状态改变事件 启动确认 至此传感节点已经启动 向sapi发送发现并绑定采集节点事件 包含于用户事件 发现采集节点后 向采集节点发送匹配描述符请求消息 包含于系统消息 采集节点处理匹配描述符消息处理 ZDO层ZDO ProcessMatchDescReq 如果找到与之匹配描述符 就给传感节点发送响应信息 传感节点处理匹配响应 由于初始化时已经在sapi层注册了匹配响应 响应就在sapi层处理 设置网络更新事件 空操作 查找绑定设备的IE地址 向采集节点发送IE地址请求 采集节点处理传感节点的请求 包含于ZDO层AF消息输入处理 并查找自己的IE地址 将其发送给传感节点 由于未在sapi层注册IE地址响应处理 那么就在ZDApp层处理 包含在ZDO层AF消息输入处理 传感节点对IE地址做响应处理 更新网络地址和IE地址 向应用程序绑定确认消息 设置用户事件 开始处理用户函数 发送数据给采集节点 采集节点处理接收到的数据 sapi层AF消息输入处理
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 临时分类 > 职业技能


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!