zoukankan      html  css  js  c++  java
  • ZigBee PRO笔记

    一、网络层的概念

    1.ZigBee节点(ZigBee Nodes)

    在一个ZigBee网络中存在三种类型的节点:

    ¨        Co-ordinator

    ¨        Router

    ¨        End Device

    (1)Co-ordinator

    所有的ZigBee网络必须有一个(且仅有一个)Co-ordinator节点.

    在网络层,Co-ordinator用于系统的初始化—它是第一个被启动的节点且执行以下初始化任务:

    ¨        选择一定频率的网络信道

    ¨        启动网络

    ¨        允许子节点通过它加入网络

    Co-ordinator节点能够提供额外的服务,例如:消息的路由发送和安全管理,它也能在应用层提供服务。如果需使用任何这些额外的服务,那么Co-ordinator节点必须一直提供这些服务。然而,如果不需使用任何这些额外的服务,则网络将会正常运行即使Co-ordinator节点不能正常工作或被关闭了。

    (2)Router

    一个ZigBee网络一般至少有一个Router节点。

    Router节点的主要任务如下:

    ¨        转发从一个节点到另一个节点的消息

    ¨        允许子节点通过它加入网络

    注意:Router节点不能睡眠,因为需路由它必须一直可用。

    (3)End Device

    在网络层,一个End Device节点的主要任务是发送和接收消息,一个End Device节点只能够直接和它的父节点通信,所以所有End Device的消息发送和接收必须通过其父节点。

    注意:End Device节点不能转发消息和不允许其它节点通过它加入网络,即它们不能有子节点。

    2.网络拓扑(Network Topology)

    ZigBee PRO协议标准旨在促进无线网络的Mesh网络拓扑结构。

    Mesh网络由Co-ordinator,Router和End Device节点组成。Mesh网络的通信规则如下:

    ¨        一个End Device节点只允许和它的父节点直接通信

    ¨        一个Router节点允许直接和它的子节点,父节点和任意在其RF范围内的其它Router节点或Co-odinator 节点通信

    ¨        Co-ordinator节点能够直接和其子节点和任意在其RF范围内的其他Router节点通信

    注意:处于休眠状态的End Device节点不能直接接收消息,消息到达后总是先存储在它的父节点,除非消息到达时节点已“醒来”,一旦“醒来”,它必须轮询它的父节点查看是否有消息。

     

    图1 Mesh 拓扑

    3.邻居表(Neighbour Tables)

    一个路由节点(Router或Co-ordinator)保存有关于邻居节点的信息,这些信息被存储在邻居表内,表中的条目用来存储它的直接子节点,父节点和Mesh网络中与它有直接RF通信的同等Router节点。

    可以定义一个最大的目数的邻居列表,如果参数设置较小,它将导致网络长而薄。

    4.网络地址(Network Addressing

    在zigbee网络中,每个节点都有它唯一的标识:

    ¨        IEEE(MAC)address:这是一个64位的地址,对于一个设备来说它是唯一的标识,世界上没有两个设备是一样的IEEE地址。经常被称作MAC地址,在ZigBee网络中,它有时也被称作扩展地址(extended address)。

    ¨        网络地址:这是一个16位的地址,用于在网络中标识一个节点(因此,两个在不同网络中的节点可能拥有相同的网络地址),它有时被称作为短地址。

    在ZigBee PRO中,节点的网络地址是当其第一次加入网络时由其父节点动态分配的一个随机的16位地址,加入节点能够保存分配的网络地址,即使它后来丢失了父节点且重新获得了一个新的父节点。

    Co-ordinator节点网络地址总是0x0000.

    5.网络标识(Network Identity

    一个ZigBee网络必须唯一可标识,这允许超过一个ZigBee网络在相近的区域同时运行,节点运行在相同的区域必须能够区分它们属于哪个网络。

    因为这个缘故,ZigBee使用了两种标识,如下:

    ¨        PAN ID:PAN ID(Personal Area Network Identifier)是一个16位的值,z在节点间的通信中用于区分相关网络。PAN ID的值由Co-ordinator节点启动时随机选取,当其它节点加入网络时,它们知道这个网络的PAN ID并把它用在后续的网络通信中。

    ¨        Extended PAN ID: Extended PAN ID(EPID) 是一个64位的数值,用于组网过程中以及如果必要,用于随后修改网络。这个标识能够预设一个随机值在运行于Co-ordinator节点的用户应用中。或者,这个标识可以预设为0,当网络启动时,Co-ordinator节点将采用自身的64位IEEE/MAC地址作为EPID---这种方式确保获取一个全局的唯一值。

    当一个Router节点或者End Device节点第一次尝试加入网络时,它将在以下情况下使用Extended PAN ID:

    ¨        对于Router节点或者End Device节点,如果存在一个EPID已经预设在用户应用中,则节点加入拥有这个EPID的网络(假如这个网络被检测到)。

    ¨        对于Router节点或者End Device节点,如果没有预设的EPID,则节点加入第一个被检测到得网络,而不考虑EPID。加入的节点将会获知它的网络的EPID,并在将来如果由于某些原因,它与网络失去了联系,它将使用这个标识重新加入网络。

    注意:在应用层,你只需要考虑EPID,至于PAN ID的分配和使用对于应用是透明的。

    二、创建网络

    这部分主要讲ZigBee PRO网络的启动和组网过程,注:下面描述的组网过程在ZigBee栈里自动执行。

    1.启动网络

    Co-ordinator负责启动一个网络,它必须是第一个节点启动且一旦上电,则按照如下的步骤进行网络的初始化:

    (1)设置EPID和Co-ordinator 地址

    Co-ordinator首先设置网络的EPID和设备自身的网络地址:

    ¨         把EPID设置成由Co-ordinator节点应用中指定的64位的数值EPID(如果这个值是0,则将会把Co-ordinator的64位的IEEE/MAC地址设置成EPID)

    ¨        设置Co-ordinator节点的16位的网络地址为0x0000

    (2)选择射频信道

    Co-ordinator节点执行能量监测扫描,扫描射频频段以查找一个安静的信道。选择最不活跃的信道。

    (3)设置网络的PAN ID

    一旦射频信道的选择完成,Co-ordinator节点为网络选择一个16位PAN ID。

    (4)接收其他设备加入网络的请求

    2.加入网络

    Router节点和End Device节点能够加入一个由Co-ordinator节点创建的且已经存在的网络。Co-ordinator和Routers允许其他节点通过他们加入网络。加入的过程如下:

    (1)搜索网络

    新节点首先通过扫描相关RF频段的信道查找网络,可能多个网络在运行,甚至运行在相同的信道,且网络的选择由应用负责(例如,可以有预先设定的EPID来决定加入的网络)。

    (2)选择父节点

    在选择加入的网络内通过侦听网络的活动选择一个父节点。节点可能能够“侦听”到多个Router节点和Co-ordinator节点。节点在网络中选择深度最小的节点作为父节点——也就是说,最靠近Co-ordinator(深度为0)节点为父节点。

    (3)请求加入

    节点发送消息到选择的父节点,请求加入网络。

    (4)接收响应

    节点等待选择的父节点(决定这个节点是否是一个允许的设备且自身现在是否允许节点加入)响应。

    (5)获知网络IDs

    新加入的节点获知网络的PANID和EPID,它需要PAN ID来和网络通信,且如果将来它需要重新加入网络,则它需要EPID.

    注意:当一个孤立的节点尝试重新连入网络,潜在的父节点“允许加入”状态被忽略。因此,该节点能够重新加入网络通过 “允许加入”已禁用的父节点。

    三、应用层的概念

    1.多应用和端点(Multiple Applications Endpoints

    一个节点可以有多个应用在运行---例如,一个节点在环境监控网络中可能需要测量温度和湿度,每一个都是一个应用。通过端点,作为应用的通信端口的提供访问应用程序实例。

    在一个节点中,为了将消息直接发送至合适的应用实例,端点号必须指定。端点的编号从1到240。

    因此,在ZigBee网络中,为了和远端的应用实例通信,你需要提供远端节点的地址和在这个节点上的端点号。

    端点号255是一个广播的端点编号----相同的数据能够发送到一个节点的所有应用实例

    2.描述符(Descriptors

    一个应用可能需要获取信息关于运行的网络节点,因此,节点将信息存储在它的描述符里。

    有三种强制(mandatory)的描述符和两种可选的描述符,强制的描述符是节点(Node),节点能量(Node Power)和简单描述符(Simple),而可选的描述符是复杂(Complex)和用户(User)描述符.

    对于每一个节点,只有一个Node和Node Power描述符,但是每一个端点都有一个Simple描述符。在设备中也可能存在Complex和User描述符。

    Node,Power Node和Simple描述符概述如下,关于描述符的详细内容,请参考ZigBee PRO APIs Reference Manual(JN-RM-2041).

    (1)Node Descriptor

    Node descriptor 包含节点功能的信息,包括:

    ¨        类型(End Device,Router或Co-ordinator)

    ¨        使用的频带(868MHz,902MHz或者2400MHz)

    ¨        IEEE802.15.4 MAC功能

    1. 设备是否能成为一个PAN Co-ordinator
    2. 节点是否实现全功能或者半功能的IEEE 802.15.4设备
    3. 该设备是否是主电源供电
    4. 设备是否能够使用MAC安全
    5. 接收器是否保持空闲周期

    ¨        制造商代码

    ¨        最大缓冲大小(在一次操作中,可以由应用程序发送的最大数据包)

    (2)Node Power描述符

    Node Power描述符包含节点的供电信息:

    ¨        电源模式----由网络或者应用程序需要(例如:按键)来决定设备接收器是否一直开着或者周期性“醒来”

    ¨         可用的电源----表示主电源,或可再充电电池或一次性电池(或其它任何组合)是否可用于设备供电

    ¨        当前电源----表示目前正在设备供电的电源(主电源或可充电电池或一次性电池)

    ¨        当前电源电量----表示当前电源充电电量

    (3)Simple描述符

    对于一个应用程序,Simple描述符包括:

    ¨        该应用程序的通信端点

    ¨        它实现的应用程序profile

    ¨        应用程序profile设备标识和版本

    ¨        是否有相应的Complex和User描述符

    ¨        该应用程序使用,并提供的输入和输出列表车Cluster

    (2)应用程序Profiles (Application Profiles)

    应用程序Profile确保来自不同制造商的ZigBee设备具有互操作性。

  • 相关阅读:
    我的Android app开发生涯
    极客学院
    区分H5和native页面
    H5之测试工具
    放最多水
    数组去重 快慢指针
    搜索插入位置 二分查找
    this指向
    JS 抖动和节流
    图片懒加载和预加载
  • 原文地址:https://www.cnblogs.com/fuxianfeng1988/p/3258446.html
Copyright © 2011-2022 走看看