【物联网原理与运用】知识点总结(下)

目录

[第四章 通信与网络技术](#第四章 通信与网络技术)

4.1现场总线【了解】

4.2无线通信网络【重点】

0、物联网通信技术概述

1、Wi-Fi技术

2、ZigBee技术


第四章 通信与网络技术

网络层是中间层,要解决的是感知层所获取数据在一定范围的传输问题

4.1 现场总线【了解】

1、认识现场总线

(1)现场总线的定义:

①是连接智能现场设备和自动化系统的一种网络

②将分散的有通信能力的测量控制设备作为网络节点,连接成能相互沟通信息,共同完成自控任务的控制网络

(2)现场总线的特点:

①应用在生产现场

②全数字、全开放、全双工、多节点;

③将专用微处理器置入传统的测量控制仪表,各自都具有数字计算和数字通信能力;

④数字通信有串行和并行两种基本方式。

⑤现场总线是自动化领域的通信、网络技术, 也被称之为工厂的底层网络;

⑥总线是构成自动化系统的纽带,网络所传输的是测控信息;

⑦是有别于计算机网络,电视、电话网络的另一类网络;

⑧多为短帧传送

2、现场总线的通信协议模型

现场总线具有完全开放的网络通信协议,具有互操作性和互换性。

3、现场总线的类型

(1)现场总线技术比较成熟,类型也很多,目前国际认可的有近30种。

(2)比较常用的有:

基金会现场总线FF:由美国Fisher公司和Honeywell公司联合创立

LonWorks总线:美国埃施朗公司开发,并与摩托罗拉和日本东芝公司共同倡导

ProfiBus总线:德国国家标准DIN19245和欧洲标准EN50170的现场总线标准

区域控制网络(CAN)总线:由德国Bosh公司推出,最早成为国际标准的现场总线;属于ISO标准:ISO 11898

4、现场总线的应用------以 CAN 为例子

①CAN是控制器局域网络(Control Area Network)的简称,它最早是由德国的Bosch公司开发出来的,起初它是为汽车的检测和控制而设计的,后来逐步发展到用于其它工业部门;

②CAN是目前唯一被批准为国际标准的现场总线,得到了 Motorola、Intel、Philip、NEC等公司的支持,并广泛应用 在离散控制领域。

③CAN总线网络的特点:

CAN协议遵循 ISO/OSI模型,采用了其中的物理层,链路层与应用层的三层结构。

CAN的最高通信速率为1Mb/s(通信距离为40m),其最远通信距离可达10km(

通信速率为5kbps),最多可挂接设备数达110个。传输介质可以是双绞线,光纤等。

CAN的信号传输采用短帧结构,每一帧有效字节数为8个,这样传输时间短,受干扰的概率低,每帧信息均有CRC效验和其他检错措施,通信误码率极低。

CAN总线可以工作在多主方式,网络上任一节点均可以在任意时刻向其他节点发送 信息,从不分主从,通信方式灵活。

5、现场总线技术总结

• 现场总线是连接现场设备和自动化系统的一种控制网络;是综合自动化的发展需要。

• 现场总线被视为基于PC、特别是基于工业PC的控制技术。各种工业控制计算机、测量控制板卡的供应商是现场总线技术发展的重要力量

• 智能仪表为现场总线的出现奠定了基础;

• 传输信号数字化是实现数字通信的基础;

• 现场总线将朝着开放系统、统一标准的方向发展;

• 系统开放性是指对同一标准的认同和遵守。

4.2 无线通信网络【重点】

0、物联网通信技术概述

①物联网通信技术包含4大网络:近距离有线通信;近距离无线通信;长距离有线通信;长距离无线通信。

②利用Internet技术实现感知数据的共享;远距离无线通信技术弥补有线无法涉及的区域;近距离通信技术组成局域网,实现感知数据的汇聚。这些技术集合在一起,成为实现物联网的数据的关键通信技术。

③无线通信技术是利用电磁波在空间中直接传播而进行信息交换的通信技术,无需有形的媒介。无线宽带通讯技术按覆盖范围分类,包括了4大类标准,属于IEEE 802系列。

④什么是802?

IEEE 802标准是由电气电子工程师协会(IEEE)制定的,专门用于局域网和城域网的标准协议。

IEEE 802.11 标准,定义了无线局域网技术;IEEE 802.15标准,定义了无线个人网络技术

⑤近距离无线通信技术

近距离无线通信技术是实现无线局域网、无线个人网中节点、设备组网的常用通信技术;用于将传感器、FRID,以及手机等移动感知设备的感知数据进行数据汇聚,并通过网关传输到上层网络中。近距离无线通信技术通常由Wi-Fi技术、ZigBee技术、蓝牙技术等。

1、Wi-Fi 技术

(1)Wi-Fi 技术概述

①Wi-Fi(Wireless Fidelity) ,即无线保真,俗称"无线宽带",是IEEE定义的一个无线网络通信工业标准(IEEE802.11)。 Wi-Fi由AP和无线网卡组成,AP当于一个内置无线发射器的Router,无线网卡则是负责接收由AP所发射信号的客户端设备。

②Wi-Fi是一种将PC、手机等终端设备以无线方式互相连接的短距离无线通信技术。Wi-Fi技术的目的是改善基于IEEE802.11标准的无线设备之间的互通性。Wi-Fi也是一个无线网络通信技术的品牌,由Wi-Fi联盟所持有

③Wi-Fi技术的发展历程(关键节点)

a、IEEE 802.11 1997年

• IEEE第一代WLAN标准,工作在2.4GHz频段,物理层速率2Mbps

b、IEEE 802.11a/b 1999年

• 11a定义了5GHz的工作频段,物理层速率54/72Mbps,传输层25Mbps

• 11b在2.4GHz频段上的数据传输速率达11Mbps的物理层;

• 11b速率实现动态调整,根据实际情况在11Mbps、5.5Mbps、2Mbps、1Mbps不同速率间自动切换,在2Mbps和1Mbps速率时与802.11兼容

c、IEEE 802.11g 2003年

• 工作在2.4G频段,速率达到54Mbps,是11b标准的提速(11Mbps→54Mbps)

• 兼容802.11b,与802.11b的WiFi系统互联互通,可共存于同一个AP下。

d、IEEE 802.11n 2009年

• 定义了2.4G和5.8G两个频段;速率达到300Mbps,最高达600Mbps,是第一个高速无线局域网标准;

• 核心是多入多出(MIMO) 技术,可向下兼容11a/11b/11g。

(2)Wi-Fi 的技术参数

(2.1)频段

什么是ISM频段? 工业/科学/医用(Industrial Scientific and Medical)频段中的一段,各国都开放;频率范围2.4~2.4835GHz;许多无线技术都采用该频段(如:微波炉、蓝牙和ZigBee等);存在可能的互相干扰的风险;根据IEEE802.11协议,Wi-Fi的工作频段主要是2.4GHz,5GHz

(2.1.1)2.4GHz频段

①适用协议:802.11b/g/n,其中802.11n支持双频工作;

②2.4GHz是ISM频段中的一段,存在许多非Wi-Fi的干扰源

③我国开放了13个信道:

--工作频宽是22MHz,子信道间隔是5MHz;

--所以相邻信道的Wi-Fi信号之间有干扰

--必须至少间隔5个子信道才相互无干扰

(2.1.2)5 GHz频段

①适用协议:802.11a/n/ac,其中802.11n支持双频工作。

②开放了5.8GHz和5.1GHz两个频段:

--5.8GHz(5.725~5.850GHz)频段:含5个互不干扰的子信道(149,153

,157,161,165;

--5.1GHz(5.150~5.350GHz)频段:含8个互不干扰的子信道(36,40,

44,48,52,56,60,64)

(2.1.3)频宽与扩频技术

①频宽是指能够有效通过该信道的信号的最大频带宽度,大小依据要传送的信息量而定。

②扩频技术:利用数学函数将信号功率分散至较大的频率范围。只要在接收端进行反向操作,就可以将这些信号重组为窄带信号。所有窄带噪声都会被过滤掉,因此信号可以清楚的重现。

(2.1.4)2.4GHz频段和5GHz频段的对比

①无线信号衰减公式: Los = 32.4+20lg(F)+20lg(R) 其中:Los(dB)是衰减,F(MHz)是频率,R(km)是距离

②最早的802.11a/b,分别工作在5GHz和2.4GH;

③考虑到覆盖能力,之后主要在2.4GHz频段发展。直到802.11n开始追求高速率,才又转向5GHz发展。

④穿墙性能好,意味着覆盖范围大,但同时也意味着接受干扰源的范围大。

(2.1.5)Wi-Fi技术的其他频段

①60GHz:802.11ad(WiGig)

最高可达7Gbps,覆盖距离只有几米,一般用于邻近设备间的超高速传输;

②470~710MHz:802.11af(White-Fi / 超级Wi-Fi)

使用"在电视频率之间使用频率较低的白色空间"即为电视频道保留的缓冲频段,占用空间带宽与现有的广电频道带宽一致,速率可达426.7Mbps

③900MHz:802.11ah(Wi-Fi HaLow / Sensor-Fi)

l 使用900MHz(非电视空白频段),速率为100kbps,覆盖距离为1公里,低功耗,用于WSN和IoT。

(2.2)关联速率和实际吞吐量

(2.2.1)关联速率:物理层发送的比特流的速率。以802.11为例:只有1、2Mbps两种速率:

①发送频率为1MSps,即每秒发送1M个 Symbol(符号)

②采用BPSK(二进制相移键控,Binary Phase Shift Keying)编码方式,此时每个Symbol代表1bit,速率为1Mbps

③采用QPSK(正交相移键控,Quadrature Phase Shift Keying)编码方式,此时,每个Symbol代表2bit,速率为2Mbps 。

(2.2.2)实际吞吐量:在单位时间内在信道上实际成功传输的信息量称为吞吐量。

①在实际传输时,由于有Beacon帧(信标)类的短报文、传输延迟、竞争避让等因素,最大的有效吞吐量比关联速率要小(只有关联速率的50%)

②以11g为例,不同的编码和调制方式,可以计算出不同的数据速率。

调制方式:2N QAM对应于N bit;编码效率:Nbit码字,k比特校验位,效率等于k/N

(3)Wi-Fi 体系结构

(3.1)Wi-Fi的网络结构和原理

(3.1.1)802.11标准和分层结构

①IEEE802.11标准定义了介质访问接入控制层MAC和物理层PHY

②MAC层负责主要负责信道的分配,传输媒介的使用。通过CSMA/CA协议(载波监听多路访问/冲突避免),控制无线媒介的访问,避免冲突。

③物理层负责在设备之间传输数据无线信号;通信数据被编码和调制为无线信号;然后通过天线使用无线电波在2.4GHz或5GHz频段发送。

(3.1.2)物理层PHY层关键技术

①物理层功能:为上层提供高速可靠的数据传输通道。

a、提供信号载波:使数据可以传输在无线介质上

b、载波监听:为MAC层提供物理载波监听功能;避免数据冲突;通过PMD实现介质状态检查和载波监听

c、提供接口:实现数据帧比特流的传送与接收;通过PLCP实现发送,将PMD转换

为传输模式;发送完成后,关闭发送器,PMD 转换为接收模式

②物理层被分成两个子层:

a、物理层汇聚过程子层PLCP:负责将MAC帧映射到传输媒介无线电波;

b、物理媒体相关PMD子层:负责将PLCP所传来的每个位利用天线传送至空中。

(3.1.3)媒体介入控制MAC层关键技术

①数据链路层: 逻辑链路控制子层LLC;介质访问控制子层MAC

②无线信道MAC层协议作用:

提供对共享无线介质的竞争使用和无竞争使用,如何分配无线信道资源。

③以太网使用的MAC协议:

--- CSMA/CD (载波监听多路访问/冲突检测)

--- carrier sense multiple access/collision detection

--- "先听后发,边发边听,冲突停发,随机延迟后重发"

④不能应用于WLAN的原因:

--- WLAN的隐藏终端&暴露终端;大多数的无线电收发装置是半双工的,不能在发送过程中进行监听。

⑤IEEE 802.11采用了避免冲突的方式:CSMA/CA(Collision Avoidance 冲突避免),由于无线介质的特殊性,介质上的信号的动态范围很广,发送站点无法确认检测到的信号是自己传输的信号还是噪声信号。

⑥IEEE 802.11 MAC的帧分类

a、数据帧:负责将MSDU传输到目标站,转交给相应的LLC层

b、控制帧:在工作站和AP之间建立连接并认证后提供必要的辅助功能

---RTS帧、CTS帧、ACK帧等

c、管理帧:负责在工作站和AP间建立初始通信、提供连接或认证等

---Probe Request/Response帧 (主动扫描时)

---Beacon帧(信标帧, 被动扫描时 AP 发出)

---ReAssociation Request / Response帧 (从ESS的一个BSS漫游到另一个BSS进行重新关联,以便新AP联系老AP取得原来的关联信息)

⑦详细流程:

1)当来自网络层的数据进入数据链路层时,首先会经过逻辑链路控制层 PMD、PLCP、MAC、LLC LLC,添加一些信息形成MSDU(MAC Service Data Unit),这是一种802.3格式的帧。

2)MSDU进入MAC层,会被添加上MAC头部信息和尾部FCS校验信息,并被无限网卡驱动转化成MAC协议数据单元MPDU(MAC Protocol Data Unit),这就是平常我们抓包抓到得MAC帧。

3)而除了数据帧之外的控制帧和管理帧,是直接在MAC子层生产为MSDU的。

4)当MPDU进入到物理层后,名字会变成PSDU(PLCP Service Data Unit),和MPDU是同一个东西。

  1. PLCP收到PSDU后,会在PSDU前加一个前导同步码和PHY头部形成PHY层协议数据单元(PPDU)。

  2. PPDU会被移交给PMD层,根据不同的算法调制成一串比特流进行发送。

(3.1.4)Wi-Fi网络的组成

①有两种组网形式:

以自组网(Ad hoc)的方式进行通信和组网和在访问点AP的协调下进行通信和组网

②以自组网(Ad hoc)的方式进行通信和组网:

a、自组网形式是点对点网络形态,相当于网线直连,又称无中心网络又称对等网络;一组(至少两个)无线终端组成一个最基本服务单元(BSS),终端具有相同权限,可直接通信。

b、优点:健壮性好、易建网、成本低。 缺点:终端数量多时布局复杂(不超过15个)

③在访问点AP的协调下进行通信和组网:

a、有中心网络,又称AP结构化网络。 AP和与其关联的终端构成基本服务单元(BSS);AP是BSS的中心站,为接入有线主干网提供逻辑访问点。分配系统(DS)连接不同的以AP为中心的BSS,DS的媒介与BSS媒介逻辑上是分开。

