Zigbee—网络层地址分配机制

简介: Zigbee—网络层地址分配机制

前言

       本文主要是介绍对于zigbee网络层中地址分配机制中对于各个节点的网络地址的计算,对于其他的知识点可能总结的不是很到位。诸如以下的题目:


        计算如下图所示各个节点的网络地址

2.png


一、Zigbee网络层地址分配介绍

      水一下定义啦,怎么计算从后面的小点开始

       Zigbee网络层地址分配是指在Zigbee网络中为节点分配唯一的网络地址,以实现节点之间的通信。网络层地址由16位地址组成,通常用十六进制表示。Zigbee网络中有两种类型的地址:短地址和扩展地址。

       短地址用于节点在网络中的直接寻址。短地址是由协调器分配,并且只在网络内唯一。短地址是16位的,范围为0x0000到0xfffe,其中0xfffe保留。协调器的短地址为0x0000。

扩展地址用于唯一标识节点。扩展地址是64位的,由厂商分配。扩展地址通常用于在网络层建立长期的安全连接,以保护通信安全。

       Zigbee网络中还存在一个特殊的短地址0xffff,用于向所有节点广播消息。这个地址无论在哪个网络中都是预留的。

       在Zigbee网络中,节点可以使用短地址或扩展地址进行通信。节点可以根据需要选择使用哪种地址。要向网络中的节点发送消息,需要知道节点的地址。节点的地址可以通过网络扫描或直接查询节点得到。


二、 网络层地址分配计算

       现给出一个公式,请一定一定要记住!!!

3.png

 对于该公式的说明:


      C->每个父节点最多可连的节点数

       R->父节点下的那C个子节点最多可有的路由器节点数

       L->网络的最大深度

       d->网络深度

       Cskip(d)->网络深度d的父节点为子节点分配的地址之间的偏移量


      注意:我们对于分配地址的计算的要点就是围绕这些来进行的!!!其中最主要的便是Cskip,务必要计算准确!!! 其中C、R、L通常题目会给出!


  一些额外的说明:

(1)当一个路由器节点的Cskip(d)为0时,它就不具备为子节点分配地址的能力(意思就是不用往后算了!!!),也即表明不能够在使用别的节点通过他加入网络。

(2)当Cskip(d)大于0时表明父节点可以接受其他节点为其子节点(意思是你要你要往后继续算!!!),并为子节点分配网络地址。父节点会为第一个与它关联的路由器分配比他大1的地址,之后与之关联的路由器节点的地址之间都相隔偏移量Cskip(d)。

(3)每个父节点最多可以分配R个这样的地址。伪终端节点分配地址和为路由器节点分配地址不同,假设父节点的地址为Ap,则第N个与之关联的终端节点地址An按下式计算:

33.png

 通过一道例题来进一步理解 :

  1. 计算如下图所示各个节点的网络地址。其中,1号节点为ZigBee协调器,与协调器相连的其他节点为路由器和终端;假设在当前的网络结构中,每个父节点最多可以连接4个子节点,子节点最多可以有4个路由器节点,当前网络的最大深度为3。

4.png

 分析一下这道题目:父节点最多可以连接4个子节点->C=4,子节点最多可以有4个路由器节点->R=4,最大深度为3->L=3,结合图来分析:

再来看这个公式,我们已经知道R为4的情况下,对此选择下半公式来进行计算!

5.png

计算如下:分别计算出深度为0、1、2时的Cskip


      Cskip(0) = (1+4-4-(4*4^(3-0-1)))/(1-4) = 21

       Cskip(1) = (1+4-4-(4*4^(3-1-1)))/(1-4) = 5

       Cskip(2) = (1+4-4-(4*4^(3-2-1)))/(1-4) = 1

    在计算完成之后其实已近完成了大半的工作,接下来按照规则来分配节点即可:

首先从ZigBee协调器相邻的节点开始分配,分配完成后,再依次分配各自的子节点。

       如下图所示:

接下来是重点,请注意!!!


       由于本题未说明终端节点以及以及路由器,对此本题按一下规则:


       我们就将所有节点都看作为路由器吧!现在,(1)我们选择与父节点(默认1号节点地址addr(1)=0)相邻的任意一个节点,剩下的先放在一边,让这个节点在根节点的地址基础上+1!!!这里选择了2号节点,则二号节点的地址:addr(2) = addr(1)+1。(2)其他剩余的节点按照逆时针、顺时针都可以分别用上一层次深度的Cskip加上相邻节点的地址,例:3号:addr(3) = addr(2) + Cskip(0) = 1+21 = 22,4号:addr(4) = addr(3) + Cskip(0) = 22+21 = 43,5号:addr(5) = addr(4) + Cskip(0) = 43+21 = 64 既:如下图所示:

在进行完上面的步骤后,我们分别以各个已近分配好地址的节点为父节点,接着重复(1)(2)操作即可,(特别注意:在Cskip=0时就没必要继续分配了)

以下是本文的总体解题:

1号:addr(1)=0

Cskip(0)=21

2号:2addr(2) = addr(1)+1=1

3号::addr(3) = addr(2) + Cskip(0) = 1+21 = 22

4号:addr(4) = addr(3) + Cskip(0) = 22+21 = 43

5号:addr(5) = addr(4) + Cskip(0) = 43+21 = 64

Cskip(1)=5

9号:addr(9) = addr(5) + 1 = 64+1 = 65

6号:addr(6) = addr(9) + Cskip(1) = 65+5 = 70

7号:addr(7) = addr(3) + 1 = 22+1 = 23

8号:addr(8) = addr(4) + 1 = 43+1 = 44

特别注意!!!

       如若是区分协调器以及终端的题目则对终端用以下公式:

这里就不多阐述了,对于终端就多注意一下就好


感谢你耐心的看到这里ღ( ´・ᴗ・` )比心,如有哪里有错误请踢一脚作者o(╥﹏╥)o! 

                   

相关文章
|
7月前
|
IDE Java 开发工具
Android Studio 2025 安装教程:详细步骤+自定义安装路径+SDK配置(附桌面快捷方式创建)
Android Studio 2025是基于IntelliJ IDEA的官方Android开发IDE,性能更强、智能提示更准、界面更流畅。本指南详解安装配置全流程,含下载、解压、管理员运行、路径设置、SDK自动配置及快捷方式创建,助你快速上手开发。(239字)
|
存储 缓存 Python
如何使用Python抓取PDF文件并自动下载到本地
如何使用Python抓取PDF文件并自动下载到本地
2198 0
|
机器学习/深度学习 并行计算 PyTorch
利用谷歌colab跑github代码AttnGAN详细步骤 深度学习实验(colab+pytorch+jupyter+github+AttnGAN)
Google Colab,全名Colaboratory,是由谷歌提供的免费的云平台,可以使用pytorch、keras、tensorflow等框架进行深度学习。其GPU为Tesla T4 GPU,有很强的算力,对于刚入门机器学习或深度学习的用户,这个平台是不二之选。
利用谷歌colab跑github代码AttnGAN详细步骤 深度学习实验(colab+pytorch+jupyter+github+AttnGAN)
|
12月前
|
芯片
基于模拟I2C协议驱动SD3078时钟芯片
基于模拟I2C协议驱动SD3078时钟芯片
|
安全 Unix Linux
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
163012 65
|
缓存 Android开发 开发者
《跨端开发变革者:解码阿里Ant Container Engine的底层逻辑》
阿里Ant Container Engine(ACE)是跨端开发领域的革新工具,通过一套代码库实现多端应用构建,大幅降低开发成本与周期。它整合丰富组件库与优化工具链,确保各平台一致的优质体验。ACE的热插拔技术实现毫秒级更新,助力应用快速迭代;深度性能优化使其媲美原生应用。以闲鱼为例,其跨端模块占比达78%,彰显ACE高效灵活特性。ACE助力企业降本增效、抓住市场机遇,推动数字化创新与发展。
390 11
|
人工智能 新能源 BI
关于举办"2025年第五届全国大学生技术创新创业大赛"的通知
大赛已连续举办四届,举办以来大赛始终以“创新驱动,赋能就业”为目标,促进学生的创新创造能力,普及创新创业知识,拓宽就业创业渠道,挖掘创新人才,培育多元化的未来产业推进力量。自开赛以来,赛事受到百余所学校关注,十几所高校已立项,参赛人次达上万人,征集优秀商业计划书上千余份。本届新赛事将继续全面贯彻党的二十大精神,完整、准确、全面贯彻新发展理念,加快构建新发展格局,以传统产业的高端化升级和前沿技术的产业化落地为主线,以创新为动力,第五届赛事将开展优秀项目落地北京计划。
3282 4
|
存储 NoSQL Java
【数据结构进阶】哈希表
哈希表是一种高效的数据结构,通过哈希函数实现数据映射,支持平均O(1)时间复杂度的查找、插入和删除操作。本文详细介绍了哈希表的基本概念、哈希函数的设计(如直接定址法和除留余数法)以及哈希冲突的解决方法(如开放定址法和链地址法)。同时,文章通过代码实例展示了线性探测和链地址法两种哈希表的实现过程,并分析了各自的优缺点。最后总结指出,合理选择哈希函数和冲突解决策略是优化哈希表性能的关键。
1523 2
|
传感器 存储 开发者
Arduino 中用于从传感器读取模拟和数字数据的函数
Arduino 提供了多种函数,用于从传感器读取模拟和数字数据。模拟数据通过 `analogRead()` 函数读取,数字数据则使用 `digitalRead()` 函数。这些函数简单易用,适用于各种传感器,帮助开发者轻松获取环境信息。
1400 2