1. 原语
ZigBee设备在工作时,各种不同的任务在不同的层次上执行,通过层的服务,完成所要执行的任务。每一层的服务主要完成两种功能:根据它的下层服务要求,为上层提供相应的服务;另一咱是根据上层的服务要求,对它的下层提供相应的服务。各项服务通过服务原语来实现。
可以把原语看作是API函数 是ZigBee中最基本的操作, 一般协议都有对原语进行程序实现 在自己开发系统时,只需要调用,设定参数就好了 。如果要自己实现底层的细节那就必须在开源的协议栈中,深入到原语的级别。也就是说,对于原语我们只需要了解就行,真正开发程序只知道我们给系统哪些参数就行了。
原语通常分为下面4种类型:
(1)Request:请求原语是从第N1用户发送到它的第M层,请求服务开始。
(2)Indication:指示原语是从第N1用户的第M层向第N2用户发送,指出对于第N2用户有重要意义的内部M层的事件,该事件可能与一个遥远的服务请求有关,或者可以是由一个M层的内部事件引起
(3)Respons:响应原语是从第N2用户向它第M层发送,用来表示对用户执行上一条原语调用过程的响应
(4)Confirm:确认原语是由第M层向第N1用户发送,用来传送一个或多个前面服务请求原语的执行结果。
2. 绑定
绑定涉及到两个网络节点,在绑定表中,它包含如下信息: IEEE地址、EndpointID。其中Endpoint描述信息中的ClusterID必须值相等,而且属性方向相反。节点间的绑定,通常是通过Endpoint的绑定来实现的。例如节点A 的Endpoint可以和节点B 中的一个或多个Endpoint实现绑定,节点A的Endpoint也可以和多个节点中的Endpoint进行绑定。
绑定是一种两个(或者多个)应用设备之间信息流的控制机制。绑定允许应用程序发送一个数据包而不需要知道目标地址,APS层从它的绑定表中确定目标地址,然后将数据继续向目标应用或者目标组发送。
绑定有间接绑定、直接绑定(OTA) 和直接绑定(通过串口) 3种方法[6]。通常前两种使用较多。
① 间接绑定:间接绑定方法比较简单,它通过按键来发送绑定信息。需要绑定的两个节点在一定的时间内发送绑定命令,当协调器在设定的时间内收到这样的两条绑定信息时,它就会建立对应的绑定表[7]。建立了绑定关系的两个节点之间就可以通过Endpoint来相互通信;
② 直接绑定(OTA) :直接绑定需要用户自己编写相应的绑定程序, ZigBee协议栈中含有绑定API,这就要求用户通过适当的方法调用来实现绑定功能。这种方法通常是使用一个节点直接向协调器发送两条绑定信息,这两条信息中的目标地址和源地址相反[8]。 这种方法需要用户对协议栈有一定的了解,熟悉相关的API函数。使用这种方法有许多好处,我们可以通过第三方节点来配置网络来是任意两个节点之间建立绑定 关系,使网络通信方式更加灵活。而且第三方节点可以通过与上位机互联,在上位机上我们可以建立一个界面,通过串口向第三方节点传递配置信息,这样我们的配 置会更加方便;
③ 直接绑定(通过串口):这种方法是使用上位机通过串口向协调器发送绑定信息,但这种方法需用户对串口API比较熟悉,这种方法一般使用的比较少,因为通常我们的协调器需要与上位机通信,要把网络的信息传到上位机,一般不适合在同一个上位软件再做网络的配置部分。通常直接绑定(OTA)方法比较适用,可以专 门做一个网络的配置软件,来配置网络,当然间接绑定最简单,在项目中我们可以综合考虑选择适当的绑定方式。
3.配置文件
Profile的书面意思是框架、轮廓,在这里它的意思是应用程序框架。它是由ZigBee技术开发商提供,应用于特定的应用场合,它是用户进行 ZigBee技术开发的基础。当然用户也可以使用专用工具建立自己的Profile。Profiles是这样一种规范,它规定不同设备对消息帧的处理行 为,使不同的设备之间可以通过发送命令、数据请求来实现互操作。
4. Endpoint
Endpoint是一种网络通信中的数据通道,它是无线通信节点的一个通信部件,如果选择“绑定”方式实现节点间的通信,那么可以直接面对 Endpoint操作,而不需要知道绑定的两个节点的地址信息。每个ZigBee设备支持多达240个这样的Endpoints。Endpoint的值和 IEEE长地址、16位短地址一样,
是唯一确定的网络地址,通常结合绑定功能一起使用。它是ZigBee无线通信的一个重要参数。
5.簇
在了解簇之前,首先要理解什么是间接通信和直接通信,即ZigBee技术可以通过使用IEEE地址或短地址来通信,也可以通过绑定在各个节点间建立联系,然后通过Endpoint和Cluster信息来进行通信。
间接通信:是指各个节点通过Endpoint的绑定建立通信关系,这种通信方式不需要知道目标节点的地址信息,包括IEEE 地址或网络短地址[5]。 绑定关系表通常被建立在网络协调器中,这样网络中的节点就可以通过Endpoint来访问与之建立绑定关系的节点。这种通信方式离不开网络的协调器,因为绑定表放在这个节点中, 每次的通信源节点把信息发送到Coordinator,由Coordinator将接收信息中的Endpoint信息作为参数,查表找到对应的目标地址并转发。
直接通信:不需要节点之间通过绑定建立联系,它使用网络短地址作为参数调用适当的API来实现通信,这种方法也需要通过协调器转发[9]。 直接通信部分关键点在于节点网络短地址的获得。在发送信息帧之间,必须知道要发送的目标短地址。由于网络协调器的短地址是固定的0x0000,因此人们可容易地把消息帧发送到协调器。其它网络节点的网络短地址是它们在加入到网络中时由协调器动态分配的,与网络深度、最大路由数、最大节点数等参数有关,没有一个固定的值。所以,要想知道目标节点的网络短地址还需通过其它手段,可以采用通过目标节点的IEEE地址来查询短地址的方法。 通常, ZigBee节点的IEEE地址是由用户自己定义的,它们被写在节点的EEPROM中,这个作为ZigBee节点的参数一般会被标示在节点上。所以,要得 到IEEE地址还是能够实现的。有了IEEE地址以后,可以通过部分网络API的调用,得到与之对应的网络短地址[。
当人们着手建立Profile时会遇到这个概念,它是一簇网络变量( attributes)的集合,当然如果将通信帧属性选择为“Message”时,它也可以没有任何网络变量。在同一个Profile中, ClusterID是惟一的。
在直接寻址方式和间接寻址方式中,人们都会用到这个概念。在间接寻址方式中,建立绑定表时需要搞清楚Cluster的含义与属性。对于可以建立绑定关系的两个节点,它们的Cluster的属性必须一个选择“输入”,另一个选择“输出”,而且ClusterID 值相等,只有这样,它们彼此才能建立绑定,而在直接寻址方式中,常用ClusterID作为参数来将数据或命令发送到对应地址的Cluster簇上。
6. Attribute
Attribute是一个数据实体,它代表一个物理量或一种状态,可以通过这个网络变量在设备之间传递数据或命令。
ZigBee通信有两种协议帧格式,分别是“KVP”格式和“Message”格式。“Message”格式是用户自定义的一种帧格式,而“KVP ”格式就是ZigBee联盟定义的,它就用到了网络变量Attribute来传递数据和命令。
7. 描述符
ZigBee网络中的所有设备都有一些描述符,用来描述设备类型和应用方式,描述符包含节点描述符、电源描述符和默认用户描述符等,通过改变这些描述符可以定义自己的设备。描述符的定义和创建配置项在文件 ZDOConfig.h和ZDOConfig.c中完成,描述符信息可能被网络中的其他设备获取。
8 PANID
PANID的出现一般是伴随在,确定信道以后的。PANID其全称是Personal Area Network ID,网络的ID(即网络标识符),是针对一个或多个应用的网络,用于区分不同的ZigBee网络,一般是mesh或者cluster tree两种拓扑结构之一。所有节点的panID唯一,一个网络只有一个PANID,它是由pan协调器生成的,PANID是可选配置项,用来控制 ZigBee路由器和终端节点要加入那个网络。文件f8wConfg.cfg中的 ZDO_CONFIG_PAN_ID 参数可以设置为一个 0~0x3FFF 之间的一个值。协调器使用这个值,作为它要启动的网络的 PAN ID。而对于路由器节点和终端节点来说只要加入一个已经用这个参数配置了PAN ID的网络。如果要关闭这个功能,只要将这个参数设置为0xFFFF。 要更进一步控制加入过程,需要修改 ZDApp.c 文件中的ZDO_NetworkDiscoveryConfirmCB 函数。当然了,如果ZDAPP_CONFIG_PAN_ID被定义为0xFFFF,那么协调器将根据自身的IEEE地址建立一个随机的PANID(0~0x3FFF),
9. 16位短地址:
ZigBee 设备有两种类型的地址。一种是 64 位 IEEE 地址,即 MAC 地址,另一种是 16位网络地址。64 位地址使全球唯一的地址,设备将在它的生命周期中一直拥有它。它通常由制造商或者被安装时设置。这些地址由 IEEE 来维护和分配。16 为网络地址是当设备加入网络后分配的。它在网络中是唯一的,用来在网络中鉴别设备和发送数据,当然了不同的网络16位短地址可能相同的。 你其实可以这样理解PANID和16位短地址的关系,一个班有一个班级名称(PANID)班级里面的人都拥有一个唯一的学号(16位地址)。
- k8s中几个基本概念的理解,pod,service,deployment,ingress的使用场景
k8s 总体概览 前言 Pod 副本控制器(Replication Controller,RC) 副本集(Replica Set,RS) 部署(Deployment) 服务(Service) ingr ...
- TCP/IP协议中网关和子网掩码概念
网关: 不同网段的IP是不能直接互通的,需要一个设备来转发,这个设备就是网关,一般就是路由器,那么路由器的地址就是网关地址. 比如192.168.2.31要往192.168.3.31发送一条消息,他们 ...
- 对于Spring中AOP,DI,IoC概念的理解
IOC IoC(inversion of Control),控制反转.就好像敏捷开发和SCRUM一样,不是什么技术,而是一种方法论,一种工程化的思想.使用IoC的思想意味着你将设计好的对象交给容器控制 ...
- 【转载】Spark学习——spark中的几个概念的理解及参数配置
首先是一张Spark的部署图: 节点类型有: 1. master 节点: 常驻master进程,负责管理全部worker节点.2. worker 节点: 常驻worker进程,负责管理executor ...
- Python 上下文管理协议中的__enter__和__exit__基本理解
所谓上下文管理协议,就是咱们打开文件时常用的一种方法:with __enter__(self):当with开始运行的时候触发此方法的运行 __exit__(self, exc_type, exc_va ...
- HTTP 协议中的 Content-Encoding 和 Transfer-Encoding(内容编码和传输编码)
转自:http://network.51cto.com/art/201509/491335.htm Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」.实际上,HT ...
- HTTP 协议中的 Transfer-Encoding
HTTP 协议中的 Transfer-Encoding 文章目录 Persistent Connection Content-Length Transfer-Encoding: chunked 本文作 ...
- [转]HTTP 协议中的 Transfer-Encoding
本文作为我的博客「HTTP 相关」专题新的一篇,主要讨论 HTTP 协议中的 Transfer-Encoding.这个专题我会根据自己的理解,以尽量通俗的讲述,结合代码示例和实际场景来说明问题,欢迎大 ...
- 蓝牙 BLE 协议学习: 000-有关概念介绍
背景 在学校内就用过蓝牙技术参加过比赛(并拿了奖):而蓝牙作为物联网中比较常见的协议,有必要进行深入的学习.此后的文章会以 ble(v4.0) 进行学习. 介绍 蓝牙技术最初由电信巨头爱立信公司于 1 ...
随机推荐
- [TYVJ] P1044 数字三角形
数字三角形 背景 Background 09年 USACO 11月月赛 铜牌第一道 描述 Description 示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过 ...
- Oracle 10g体系机构及安全管理《思维导图》
通过学习Oracle数据库后,我对数据库又有了进一步的了解,Oracle数据库 10g体系机构分为 物理和逻辑存储结构. 下面是我对Oracle数据库做的思维导图和笔记 (全屏查看:<思维导图& ...
- SVN的错误: working copy locked
提示:your working copy appears to be locked. run cleanup to amend the situation. 产生这种情况大多是因为上次svn命令执行失 ...
- App 推荐:Spotify
之前一直用网易云音乐听歌,后来因为沸沸扬扬的 XCode 注入病毒事件,就把它卸了(无奈脸=.=) 对比国内其它音乐App,私心觉得网易云音乐还是不错的.没有很多花里胡哨的装饰,里面的歌单做的也还算精 ...
- 剑指offer-面试题10:二进制中1的个数
题目:请实现一个函数,输入一个函数,输出该数二进制表示中1的个数.例如把9 表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2. 这道题最典型的方法就是用移位统计,就比如统计9的二进制1 ...
- 使用sae定时执行Python脚本
使用sae定时执行Python脚本 使用sae定时执行Python脚本 12,May,2014 | 57 Views 毕设压力略大,必须是桂林游的锅.去之前放松了几天,回来又休闲了几天,加上桂林的一周 ...
- 运用 BoxLayout 进行 Swing 控件布局
摘自http://www.cnblogs.com/fnlingnzb-learner/p/6008572.html 运用 BoxLayout 进行 Swing 控件布局 对于初学 Java Swing ...
- ssl相关
http://www.willrey.com/support/ssl_DES.html http://www.07net01.com/linux/Linuxdejiamirenzhenggongnen ...
- poj 3728 The merchant(LCA)
Description There are N cities in a country, and there is one and only one simple path between each ...
- 逐渐深入地理解Ajax
Ajax的基本原理是:XMLHttpRequest对象(简称XHR对象),XHR为向服务器发送请求和解析服务器响应提供了流畅的接口.能够以异步方式从服务器获得更多信息.意味着用户不必刷新页面也能取得新 ...