b、优点:易组网,维护容易。缺点:健壮性差(AP故障则全网瘫痪),AP的引入增加了成本

(3.1.5)Wi-Fi的扩展服务单元(ESS)网络

①扩展服务单元(Extended Service Set,ESS)由分配系统DS和基本服务单元BSS组成。

②有多个AP与有线网络连接构成多个BSS,一些终端也可和有线网络直接连接。 ③不是所有AP都连接在有线网络上,可以用AP连接AP的方式实现分布式连接(桥接的一种形式)。

④终端在ESS覆盖范围内可自由移动,且保持网络连接。

(3.1.6)802.11的IP通信软件结构

802.11网络底层和以太网802.3结构相同,相关数据包装也使用IP通信标准和服务完成互联网连接。

(3.2)Wi-Fi的特点

(3.2.1)Wi-Fi技术的优势

①覆盖广:半径可达100米

②传输速度高:802.11n传输可达600Mbps

③无需布线:节省成本,适合复杂空间应用

④发射功率低:辐射剂量很小,使用安全

⑤组网简单易于实现:可承接密集接入

⑥开发性强兼容性强:全球范围使用频段告诫版本基本可兼容低版本

(3.2.2)Wi-Fi技术的劣势

①早期版本的通信质量不佳,数据安全性弱于蓝牙技术。目前应用较广的802.11n版本在上述两方面都有一定的改善。

②抗干扰能力差,大量WiFi设备间存在干扰的问题;在2.4GHz的开放频段,WiFi设备也易受到其他通信设备的干扰。

③缺乏完善的QoS以及商业模式,由于WiFi设备制造的门槛较低,产品质量参差不齐,造成部分产品的QoS不佳;目前采用802.11n标准的设备,已可以保证较稳定的完成语音、视频实时任务。

(4)Wi-Fi 模块的开发示例

①以ESP8266芯片为例------硬件连接

• ESP8266支持802.11b/g/n协议,支持UART/GPIO等接口,支持STA/AP/STA+AP工作模式,是一款低成本的无线模块;

• STM32F769探索板的CN2接口支持对ESP模块的扩展,可以直接将ESP模块插在CN2接口上。STM32F769和 ESP-01之间通过串口通信。

②以ESP8266芯片为例------软件SDK

ESP8266 SDK开发教程:

a、获取SDK:ESP8266_NONOS_SDK_V1.5.4;

b、获取API文档:API 文档:ESP8266 文档中心,选 SDK 文档中的2C-ESP8266_SDK_API Guide

c、工程编译:匹配运行的系统;

d、官方提供的SDK类似于stm32的库函数,并且有详细的API文档提供参考,在编译到开发环境后就可以直接调用。

③以ESP8266芯片为例------软件开发

a、模块初始化

程序上电运行后,在开始使用WIFI模块前,必须先对其进行初始化。除了GPIO口以及串口的初始化外,还需要对WIFI模块进行配置,使其工作在我们希望的模式下

b、连接到AP

调用ESP8266_JoinAccessPoint函数,输入AP的SSID和密码,连接到对应的wifi热点

c、发送数据

发送数据过程分两步:1.发送AT+CIPSEND=,命令。说明要往哪个socket通道,发送多少字节的数据。2.收到WIFI模块返回的"OK\r\n>"后,再发送数据。

d、接收数据

使用Esp8266模块时,接收网络上发来的数据,不需要MCU先发"接收"

的"AT指令。只要收到数据,ESP8266就会通过"+IPD"开头的数据包,将数据传递给MCU。

e、代码总结

和WIFI模块相关的驱动由三层组成:

Esp8266.c 中是对AT指令的实现;

在ESP8266_io.c中,是最底层的跟STM32外设打交道的部分。包括初始化引脚,从串口读取和发送数据;

Wifi.c是wifi底层驱动和上层的一个接口

f、AT 指令

通过串口将AT指令传输到ESP8266中去,ESP8266便可以进行工作;包

括后面的单片机控制,也是通过AT指令对模块进行作用。

2、ZigBee技术

(1)ZigBee 技术概述

①ZigBee的来源

ZigBee一词源自蜂群赖以生存的通信方式:蜜蜂群在发现花粉位置时,通过跳ZigZag形舞蹈来告知同伴,达到交换信息的目的。 人们借此称呼一种专注于低功耗、低成本、低复杂度、低速率的无线网络通信技术。通信技术领域,借此寓意取名为ZigBee;是为了满足小型廉价设备的无线联网和控制而提出的。

②ZigBee技术的起源与发展

a、2000年:成立了IEEE 802.15.4工作组

ZigBee是IEEE 802.15.4技术的商业名称,IEEE 802.15.4工作组仅定义MAC层和物理层协议

b、2002年:成立了"ZigBee联盟"

ZigBee联盟由英国Inwensys公司、日本三菱电气公司、美国摩托罗拉公司和荷兰飞利浦半导体公司共同组成,是一个全球企业联盟;旨在合作实现基于全球开放标准、可靠、低成本、低功耗的无线联网监控产品,主要负责制定网络层、安全管理及应用界面规范。

c、2004年:通过了1.0版规范

• 1.0版规范是ZigBee的第一个规范,由于时间仓促,存在一些错误。

d、2006-2007年:分别推出了ZigBee2006和ZigBeePRO版本

e、2009年3月:推出 ZigBee RF4CE

• 具备更强的灵活性和远程控制能力。为大规模商用打下基础。

f、2015年:推出ZigBee3.0

• ZigBee 3.0让用于家庭自动化、连接照明和节能等领域的设备具备通信和互 操作性,因此产品开发商和服务提供商可以打造出更加多样化、完全可互操作的解决方案。

③IEEE 802.15.4与ZigBee规范

IEEE802.15.4规范满足国际标准组织(ISO)开放系统互联(OSI)参考模式,它定义了ZigBee的物理层和MAC层。网络层和应用层有ZigBee联盟定义。

④ZigBee的技术特点:是一种短距离、低功率、地速率无线介入技术

短距离:有效覆盖范围在10~75m之间

低功耗:两节五号电池可使用6~24个月

低速率:数据传输速率低,工作在20~250kbps

低成本:对通信控制器的要求低,免协议专利费

大容量:每个ZigBee网络最多可支持255个设备

⑤ZigBee的应用目标:ZigBee技术主要用于组建低速率传输的无线短距离网络:

(2)ZigBee 网络的组成结构

(2.1)ZigBee网络的节点

