array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 ZigBee协议简介(一) - 爱码网

ZigBee协议简介(一)

注意:在没有确切把握的情况下,不要试图去改变这些网络参数

这是一篇在听课中写的博客,较为凌乱


今天来讲讲久违的ZigBee

ZigBee协议简介(一)

ZigBee的名字源自蜜蜂八字舞,蜜蜂(Bee)依靠嗡嗡(Zip)和同伴传递方位信息,依靠同伴接力形成通信网络。ZigBee的网络层可以说就是通过这个来定义的。

ZigBee协议简介(一)

从上图我们可以看见,其实IEEE只确定了ZigBee的物理层和MAC层,就是只定义了物理通信上要用到的通信协议和通信频段。剩下的都是由ZigBee联盟来确定的。我们由下图来详解一下
ZigBee协议简介(一)

物理层(PHY)

规定了什么

  1. 频段:868MHz(欧洲),915MHz(美国),2495MHz(Global)使用直接序列扩频(DSSS)
  2. 信道:27个,分别分为:868MHz(k=0),915MHz(k=1-10),2495MHz(k=11-26)
  3. 速度:868MHz(20kb),915MHz(40kb),2495MHz(250kb+)
  4. 物理层协议数据单元(PHY Protocol Data Unit ,PPDU ) 分为同步头,物理帧头和物理帧负载(PSDU)

能用来干嘛

  1. **和休眠射频收发器
  2. 信道能量检测
  3. 检测接收数据包的链路质量指示(Link Quality Indication ,LQI)
  4. 空闲信道评估(Clear Channel Assessment ,CCA)
  5. 收发数据

在概念上,物理层的收发数据还包括了数据服务和管理(维护)服务,和MAC层分别的接口叫做物理层数据服务接入点(PHY Data - Service Access Point , PD-SAP)和物理层管理实体服务接入点(PHY Data - Service Access Point , PD-SAP)和物理层管理实体服务接入点(Physical Layer Management Entity Service Access Point , PLME-SAP)

MAC层(媒体接入控制层)

规定了什么

  1. 规定了4种帧结构:信标帧
    ZigBee协议简介(一)
    数据帧
    ZigBee协议简介(一)
    确认帧
    ZigBee协议简介(一)
    和MAC命令帧
    ZigBee协议简介(一)

详见[MAC协议层详解](https://www.cnblogs.com/hzl6255/p/9846764.html)

  1. 使用CSMA-CA机制访问物理信道
  2. 如果设备是协调器,需要产生网络信标
  3. 支持时槽保障(Guaranteed Time Slot ,GTS)机制

能用来干嘛

  1. 协调器产生并发送信标,普通设备根据协调器的信标帧与协调器同步
  2. 保证信道的通信安全
  3. 支持PAN(个域网络)的关联和取消关联

概念上,MAC层也像物理层一样具有MAC层管理实体(MLME),他和网络层之间的数据交换便是(MLME-SAP),当然在MLME中,交换的是管理MAC层信息。在MAC层还有一个MAC公共部分子层(MCPS)来与网络层进行数据交换(MCPS-SAP)

网络层

网络层负责拓扑结构的建立和维护,命名和绑定服务,从而协同地完成寻址,路由,传送数据以及安全等不可或缺的任务,所以网络层是ZigBee的核心部分。

组网拓扑结构

在ZigBee中有三种角色-协调器,路由器和末端节点,分别对应着蜂群的蜂后,雄峰和工蜂。协调器在MAC层就已经提及过了,用来提供整个网络的同步问题(不进行数据交换,和蜂群一般)。而路由器则负责联系自己周围的末端节点,并协调他们进行通信。

ZigBee中支持星状,树状和网状的拓扑结构,这个可以在硬件中直接设置。
ZigBee网络架构详解

网络层规范

正如物理层和MAC层,我们可以看到整个ZigBee的协议中在每一层都存在数据实体和管理实体,在网络层也不例外。ZigBee协议的网络层划分为网络层数据实体(Network Layer Data Entity , NLDE)和网络层管理实体(Network Layer Manage Entity ,NLME)都还有相关的数据交换(管理)的SAP服务。

正如其名,他们相关的功能如下:
NLDE:

  1. 产生网络层协议数据单元(NPDU)
  2. 提供基于拓扑结构的路由策略

NLME:

  1. 配置新设备
  2. 建立网络
  3. 加入和离开网络
  4. 寻址
  5. 邻居发现
  6. 路由发现
  7. 接受控制

对应地,他们也对应着网络层的两种帧结构:数据帧和命令帧。因为这是课堂上做的,找图不太方便,还请大家自己找图了解。

能用来干嘛

  1. 通过添加不同的协议头能够从应用层生产网络层的PDU,即NPDU
  2. 确定网络的拓扑结构
  3. 配置一个新的设备,可以是拓扑结构中的各个角色
  4. 建立并启动网络
  5. 加入或离开网络
  6. ZigBee的协调器和路由器能为加入网络的设备分配空间
  7. 发现并记录邻居表,路由表
  8. 信息的接受控制,同步MAC子层或直接接收信息

应用层

ZigBee应用层有三个组成部分:应用支持子层(Application Support Sub-Layer,APS),应用框架(Application Framework ,AF)和ZigBee设备对象(ZigBee Device Object ,ZDO)

应用支持子层APS

跟之前提的一样,APS子层包含,APS数据实体(APSDE)和相应的服务接入点(APSDE-SAP)还有APS管理实体(APSME)和相应的服务接入点(APSME-SAP)。APS主要是用来应用层和网络层的接口用的,APSDE提供在同一网络应用实体之间的数据传输机制,APSME提供多种服务给应用对象。

应用框架AF

在ZigBee应用中,AF提供了两种标准服务类型。一种是键值对(Key Valve Pair ,KVP)和报文(mesage,MSG)。相应地里面还涉及到较多的属性,我们在Z-stack中再继续介绍

ZigBee设备对象ZDO

其实就是高度抽象的网络端点,主要功能集中在网络管理和维护上,里面包含了整个端点,网络的全部信息可供查询。

硬件平台TI-CC2530

  1. 劳烦自查百度及datasheet,不背书
  2. 硬件资源可见下图

ZigBee协议简介(一)

Z-Stack

显然,Z-stack是TI公司开放的ZigBee协议栈,那么现在问题来了,这么好的协议栈,要怎么来使用呢?
这里先放一张好图,详情且听下回分解

ZigBee协议简介(一)

总结

写得不是很深入,后面会写代码的时候我们再来,在刀锋上认识ZigBee

如果你觉得有丶收获的话

相关文章: