Zigbee学习(一)架构及入网
文章目录
前言
终于要开始学智能家居的zigbee了,边学习边总结,期待感兴趣的朋友们阅读指正 。
`注:本系列博客参考书是《ZigBee无线网络与收发器 [(美)法拉哈尼 著] 2013年版》
一、zigbee是什么?
1.zigbee的特点
IEEE805.15.4标准规定了PHY和MAC层的内容,属于无线个人局域网标准(PAN),zigbee标准规定了网络层和应用层的内容,根据芯片的不同协议会有差别。
zigbee主要的优势是:低功耗、低成本、低速率、近距离、短时延、网络容量大。
既然是智能家居应用,肯定有要和Wi-Fi、蓝牙做对比啦~在这边就简单对比两个指标。
1.低速率
相比于蓝牙的1-3Mbps,Wi-Fi的1-11Mbps,zigbee只有最高250bps的速率,支持250kbit/s(2.4GHz)、40kbit/s(915MHz)和20kbit/s(868MHz)。低速率让它可以传更远。
2.范围
zigbee:10-100m,蓝牙:2-10m,Wi-Fi:30-100m
zigbee设备在自组网内有3个不同的角色:普通设备、路由、协调器。
普通设备只能收发消息;
路由可以转发消息、允许子设备加入网络;
协调器选择工作频段、建立网络、允许子设备加入网络。
根据角色的不同,zigbee设备有两种类型:FFD全功能设备(可以成为任何角色),RFD精简功能设备(只能和FFD设备通信)
2.zigbee的重要概念
(1). attribute
属性,表示一个物体可以执行的某个动作,比如开关有两种属性:开 和 关。
(2). cluster
群集,表示属性的集合,一个群集有一个唯一ID,最多有65535个属性。比如某种情况下的开关状态和灯的状态是一个cluster,另一种情况下的开关状态和灯的状态是一个cluster。由应用层来调用ZCL(Zigbee Cluster Library)。
(3). endpoint
端点,对应一个任务,是射频单元真正的数据目标。端点地址范围是0-255,其中0属于ZDO端点特有,255用于广播,可设置的是1-240,其余保留。
(4). node
节点,是一个包含一组zigbee应用对象的容器,它们共享一个无线信道。举个例子,一个多路开关是一个node,路1,路2,路3分别是3个endpoint。
(5).profile
规约,是面向应用的,用于解决一系列事务的公约,比如:加热公约。一个profile包含cluster和设备描述(device descriptions)。
以上是大致需要知道的简介,接下来就看具体的zigbee协议架构来深入一些了解。
二、zigbee架构
这里将zigbee在架构上分为四层:应用层、网络层、链路层、物理层。每一个层都可以和相邻层通信,并且包含有数据服务和管理服务。以下就每一层的关注点作具体说明:
1.PHY物理层
PHY物理层的功能是激活射频、收发包,是离硬件最近的一层。
1.1 主要功能
1)zigbee的激活;
2)信道评估:主要是避免冲突,有两种方式: 能量检测(ED),请求由MLME产生,由PLME执行。不解调信号,无法知道是IEEE802.15.4的包。载波检测CS:MLME请求PLME执行CCA,会解调信号。
3)接收链路服务质量信息LQI:每收到一个包,PHY都会检测包并向MAC传一个连接质量LQI(至少应有8个等级)。
4)zigbee信道接入方式;
5)信道频率选择;通过信道页和信道号确定,每个信道由一个信道号确定。
6)数据传输和接收。
1.2 数据包
2.MAC链路层
MAC链路层关注信标和超帧。
2.1 信标网络
信标网络具有确定时隙GTS来同步时间,两个信标帧之间的结构叫做超帧。
一个超帧有三种周期类型:竞争访问周期CAP、无竞争周期CFP、非活动周期。
活动期包含CAP和CFP,分为16个相等的时隙。
- 竞争访问周期CAP(MAC层命令帧所有传输必须在这期间传送),时隙0-10。
- 无竞争周期CFP(可以确保每一个特定设备都有一个时隙,不允许使用CSMA-CA),时隙11-15。
- 非活动周期(省电模式-协调器关闭收发电路)。
有两个重要配置需要关注:
- Beacon Order(BO)
可选0~14,表示信标传输间隔,15为无信标网络-不使用超帧。 - Superframe Order(SO)
表示超帧活动部分的长度。
0 <= SO <= BO <= 14
superframe order / beacon order越小,说明每一个设备的非活动期越长。
2.2 MAC包结构
3.Nwk网络层
Nwk网络层关注通信机制
网络层限制了一个帧在网络中传输的距离,跳数最大为3,即消息最多只能被转发3次。
网络层在重传之前必须等待一个随机时间。
通信机制分为:广播、多播、单播。
- 广播:目标地址0xffff,广播PAN标识符0xffff。协调器和路由器都会维护广播事务表(BTT)写一个广播事务记录(BTR),包含广播帧序列号和源地址,BTR在一段时间内有效,失效后可以被覆盖。
- 多播:每组通过16位多播组ID来识别。有两种模式:成员模式和非成员模式。
- 单播:给某个设备发消息,可经多跳路由转发。
4.API应用层
API应用层包括:APS应用支持子层、ZDO设备对象、AF应用程序框架。
作用是调用profile实现具体应用(使用标准或自定义的profile)。
三、zigbee入网流程
- 子设备(以下假设为router)的应用层调用NLME-NETWORK-DISCOVERY.request原语,设定待扫描的信道和时间,网络层收到原语,要求MAC层执行扫描,在每个信道广播发Beacon Request。
- 潜在父设备(coordinator协调器)收到后,发beacon帧,包含自己的IEEE地址,以及允许/不允许入网的信息。
- 子设备router在网络层检查beacon帧协议ID是否是自己的ID,如果是,复制所有收到的beacon帧相关信息存入表,MAC层发送MLME-SCAN.confirm告知网络层,网络层发送NLME-NETWORK-DISCOVERY.confirm告知应用层。网络层调用NLME-JOIN.request原语在表中找到合适的父节点,找到后调用MLME-ASSOCIATE.request要求MAC层发送关联请求。
- 潜在父设备收到associate request后确认可连接或连接失败,通过MLME-ASSOCIATE.confirm回复给子设备。如果是可连接,再次也分配给子设备可用的16位地址。
- router收到包后设置自己的16位短地址,利用短地址和网络内设备通信。
总结
zigbee的架构和入网就说到这,若有错误欢迎留言指正。