一个典型的ZigBee网络中,包含三种类型的节点:协调器,路由器,终端设备

①协调器:一个ZigBee个人局域网(PAN)网络有且仅有一个协调器,负责网络启动,配置网络信道和PAN ID,成员地址分配,节点绑定、建立安全层等。

②路由器:也叫全功能设备FFD 。可以和任何设备通信;允许设备加入网络,扩展网络覆盖的物理范围、数据包路由功能

③终端设备:也叫精简功能设备RFD 。ZigBee网络边缘设备,不具备协调器和路由器的能力。

(2.1)ZigBee网络的拓扑结构

一个典型的ZigBee网络中,支持星型、树形和网状网络拓扑结构。

1)星状网络:由一个协调器节点和一个或多个终端设备组成。

①所有的终端设备只和协调器之间进行通信;

②协调器作为发起设备,协调器一旦被激活,它就建立一个自己的网络,并作为PAN协调器,PAN ID。

③路由设备和终端设备可以选择PAN标识符加入网络。

2)树形网络:由一个协调器和多个星型结构连接而成。

①设备除了能与自己的父节点或子节点互相通信外,其他只能通过网络中的树型路由完成通信;

②在树型网络中,由协调器发起网络,路由器和终端设备加入网络。

3)网状网络:类似树状网络,在树型网络的基础上实现。

①与树状网络不同的是,它允许网络中所有具有路由功能的节点互相通信,由路由器中的路由表完成路由查寻过程;

②在网状型网络中,每个设备都可以与在无线通信范围内的其他任何设备进行通信。

(3)ZigBee 网络的协议栈

(3.1)ZigBee 的架构

ZigBee协议栈的总体架构:PHY、MAC、NWK、APS

①PHY:频段,信号发射与接收技术

②MAC:无线信道的访问控制机制

③NWK:保障设备之间的组网;网络节点间的数据传输

④APS应用层包括三部分:应用支持子层;Zigbee设备对象ZDO ;厂商定义的应用对象AppObj

⑤服务接入点 (Service Access Point) 每一层都可以通 过SAP和相邻层通信:

D-SAP:数据服务

M-SAP:管理服务

(3.2)总体帧结构:PPDU、MPDU、NPDU、APDU

(3.3)物理层PHY

(3.3.1)物理层的主要功能

①物理层的主要功能是在一条物理传输媒体上,实现数据链路实体之间透明地传输各种数据比特流。

②PHY物理层是离硬件最近的一层,主要任务是:工作频段的分配;信道的分配;为MAC层提供服务(数据服务和管理服务)

• 激活射频、

• 通过无线电信号收发数据包。

(3.3.2)功能一:工作频段的分配

802.15.4提供了两种工作频段的选择 :

①2.4GHz工作频段

Ø 全球统一的无须申请的ISM频段;提供16个信道(信道11-26);调制方式:偏移四相相移键控( O-QPSK );每个信道提供250kbit/s的传输速率;

②868/915MHz工作频段

Ø 868MHz为欧洲使用,1个信道(信道0),20kbps ;915MHz为美国和澳大利亚使用,10个信道(信道1-10),40kbps ;调制方式:BPSK调制(二进制相移键控)

(3.3.3)功能二:信道的分配

①IEEE802.15.4物理层在三个频段上划分了27个信道:信道编号为0~26;

l 2.4GHz频段上划分了16个信道;

l 915MHz频段上有10个信道;

l 868MHz频段只有1个信道。

|-------|--------------|---------|---------|---------|
| 信道编号k | 中心频率MHz | 间隔 (带宽) | 频率上限MHz | 频率下限MHz |
| 0 | 868.3 | 0(0.6) | 868.6 | 868.0 |
| 1-10 | 906+2(k -1) | 2(2) | 928.0 | 902.0 |
| 11-26 | 2405+5(k-11) | 5(5) | 2483.5 | 2400.0 |

②信道分配关键技术1:信道的能量检测(ED)

Energy Detect:协调器在构建一个新的网络时,需要扫描所有信道,即:ED_SCAN;

然后为网络选择一个空闲的信道,这个过程在底层是借助物理信道能量检测来完成的。如果一个信道被别的网络占用,体现在信道能量上的值是不一样的。

IEEE802.15.4标准定义了与之相关的两个原语:能量检测请求原语(PLME_ED.request)和能量检测确认原语(PLED-ED.confirm)。

③信道分配关键技术2:链路质量指示(LQI)

LQI(Link Quality Indicator):高层的协议往往需要依据底层的链路质量来选择路由,物理层在接收一个报文的时候,可以顺带返回当前的LQI值;

物理层主要通过底层的射频硬件支持来获取LQI。MAC软件产生的LQI值可以用信号接收强度指示器(RSSI)来表示。

④信道的频率重叠问题

ZigBee在2.4GHz的工作频率和WiFi是有重叠的,WiFi的信道带宽通常是20MHz或者40MHz。会造成同频干扰。可以通过信道避让、空闲信道评估、动态信道选择等解决干扰问题。

⑤信道分配关键技术3:空闲信道评估(CCA)

CCA:Clear Channel Assessment;

由于802.15.4标准的MAC子层采用的是CSMA/CA机制访问信道,需要探

测当前的物理信道是否空闲,物理层提供的CCA检测功能就是专门为此而定义的。此功能定义的两个与之相关的原语为:CCA请求原语 (PLME-CCA.request)与CCA确认原语(PLME-CCA.confirm)。

CCA请求原语由MAC子层产生,语法为:PLME-CCA.request(),是一个无参的请求原语,用于向物理层询问当前的信道状况。

(3.3.4)功能三:为MAC层提供服务(数据服务和管理服务)

①PHY通过RF固件和硬件为MAC层提供了两种类型的服务:PHY数据服务和PHY管理服务。

数据服务访问接口 PD-SAP,为物理层和MAC层之间提供数据服务。 ------"收发数据"

管理服务访问接口,PLME-SAP,为物理层和MAC层之间传输管理服务,维护物理层PAN信息库;比如进行一些参数配置,或读取状态 。------"控制信息"

②物理层数据服务:PHY协议数据单元PPDU帧格式

物理层帧结构由同步头SHR、物理层帧头PHR和物理层有效载荷PSDU三部分组成:

同步头SHR:4B的引导序列:为数据收发提供码元或数据符号的同步; 1B的帧开始符:用来标识同步域的结束及数据的开始;

物理层帧头PHR:占1B,定义了物理层净荷的字节数;

物理层有效载荷PSDU:就是上层MAC层的帧内容;

③物理层数据服务:PPDU各字段的含义

a. 引导序列:接收设备根据接收的引导序列获得同步信息,识别每一位,从而进一步区

分出"字符" 。IEEE802.15.4规定引导序列由32个0组成。

b. 帧开始符:用来指示前同步码结束和数据包的开始,1B,其值为0xE5;

c 物理层帧首部PHR:其中的7位用来表示帧的长度,即有效载荷的数据长度。

d. PSDU:物理层携带的有效载荷,也就是通过物理层发送出去的数据。PSDU的长度为0~127字节。当长度值等于5字节或大于7字节时,PSDU是MAC层的有效帧。

