Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173890
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 181
  • 用 户 组: 普通用户
  • 注册时间: 2016-02-25 15:50
文章分类
文章存档

2020年(1)

2016年(62)

我的朋友

分类: 嵌入式

2016-03-09 16:10:59

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位地址)。

阅读(1070) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~