ZigBee2007系统-远程数据采集.pdf
《ZigBee2007系统-远程数据采集.pdf》由会员分享,可在线阅读,更多相关《ZigBee2007系统-远程数据采集.pdf(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 ZigBee 2007 无线系统 TI-CC2530 远程数据采集 2010 锋硕电子科技有限公司 2010-9-27 ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 目录 第一章 功能描述.3 第二章 工程整体架构和选项设置.5 2.1 工程架构.5 2.2 工程选项设置.7 第三章 App 初始化和任务事件处理.11 3.1 App 初始化.11 3.2 App 任务事件处理函数.11 第四章 ZDO 初始化和任务事件处理.13 4.1 ZDO 初始化.13 4.2 ZDO 任务事件处理函数.13 第五章 采集节点建立网络流程分析.15 5.1 采
2、集节点设备类型和初始状态.15 5.2 采集节点建立网络流程.15 第六章 传感节点加入网络流程分析.20 6.1 传感节点设备类型和初始状态.20 6.2 传感节点建立网络流程.20 第七章 采集节点与传感节点绑定分析.25 第八章 传感节点发送数据.30 第九章 采集节点接收数据.32 ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 第一章第一章 功能描述功能描述 本工程的目录为:ZigBee2007FSCodeZStack-CC2530-2.3.1-1.4.0ProjectszstackSamplesCollector_Sensor 在远程数据采集
3、中,传感节点(sensor node)将采集到的传感数据发送至远端的采集节点(collection node),以便用户进行离线的分析和处理。多个传感节点与唯一的采集节点组成星型网络拓扑结构。采集节点传感节点1传感节点n 图 1.1 远程数据采集网络拓扑结构 本例中,传感节点使用锋硕电子开发的终端节点 CC2530,记录当前温度值和电压值:ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 采集节点使用协调器节点 CC2530+GPRS,使用串口终端显示并打印传感数据:为实现上述目的,整个应用程序应该具备以下功能:ZigBee 2007 无线系统 2010
4、年 9 月 27 日 锋硕电子科技有限公司 1)采集节点自动建立网络(注:首次启动时,需按下按键 S1 配置自动启动)2)传感节点自动发现采集节点,而且一旦加入网络后,能够自动与采集节点建立绑定;3)传感节点能够周期性地向采集节点发送数据,并且用端到端确认(end-to-end ACK)的发送模式;4)如果传感节点没有收到采集节点的确认消息,它将解除与该采集节点的绑定,然后,重新发现采集节点并与其建立绑定。第二章第二章 工程工程整体整体架构和选项设置架构和选项设置 2.12.1 工程工程架构架构 用户打开 SimpleApp 工程后,会在 Workspace 区域看到不同的设备类型,不同的设备
5、类型 下均包含 App 文件夹,里面存放着各种应用实现的源文件。可以发现,每种设备类型都包含sapi.c、sapi.h 和 SimpleApp.h 文件,即每种设备程序运行时的任务初始化函数、任务事件处理函数均是在 sapi.c 中实现。Z-Stack 的目录结构如图 2.1 所示:1)App:应用层,存放应用程序。2)HAL:硬件层,与硬件电路相关。3)MAC:数据链路层。4)MT:监控调试层,通过串口调试各层,与各层进行直接交互。5)NWK:网络层。6)OSAL:操作系统层。7)Profile:协议栈配置文件(AF)。ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电
6、子科技有限公司 8)Security:安全层。9)Services:地址处理层。10)Tools:工程配置。11)ZDO:设备对象,调用 APS 子层和 NWK 层服务。12)Zmac:MAC 层接口函数。13)ZMain:整个工程的入口。14)Output:输出文件(由 IAR 自动生成)。对于采集节点,在 Workspace 区域的下拉菜单中选择 SimpleCollectorEB,鼠标点击上方的“make 按钮”后,所有文件对应的红色“*”将消失,此时 SimpleCollector.c 是进行编译的文件,而 SimpleController.c、SimpleSensor.c 和 Sim
7、pleSwitch.c 颜色呈灰色,表示这 3 个文件对于采集节点而言不会使用。采集节点在整个网络中实现ZigBee协调器的功能,因此配置文件f8wCoord.cfg将被使用,而 f8wEndev.cfg 和 f8wRouter.cfg 不会使用。如图 2.1 所示:图 2.1 采集节点工程架构 ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 对于传感节点,在Workspace区域的下拉菜单中选择SimpleSensorEB,鼠标点击上方的“make按钮”后,所有文件对应的红色“*”将消失,此时 SimpleSensor.c 是进行编译的文件,而Simp
8、leCollector.c、SimpleController.c 和 SimpleSwitch.c 颜色呈灰色,表示这 3 个文件对于传感节点而言不会使用。如下图所示:图 2.2 传感节点工程架构 2.22.2 工程工程选项设置选项设置 打开 SimpleApp 工程后,欲进入到采集节点的编译选项设置界面。选中工程名SimpleApp-SimpleCollectorEB,然后根据工程选项设置的路径:Project-Options-C/C+Compiler-Preprocessor-Defined。ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 图 2.3
9、 采集节点 IAR 工程选项设置 要为工程选项添加一条编译选项,只需在 Defined symbols 框内添加一条新选项即可;要取消编译选项,只需在该编译选项的左侧添加“x”即可。欲进入到传感节点的编译选项设置界面。选中工程名 SimpleApp-SimpleSensorEB,然后根据工程选项设置的路径:Project-Options-C/C+Compiler-Preprocessor-Defined。ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 图 2.4 传感节点 IAR 工程选项设置 对于采集节点和传感节点,分别打开 Tools-f8wCoor
10、d.cfg 和 Tools-f8wEndev.cfg 后,可以看到关于采集节点传感节点的配置信息。综上,总结采集节点和传感节点的工程选项设置如下表:节点类型节点类型 IAR IAR 选项设置选项设置 .cfg.cfg 配置文件配置文件 采集节点 ZIGBEEPRO HOLD_AUTO_START BUILD_ALL_DEVICES REFLECTOR NV_INIT xNV_RESTORE ZTOOL_P1 MT_TASK MT_SYS_FUNC xMT_SAPI_FUNC xMT_SAPI_CB_FUNC-DZDO_COORDINATOR -DRTR_NWK 传感节点 ZIGBEEPRO N
11、WK_AUTO_POLL HOLD_AUTO_START REFLECTOR POWER_SAVING NV_INIT 空 ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 xNV_RESTORE xZTOOL_P1 xMT_TASK xMT_SYS_FUNC xMT_SAPI_FUNC xMT_SAPI_CB_FUNC ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 第三章第三章 AppApp 初始化初始化和任务事件处理和任务事件处理 3.13.1 AppApp 初始化初始化 Sapi.c 中的 SAPI_Init
12、()函数实现 App 初始化,主要完成以下几个方面的初始化工作:1)初始化任务 ID 号,其中 task_id 由操作系统初始化任务函数 osalInitTasks()决定。sapi_TaskID=task_id;2)初始化绑定标志位,默认不允许绑定。sapi_bindInProgress=0 xffff;3)初始化端点描述符,分别有:端点任务 ID 号、端点号、简单描述符和延时请求,端点描 述符内部的简单描述符由应用程序决定。sapi_epDesc.task_id=&sapi_TaskID;sapi_epDesc.endPoint=zb_SimpleDesc.EndPoint;sapi_ep
13、Desc.simpleDesc=(SimpleDescriptionFormat_t*)&zb_SimpleDesc;sapi_epDesc.latencyReq=noLatencyReqs;4)在 AF 层注册该端点描述符。afRegister(&sapi_epDesc);5)关闭匹配描述符的响应。afSetMatch(sapi_epDesc.simpleDesc-EndPoint,FALSE);6)注册 2 个响应事件,即网络地址响应和匹配描述符响应。ZDO_RegisterForZDOMsg(sapi_TaskID,NWK_addr_rsp);ZDO_RegisterForZDOMsg(
14、sapi_TaskID,Match_Desc_rsp);7)注册按键事件。RegisterForKeys(sapi_TaskID);8)设置进入事件,启动应用。osal_set_event(task_id,ZB_ENTRY_EVENT);3.2 App3.2 App 任务事件处理函数任务事件处理函数 在 SAPI_Init()函数的最后设置了进入事件(ZB_ENTRY_EVENT),这将出发任务的事ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 件处理函数 SAPI_ProcessEvent()。该函数处理任务所有的事件,包含时间、消息和其他用户定义的事
15、件。事件事件 处理函数处理函数 系统消息事件 SYS_EVENT_MSG ZDO 反馈 ZDO_CB_MSG SAPI_ProcessZDOMsgs()AF 数据确认 AF_DATA_CONFIRM_CMD SAPI_SendDataConfirm()AF 信息输入 AF_INCOMING_MSG_CMD SAPI_ReceiveDataIndication()ZDO 状态改变 ZDO_STATE_CHANGE SAPI_StartConfirm()ZDO 匹配描述符响应 ZDO_MATCH_DESC_RSP_SENT SAPI_AllowBindConfirm()按键 KEY_CHANGE
16、zb_HandleKeys()发送数据确认 SAPICB_DATA_CNF SAPI_SendDataConfirm()绑定确认 SAPICB_BIND_CNF SAPI_BindConfirm()设备启动确认 SAPICB_START_CNF SAPI_StartConfirm()允许绑定时间事件 ZB_ALLOW_BIND_TIMER afSetMatch()绑定时间事件 ZB_BIND_TIMER SAPI_BindConfirm()进入事件 ZB_ENTRY_EVENT zb_StartRequest()ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限
17、公司 第四章第四章 ZDOZDO 初始化和任务事件处理初始化和任务事件处理 4.14.1 ZDOZDO 初始化初始化 ZDApp.c 中的 ZDApp_Init()函数实现 ZDO 初始化,主要完成以下几个方面的初始化工作:1)初始化任务 ID 号,其中 task_id 由操作系统初始化任务函数 osalInitTasks()决定。ZDAppTaskID=task_id;2)初始化网络地址,地址模式为 16 位,网络地址为无效。ZDAppNwkAddr.addrMode=Addr16Bit;ZDAppNwkAddr.addr.shortAddr=INVALID_NODE_ADDR;3)保存 6
18、4 位 IEEE 地址。NLME_GetExtAddr();4)检测是否阻止自动启动。ZDAppCheckForHoldKey();5)根据设备类型初始化网络服务 ZDO_Init();6)注册端点 0 afRegister(endPointDesc_t*)&ZDApp_epDesc);7)启动设备(非阻止情况)ZDOInitDevice();8)注册响应事件 ZDApp_RegisterCBs();4.24.2 ZDOZDO 任务事件处理函数任务事件处理函数 任务事件处理函数 ZDApp_event_loop()包含消息、网络初始化、网络启动、路由启动等事件。ZigBee 2007 无线系统
19、 2010 年 9 月 27 日 锋硕电子科技有限公司 事件事件 处理函数处理函数 系统消息事件 SYS_EVENT_MSG AF 信息输入 AF_INCOMING_MSG_CMD ZDP_IncomingData()ZDO 反馈 AF_DATA_CONFIRM_CMD ZDApp_ProcessMsgCBs()AF 数据确认 AF_DATA_CONFIRM_CMD 无 网络发现确认 ZDO_NWK_DISC_CNF NLME_JoinRequest()或 NLME_ReJoinRequest()网络加入指示 ZDO_NWK_JOIN_IND ZDApp_ProcessNetworkJoin(
20、)网络加入请求 ZDO_NWK_JOIN_REQ ZDApp_NetworkInit()网络初始化 ZDO_NETWORK_INIT ZDO_StartDevice()网络启动 ZDO_NETWORK_START ZDApp_NetworkStartEvt()路由启动 ZDO_ROUTER_START osal_pwrmgr_device()状态改变 ZDO_STATE_CHANGE_EVT ZDO_UpdateNwkStatus()网络 NV 更新 ZDO_NWK_UPDATE_NV ZDApp_SaveNetworkStateEvt()设备重新启动 ZDO_DEVICE_RESET Sys
21、temResetSoft()ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 第五章第五章 采集节点建立网络流程分析采集节点建立网络流程分析 5.15.1 采集节点采集节点设备类型和初始状态设备类型和初始状态 采集节点的 IAR 工程配置选项中定义了 BUILD_ALL_DEVICES,因此在 ZGlobals.h 文件中:#define ZSTACK_DEVICE_BUILD 0 x07 进一步有:#define ZG_BUILD_COORDINATOR_TYPE 0 x01 从而:#define DEVICE_LOGICAL_TYPE 0 x00 由此
22、,在 ZGlobals.c 文件中,可以得知采集节点的设备逻辑类型为协调器:zgDeviceLogicalType=0 x00 以及:#define ZG_DEVICE_COORDINATOR_TYPE 1#define ZG_DEVICE_RTR_TYPE 1 采集节点的 IAR 工程配置选项中定义了阻止自定启动,即 HOLD_AUTO_START,因此在ZDApp.c 文件中定义了设备初始状态和启动模式:devState=DEV_HOLD devStartMode=MODE_HARD 在采集节点的 NV 中,默认状态下没有设置启动模式,即 ZCD_NV_STARTUP_OPTION=0 因
23、此,初次使用采集节点时不会自定启动该节点。另外,对应采集节点的 SimpleCollector.c 定义了应用层的状态:myAppState=APP_INIT 5.25.2 采集节点建立网络流程采集节点建立网络流程 当采集节点上电后,首先经历一系列的初始化工作,最终在 sapi 层设置进入事件,然后通ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 过任务事件处理函数对该事件进行处理,当读取 NV 的启动模式选项时,zb_ReadConfiguration(ZCD_NV_STARTUP_OPTION,sizeof(uint8),&startOptions)
24、;判断为非自动启动,因此看到采集节点的 LED_2 闪烁,HalLedBlink(HAL_LED_2,0,50,500);操作系统等待其他事件发生。当按下按键 S1 后,由于在 sapi 层注册了按键事件,因此会发送 KEY_CHANGE 消息至 sapi层,当收到 KEY_CHANGE 消息后,sapi 层的任务事件处理函数调用:zb_HandleKeys(keyChange_t*)pMsg)-state,(keyChange_t*)pMsg)-keys);然后将设备逻辑类型(协调器)写入到 NV,并将自动启动模式写入到 NV:zb_WriteConfiguration(ZCD_NV_LOG
25、ICAL_TYPE,sizeof(uint8),&logicalType);zb_WriteConfiguration(ZCD_NV_STARTUP_OPTION,sizeof(uint8),&startOptions);最后重新启动:zb_SystemReset();详细的网络形成流程图如图 5.1 所示:ZigBee 2007 无线系统 2010 年 9 月 27 日 锋硕电子科技有限公司 sapi初始化设置进入事件ZB_ENTRY_EVENT初始化设备ZDOInitDevice()处理进入事件zb_StartRequest()sapisapiZDOZDONWKNWK设置网络初始化事件ZD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ZigBee2007 系统 远程 数据 采集
限制150内