④物理层管理服务:服务原语和服务访问接口

a、服务原语:

Zigbee协议栈是一种分层结构,从下至上第N层向第N + 1层或者第N + 1层向第N层提供一组操作(也叫服务),这种"操作"叫做服务原语。

它一般通过一段不可分割的或不可中断的程序实现其功能。

服务原语用以实现层和层之间的信息交流。

b、服务访问接口(Service Access Point,SAP)

是某一特定层提供的服务与上层之间的接口。

这里所说的"接口"是指不同功能层的"通信规则"。

服务访问接口是通过服务原语实现的,其功能是为其他层提供具体服务。

例如,物理层服务访问接口是通过射频固件和硬件提供给MAC层与无线信道之间的通信规则。

(3.4)数据链路层MAC

(3.4.1)数据链路层MAC概述

①物理层负责无线信道的分配,而MAC层负责无线信道的使用方式,它们是构建

Zigbee协议底层的基础。 IEEE802系列标准把数据链路层分成逻辑链路控制LLC子层和介质接入控制MAC两个子层,这也适用于ZigBee协议。

②LLC子层

在IEEE802.6标准中定义,为802标准系列所共用; LLC子层进行数据包的分段与重组以及确保数据包按顺序传输

③MAC子层

MAC子层协议则依赖于各自的物理层,为两个ZigBee设备的MAC层实体之间提供可靠的数据链路。

(3.4.2)MAC子层的主要功能

IEEE802.15.4标准定义MAC子层具有以下几项功能:

①采用带有冲突避免的载波侦听多路访问(CSMA/CA)机制来访问信道。

②PAN(Personal Area Network,个域网)的建立和维护;支持PAN网络的关联(即加入网络)和解除关联(退出网络)。

③协调器产生网络信标帧,普通设备根据信标帧与协调器同步。

④处理和维护保证GTS(Guaranteed Time Slot,同步时隙)。

(3.4.2.1)功能一:采用CSMA/CA机制来访问信道

①CSMA/CA机制是指在发送数据帧之前对信道进行预约,以免造成信道碰撞问题。

②CSMA/CA提供两种方式来对无线信道共享访问,其工作流程如下:

方式1:送出数据前,监听信道的使用情况,维持一段时间后,再等待一段随机的时间后信道依然空闲,送出数据。由于每个设备采用的随机时间不同,所以可以减少冲突的机会。

方式2:送出数据前,先送一段小小的请求传送RTS报文给目标端,等待目标端回应CTS报文后才开始传送

(3.4.2.2)功能二:PAN的建立和维护

①在一个新设备上电的时候,如果设备不是协调器,它将通过扫描发现已有的网络,然后选择一个网络进行关联。

②如果是一个协调器设备,则扫描已有网络,选择空余的信道与合法的PANID, 然后构建一个新网络PAN。

③当一个设备在通信过程中与其关联的协调器失去同步,也需要通过扫描通知协调器。

1)硬件层面:需要依靠支持IEEE 802.15.4标准的无线射频芯片

2)软件层面:需要依靠支持ZigBee无线通信协议栈

设备上电软件运行流程:

main()->osal_init_system()->osalInitTasks()->ZDApp_Init()

(3.4.2.3)功能三:协调器产生并发送信标帧

①在ZigBee网络中,信标帧由协调器发出,用于确保网络中的所有设备能够与协调器同步工作和休眠;

②为了减少设备的功耗,设备需要知道信道何时进入不活跃时段,这样,设备可

以在不活跃时段关闭射频,而在协调器广播信标帧时打开射频。

a、判断自己是否在网络中;

b、保持网络同步

(3.4.3)MAC子层数据报MAC帧的一般结构

①MAC子层数据包,也称MAC协议数据单元(MPDU),其设计目标是在保持低复杂度的前提下实现在噪声信道上的可靠数据传输。

②一个完整的MAC层帧由帧头MHR、载荷和帧尾MFR组成,其中:

帧首部由若干个域按一定顺序排列,但并不是所有的帧中都包含有全部的域; 帧首部有帧控制域、序列号、地址域,其中地址域又包含目的PAN标识符、目的地址、源PAN标识符和源地址等。

③帧控制字段

a. 帧类型:占3位:000表示信标帧,001表示数据帧,010表示确认帧,011表示MAC命令帧,其他取值预留。

b. 安全允许控制(Security Enabled):如果该位置1,则对该帧按预定的方案进行加密处理后再传送到物理层;为0时,不进行加密处理。

c. 未处理数据标记:如果该位置1,则表示除该帧的数据外,本设备中还有应发送给对方的数据。因此,接收该帧的设备应向发送方再次发送请求数据命令,直到所有的数据都传送完。若发送设备中已没有要发送给接收方的数据,则该位为0.

d. 请求确认:置1时,接收方接收到后应向发送方发送确认帧;为0时不需要发送确认帧帧控制域的

e. PAN内部标记:置1时,表示该MAC帧在本身所属的PAN内传输,这时帧的地址域中不包含源PAN标识符;为0时,表示该帧是传输到另外一个PAN,则需要包含。

f. 目的/源地址模式:如标识地址模式,见下表。

IEEE 802.15.4使用两种地址:

• 16位短地址,用于在本地网络中标识设备

• 64位扩展地址,全球唯一的8 字节编号

④序列号与地址域

a. 序列号:帧的唯一序列标识符。在协议栈初始化时,软件将它们置为随机的值,在通信过程中,每生成一个帧,其相应的序列号加1,并将其值插入到帧的序列号子域。

b. 目的/源PAN标符:接收/发送该帧的设备所在PAN的唯一标识符。当目的PAN标识符的值为0xFFFF时,代表该帧为广播方式。

c. 目的地址/源地址:接收/发送接收帧设备的地址。根据帧地址控制子域不同的情况,目的地址为16位或64位。地址0xFFFF时代表广播地址。

(3.4.4)MAC子层的MAC帧特定格式

MAC帧特定格式包括信标帧、数据帧、确认帧和命令帧:

(3.4.4.1)信标帧

①信标帧:实现网络中设备的同步工作和休眠,建立PAN主协调器。信标帧中的地址信息只有4字节,只包含源设备的PANID和地址。

②信标帧有效载荷:由四部分组成,即超帧配置、保证时系GTS、待处理地址和信标有效载荷。

③超帧将通信时间划分为活跃和不活跃两个部分。

a、在不活跃部分,PAN网络中的设备不会相互通信,从而可以进入休眠状态以节省能量。

b、超帧的活跃期间划分为三个阶段:信标帧发送时段、竞争访问时段(CAP)和非竞争访问时段(CFP,在保证时系GTS范围内不用竞争,每个设备分得一个GTS)。

超帧的活跃部分被划分为16个等长的时槽,每个时槽的长度、竞争访问时段包含的时槽数等参数,都由协调器设定,并通过超帧开始时发出的信标帧广播到整个网络。

(3.4.4.2)确认帧:无载荷数据。

①由MHR和MFR组成。

②其中确认帧的序列号应该与被确认帧的序列号相同,并且负载长度为0。

(3.4.4.3)命令帧:用于组建PAN网络,传输同步数据等。

(3.4.4.4)数据帧:传输网络层发到MAC子层的数据。

①数据帧负载字段包含了上层需要传送的数据。

②上层数据负载传送至MAC子层时,被称为MAC服务数据单元MPDU。

③它的首尾被分别附加了MAC帧头和帧尾

(3.4.5)ZigBee数据链路层的服务规范

①数据服务访问接口MCPS-SAP,为网络层提供数据服务:调用MAC公共部分子层(MCPS)提供的数据服务接口,为网络层数据添加协议头,从而实现MAC层帧数据------"收发数据"

②管理服务访问接口,MLME-SAP,为网络层和MAC层之间传输管理服务,调用MAC层管理功能的服务接口,同时还负责维护MAC PAN信息库------"控制信息"

(3.5)网络层NWK

(3.5.1)网络层的主要功能

①ZigBee网络层的主要作用:负责网络的建立;允许设备加入或离开网络;路由的发现和维护。

②ZigBee网络中的设备有三种类型:协调器、路由器和终端节点,分别实现不同的功能。

③协调器:

点协调器或路由器具备允许设备加入网络或者离开网络、为设备分配网络内部的逻辑地址、建立和维护邻居表等功能终端节点只需要有加入或离开网络的能力即可

(3.5.2)ZigBee网络层:服务规范

①网络层通过提供数据服务和管理服务两个服务实体(NLDE和NLME),来实现和应用层的通信功能。

②数据服务访问接口NLDE-SAP,为网络层提供数据服务:生成网络级别的协议数据单元PDU------ "收发数据"

③管理服务访问接口, NLME-SAP,为网络层和应用层之间传输管理服务:建立一个新网络功能;给新加入网络的设备分配地址,实现寻址等。------"控制信息

(3.5.3)ZigBee网络层的通用帧结构

①网络层协议数据单元(NPDU)即网络层帧的结构 ,在Zigbee网络协议中定义了两种类型的帧结构,即网络层数据帧和网络层命令帧,其格式如下:

②网络层协议数据单元(NPDU)结构由网络层帧报头和网络层的有效载荷两部分。报头:包含帧控制、地址信息、广播半径域、广播序列号、多点传送控制等信息 ;有效载荷:的长度是可变的,包含的是上层的数据单元信息

③帧控制域

a. 帧类型:占2位:取值为00代表数据帧,取值为01则代表命令帧,其他值目前保留

b. 协议版本:协议版本子域长4位,其值代表了所实现的ZigBee协议的版本。通常该值保存在网络层常量nwkcProtocolVersion中,目标ZigBee协议的版本为0x01

c. 发现路由:00表示禁止路由发现,01表示使能路由发现,10表示强制路由发现。

  1. 安全性:置1时,需要对网络层帧进行安全处理。

④帧路由域

a. 目的地址:目的地址域长度为2字节,其值为16位的目的设备网络地址,它就是目的设备MAC层的IEEE802.15.4的网络地址,或者是广播地址0xFFFF。

b. 源地址:源地址域是发送帧的设备的地址,与目的地址域相似。

c. 广播半径域:其值规定了广播帧的传输范围。在传输时,每个设备接收一次广播帧,并将该域的值减1。

d. 广播序列号:每一个帧中都存在,其长度为1字节。设备每发送一个新的帧,该值会加1。通常帧的序列号与它的源地址域一起用来唯一识别一个帧,以避免1字节长序列号会产生的混淆。

⑤命令帧

数据帧的结构与通用帧结构完全相同。其帧控制域的类型子域应为0x00,以表明这是一个数据帧。载荷部分是网络层需要传输的数据,地址域根据具体要求而定。

命令帧的结构与一般结构相同。帧控制域的帧类型子域应为0x01,以表明这是一个命令帧。而有效载荷部分的第一个字节是网络层命令标识符,其余部分为网络层命令载荷。

⑥命令帧标识符

a.路由请求命令:用来请求网络中无线通信范围内的其他设备,以便发现一条能够有效地将帧传送到某一目的设备的路由。

b.路由应答命令:用来向初始发送路由请求命令的设备发出通知,它已经接收到路由请求命令。借助这些信息,ZigBee路由能够建立一条有效的、使帧从源设备到达目的设备的路径。

c.路由错误命令:当设备无法继续向前传送数据时,使用路由错误命令通知发送数据帧的设备,在传送数据帧时出现了错误

d. 路由离开命令:网络层管理实体使用离开命令通知其父设备和子设备,它准备离开网络,或者用来请求一个设备离开网络。

(3.6)应用层APL

(3.6.1)应用层的组成

应用层由以下部分构成,分别是:

①应用支持子层APS ;

②ZigBee应用框架AF ;

③ZigBee设备对象ZDO ;

④Zigbee设备模板(应用于哪种场合,如:智能家居、工业控制等)和制造商定义的应用对象等组成。

(3.6.2)应用支持子层APS

①负责协议数据单元APDU的处理、数据传输管理和维护绑定列表。

②APS通过应用支持子层数据服务(APSDE)和应用支持子层管理服务(APSME)为网络层和应用层之间提供接口,这一组服务可以被设备对象和制造商。

(3.6.3)ZigBee应用框架AF

①概述

Zigbee设备中应用对象驻留的环境称为应用框架AF。在应用框架中,应用程序可以通过APSDE-SAP发送、接收数据;通过"设备对象公共接口"实现应用对象的控制与管理。

②数据包处理流程

应用框架从APS接收的帧进行过滤处理,检查该帧的目的端点是否处于活动状态:

如果目的端点处于非活动状态,则将该帧丢弃;

如果目的端点处于活动状态,则应用框架将检查帧中的模板标识符是否与端点的模板标识符匹配。如果匹配,将帧的载荷传送给该端点,否则丢弃该帧。

③ZigBee设备的节点与端点:

每个ZigBee设备都被看作一个节点,每个节点有255个端点。

• 端点对应着应用层的入口,是为实现一个设备描述而定义的一组群集。每个Zigbee设备可以最多支持240个端点,即每个设备上可以定义240个应用对象。

• 端点0被保留用于设备对象(ZDO)接口,端点255被保留用于广播,端点241~245被保留用于将来扩展使用。

(3.6.4)设备对象ZDO概述

①附属在端点0的应用对象(端点0负责的功能集)被称为Zigbee 设备对象。应用程序可以通过端点0与Zigbee堆栈的其他层通信,从而实现对各层的初始化和配置。

②ZDO提供应用对象、模板和应用支持子层(APS)之间的接口,标识一类基本功能。它处在应用框架和应用支持子层(APS)之间,满足Zigbee协议栈中所有应用操作的公共需求。

③设备对象ZDO提供的功能

• 设备发现:发现其他设备节点。如:协调器、路由器、其他终端设备)

• 服务发现:发现和响应其他设备或应用发起的服务请求。如:协调器或路由器基于 IEEE地址的单播查询,被询问的设备返回其IEEE地址或与其连接的设备的网络地址。

• 网络管理:按照预先的配置将设备启动为协调器、路由器或终端设备。选择信道,启动一个新的PAN,或者选择一个已存在的网络并与这个网络建立连接。

• 节点管理、绑定管理等。

(3.6.5)ZigBee应用层的通用帧结构

①应用支撑子层协议数据单元(APDU)即应用层帧的结构由APS首部(包含帧控制及地址 信息)和APS帧载荷(即帧传输的有效数据,其长度可变)两部分组成,其格式如下:

源/目的端点:发送/接收该帧的端点地址。每一个

端点好对应一个应用对象,0表示设备对象ZDO;

模板标识符:长度为16位,用于帧过滤处理;

簇标识符:仅数据帧需要;

②控制域字段分析

当应用程序不知道数据包的目标地址时,将寻址模式设定为间接寻址;

Z-Stack底层将自动从堆栈的绑定表中查找目标设备的具体网络地址;

基于 ZigBee 芯片的软件开发

(4.1)Z-Stack协议栈

(4.1.1)协议栈定义

①协议定义的是一系列的通信标准,协议栈是这些标准的具体实现;

② Z-Stack协议栈是德州仪器(TI)公司为其ZigBee芯片CC2530提供的软件解决方案;

③Z-Stack协议栈将各个层定义的协议集合在一起,以函数的形式实现,给用户提供一 些应用层api,供用户调用。

(4.1.2)Z-Stack协议栈的目录结构

硬件平台:CC2530F256

Zstack协议栈:ZStack-CC2530-2.5.1a

工程编译开发环境:IAR:整合了代码编辑器、编译器、调试器等多个开发组件

使用IAR8.10版本打开ZstackCC2530-2.5.1a中的SampleApp工程,协议代码目录如图所示。

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| APP:应用层目录,包含了应用层和这个项目的主要内容。用户可以根据需求添加自己的任务,在协议栈里面一般是以操作任务实现的。 HAL:硬件驱动层,包括硬件相关的配置、驱动及其为其他模块封装的操作函数。 MAC:MAC层目录,包含了MAC层的参数配置⽂件及其MAC的LIB库的函数接口⽂件。 MT:监控调试层,主要⽤于调试⽬的,实现通过串⼝调试各层。 NWK:⽹络层⽬录,包含⽹络层配置参数⽂件及⽹络层和APS层库函数接⼝。 OSAL:操作系统层:协议栈的操作系统,包含为各层提供的操作系统接口函数。 Profile:AF层目录,包含AF层处理函数。 Security&Services:安全服务层目录,包含安全层和服务层处理函数,比如加密,地址处理。 Tools:工程配置目录,包括空间划分及ZStack相关配置信息。 ZDO:ZigBee设备目录,包括应用层设备管理。 ZMain:主函数目录,包括入口函数及硬件配置文件。 Output:输出文件目录,编译工程自动生成。 |

(4.1.3)Z-Stack协议栈代码结构与ZigBee协议对应的关系

|-------------|--------------------|
| Zigbee协议栈结构 | Zigbee代码结构 |
| 应用层 | APP层、OSAL |
| ZDO、APS层 | ZDO层 |
| AF层 | Profile |
| NWK | NWK |
| MAC | ZMAC、MAC |
| 物理层 | HAL、MAC |
| 安全服务提供商 | Security&Services |

Z-Stack协议栈是一个半开源的协议栈,部分层(比如MAC)是以库的形式提供的,用户在使用时只看得到API接口函数,无法看到其具体实现。

(4.1.4)Z-Stack协议栈的系统架构

(4.1.5)Z-Stacck协议栈的代码运行总体逻辑

①任务创建

Z-Stack协议栈是一个基于任务的操作系统。任务调度由OSAL层管理。任务号taskID是任务的唯一标识符。

②任务轮询

任务的调度是通过任务轮询实现,系统将会不断查询每个任务是否有事件发生,如果有事件发生,就执行相应的事件处理函数,如果没有事件发生,则查询下一个任务。重点注意tasksArr[idx]数组,用于记录事件处理函数指针的数组。

(4.2)Z-Stack协议栈------关键功能模块分析

(4.2.1)入口函数

Main()入口函数所在文件的文件是ZMain.c。主要功能是实现:硬件与系统的初始化,创建任务。

(4.2.2)OSAL层分析

OSAL是Z-Stack协议栈的操作系统,对各层的调度从main()开始,分为两部分:

系统的初始化osal_init_system();

OSAL的运行osal_start_system();此函数用于按照任务ID询检,询检是否有相应的事件发生,其实现在OSAL.c文件中

(4.2.3)HAL层分析

HAL层为硬件平台的抽象层,提供了开发板所有硬件设备(例如LED、LCD、KEY、UART等)的驱动函数及接口。 包含common、include和target三个文件夹。

①Common目录,包含了两个文件,重点关注hal_drivers.c,有4个关键函数。

硬件初始化函数Hal_Init( )---注册HAL层任务ID。

l 硬件驱动初始化函数HalDriverInit( )---具体硬件(如:LCD、按

键等驱动的初始化。

l 硬件事件处理函数Hal_ProcessEvent( )---在APP层中的任务事件处理中调用,用于对相应的硬件事件作出处理,具体包括系统消息事件、LED闪烁事件、按键处理事件和睡眠模式等。

l 询检函数Hal_ProcessPoll( )---用来对产生的硬件事件进行询检

②Include目录,头文件目录:

Ø 包含各个硬件模块的头文件,主要内容是与硬件相关的常量定义以及

函数声明;在移植过程中可能需要修改,需要用户掌握。

③Target目录,硬件平台相关目录:

a、包含了使用的设备硬件驱动文件、开发板上的配置文件,MCU信息和数据类型;与所使用的硬件平台强相关,在移植过程中一般需要修改,需要用户重点掌握。

b、Target/Config目录,硬件资源配置: 在hal_board_cfg.h中定义了硬件CC2530硬件资源的配置,比如GPIO、DMA、ADC等;

c、Target/Drivers目录,驱动接口函数的实现,全部是.c文件

d、Target/Drivers目录下的驱动示例:以最常用的LED为例

hal_led.c文件中提供了2个封装好的函数,在应用层可以直接调用他们来控制LED,具体有以下函数:

HalLedSet (uint8 leds, uint8 mode)。

HalLedBlink (uint8 leds, uint8 numBlinks, uint8 percent, uint16 period)

(4.2.4)MAC层分析

MAC层的参数配置⽂件和LIB库的函数接⼝⽂件,此部分是半开源模式,具体实现函数都被封装成库了,在使用的时候直接调用即可。

(4.2.5)NWK层分析

①NWK层负责的功能有:节点地址类型的分配、协议栈模板、网络拓扑结构、网络地址的分配的选择等。

②网络层的功能函数是半开源模式,具体实现函数都被封装成库了,在使用的时候直接调用即可。

③节点地址类型的选择------Z-Stack中地址类型有两种:

64位IEEE地址:即MAC地址(也称"长地址"),通常由制造商在设备出厂时设置,全球唯一。

16位网络地址:是设备加入网络后,由协调器分配给设备的地址(也称"短地址"),网络中是唯一的,用来在网络中鉴别设备和发送数据。协调器的网络地址固定为0。

④在Z-Stack协议栈的NLMEDE.h中,声明了读取物理地址和网络地址的函数,可以直接调用。具体实现已封装成库。

//读取父节点网络地址

uint16 NLME_GetCoordShortAddr(void);

void NLME_GetCoordExtAddr(byte*);//读取父节点物理地址

uint16 NLME_GetShortAddr(void);//读取自己的网络地址

byte *NLME_GetExtAddr(void);//读取自己的物理地址

(4.2.6)应用层APP分析

应用层在代码结构包含了个目录,分别是:App;Profile; ZDO。

(4.2.6.1)应用层Profile目录分析

①Profile对应Zigbee软件架构中的应用程序框架AF层,包含两个文件:AF.c和AF.h。主要提供两种功能:端点的管理和数据的发送和接收。

②流程

a、端点的注册:

在端点配置成功后需要在AF层注册端点,用到的函数是afRegister( ),此函数在AF.c文件中定义。应用层将调用此函数注册一个新的端点到AF层。

b、数据的发送:数据的发送只要通过调用数据发送函数AF_DataRequest() 即可。此函数在AF.c文件中定义,可以查看到代码实现。 ------APSDE_DataReq( &req );

c、数据的接收:数据包被发送后有新数据时,应用层通过OSAL事件处理函数中的接收信息事件AF_INCOMING_MSG_CMD来处理数据的接收。

③请分析示例代码,学会消息处理函数的实现方法。

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) { //数据的接收通过判断clusterId switch ( pkt->clusterId ) { //判断接收的输入簇ID case SAMPLEAPP_PERIODIC_CLUSTERID: //判断是否接收到"LED1" if((pkt->cmd.Data[0] == 'L') &&(pkt->cmd.Data[1] == 'E') &&(pkt->cmd.Data[2] == 'D') &&(pkt->cmd.Data[3] == '1')) { //LED1闪烁 HalLedBlink( HAL_LED_1, 4, 50, 500 ); } break; //判断接收的簇ID case SAMPLEAPP_FLASH_CLUSTERID: break; }} |

(4.2.6.2)应用层ZDO目录代码分析

①ZDO目录对应应用层的ZigBee设备对象模块。提供了Zigbee设备管理功能,包括:网络建立,发现网络、加入网络、应用端点的绑定和安全管理服务。

l 设备网络启动。

l 设备和服务发现。

l 终端设备绑定、绑定和取消绑定服务。

l 网络管理服务。

②Zigbee网络设备的启动是通过*ZDApp_Init()*函数来实现的,在ZDApp.c中定义。

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| void ZDApp_Init( uint8 task_id ) { ZDAppTaskID = task_id; // 保存 task ID //初始化ZDO网络设备短地址 ZDAppNwkAddr.addrMode = Addr16Bit; ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR; (void)NLME_GetExtAddr(); //获得长地址信息 //检测到手工设置SW_1则会设置devState = DEV_HOLD,从而避开网络初始化 ZDAppCheckForHoldKey(); ZDO_Init(); //通过判断预编译器来开启一些函数功能 // 在AF层注册端点描述符 afRegister( (endPointDesc_t *)&ZDApp_epDesc ); .......... } |

③ZDO网络设备绑定与取消绑定

a、绑定是指两个节点在应用层上建立起来的一条逻辑链路。在同一个节点上可以建立多个绑定服务,分别对应不同种类的数据包,此外,绑定也允许有多个目标设备。比如在一个灯控制的网络中,有多个开关和灯光设备,每个开关可以控制一个或多个灯光设备。在这种情况下,需要在每个开关和灯设备之间建立绑定服务。这使得开关中的应用服务在不知道灯光设备确切的目标地址时,可以顺利地向灯光设备发送数据

b、绑定的API函数*ZDO_RegisterForZDOMsg( )*在ZDO层定义。

协调器调用ZDO_RegisterForZDOMsg( )函数(一般是在用户任务初始化时调用)

在应用层注册设备绑定请求信息End_Device_Bind_req

ZStatus_t ZDO_RegisterForZDOMsg( uint8 taskID, uint16 clusterID );

参数描述:

taskID---任务ID号;

clusterID---需要注册的信息,在这里取End_Device_Bind_req。

返回值:Zstatus_t是定义在ZcomDef.h中的数据类型,本质上是无符号的8位整形,用于描述函数的返回状态。函数执行成功返回SUCCESS,失败返回Error。

(4.2.6.3)应用层APP目录代码分析

①APP目录的代码是面向用户开发的,开发者根据自己的需求建立所需要的项目,添加用户任务,并通过调用API函数实现项目所需要的功能。Z-Stack的APP目录设计了3个源文件2个头文件供参考。

②OSAL_SampleApp.c文件的主要功能是:注册用户任务以及任务处理函数

③SampleApp.c文件的主要功能是:对用户的任务进行初始化,以及调用API函数实现项目中所需要的功能。重点关注SampleApp_MessageMSGCB()

④SampleApp.h文件的主要功能是:定义端点所需要的各种参数。

⑤ampleAppHw.c和SampleAppHw.h文件的主要功能是:作为设备类型判断的辅助文件,也可以将两个文件的内容写入SampleApp.c文件和SampleApp.h文件中。

Zstack协议栈小结:

Zstack协议栈代码文件夹包括HAL、MAC、NWK、OSAL、ZDO和APP以及 配置文件等

HAL层是硬件驱动层,提供定时器、I/O口、UART以及ADC等API接口

Zstack的NWK层负责的功能有:节点地址类型的分配、协议栈模板、网络拓

扑结构、网络地址的分配的选择等。

Tools文件为工程设置文件目录,比如信道、PANID、设备类型的设置

Profile对应Zigbee软件架构中的应用程序框架AF层

ZDO(The Zigbee Device Objects,即Zigbee设备对象)层提供了Zigbee设备 管理功能,包括:网络建立,发现网络、加入网络、应用端点的绑定和安全管

理服务。

相关推荐
BY组态12 小时前
【技术分析】Ricon组态系统的模块化架构设计
物联网·iot·web组态·组态
BY组态14 小时前
【教程】如何使用Ricon组态系统快速构建监控画面
物联网·iot·web组态·组态
BY组态16 小时前
【对比分析】Ricon组态系统 vs 传统组态软件
运维·物联网·web组态·组态
zhaoshuzhaoshu1 天前
BLE(蓝牙低功耗)连接过程详解
物联网·蓝牙·无线
搜佛说1 天前
下一代跨语言原生操作系统商业计划书
物联网·软件工程
BY组态1 天前
Ricon组态系统在实际项目中的应用案例分享
物联网·web组态·组态
Zevalin爱灰灰2 天前
零基础入门学用物联网(ESP8266) 第一部分 基础知识篇(五)
单片机·物联网·嵌入式·esp8266
Web3_Daisy2 天前
Token 分红机制详解:实现逻辑、激励结构与风险分析
大数据·人工智能·物联网·web3·区块链
BY组态2 天前
从零开始:Ricon组态系统快速入门指南
运维·物联网·web组态·组态
次旅行的库2 天前
MQTT学习笔记
数据库·笔记·物联网·学习