协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢

2023-11-01

协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢?  

  

|字号 订阅

协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢?
猜想如下:
终端上电后稳定后就开始寻找周围是否存在网络?向周围发射广播,该广播内容包含自己的身份信息,即MAC地址和其它相关的网络信息,并时刻等待协调器或路由器的回应,一旦收到父网确认加入网路的回应信号则停止广播自己的身份ID,转入定时询问父网是否有自己消息的状态,并一直持续下去,如果有自己的消息则进行消息接收或处理。
协调器上电后首先组建网络,网络组建成功后就可以允许其它设备加入到该网路并对网络进行管理,一旦发现有新的设备加入到网络,则分析该设备的广播包并解析出它的IEEE地址,然后分配给它一个网络短地址,反馈给该设备加入确认信息,至此一个设备加入到了该网络中。
实验与分析:
1、分析终端上电后的行为
      使用sniffer截取一部分采集到数据如下:
1)dest pan ID  为0xffff,说明终端未加入到网络;
2)dest address 地址为0xffff 说明终端目前以广播方式进行数据发送;
......................
偶然发现了frank写的一篇文章整好可以回答这个问题,引用一下大家参考参考,我就不继续写了,呵呵。
网络地址的分配及获取[转]
 
 
      Zigbee2006通过分布式寻址方案来分配网络地址的,保证网络内地址的唯一性。这个寻址算法本身的分布特性保证设备只能与其父辈设备通讯来接受一个网络地址。不需要整个网络范围内通讯的地址分配,有助于网络的可测量性。

在04协议栈里有这样一个公式,A=A(parent)+Cskip(d)*Rm+n,Cskip(d)是不同深度的父设备分配地址时的偏移量,Rm是可以携带的最大路由数,n是第n个设备。其中如果Cskip(d)=0x5a6,Rm=4,则协调器的第一个RFD的地址为A=0+0x5a6*4+1=0x1699.

在06协议里看到这样一个描述:对于一个地址为A、深度为d的路由器,如果下式成立,则具有地址为D的目的地址设备为子设备:A<D<A+Cskip(d-1),假设父设备可拥有的最大子设备数为Cm,其拥有的最大路由子设备数为Rm,网络的最大深度为Lm,则父设备所能分配子区段地址数为:

若Rm=1,Cskip(d)= 1+Cm*(Lm-d-1);

若Rm不为1,则Cskip(d)=(1+Cm-Rm-Cm*( Rm)^(Lm-d-1))/(1-Rm).

后来在另一本资料上见到一份资料:

子节点为父设备的第n个子路由器的短地址分配:

Achild =Aparent +(n-1)*Cskip(d)+1,n=1

Achild =Aparen +(n-1)*Cskip(d),n>1

子节点为父设备的第n个子终端设备的短地址分配:

Achild = Aparent + Rm*Cskip(d)+ n

下图为Lm=3,Cm=6,Rm=4的网络地址分配示例。

协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢? - 蓝天白云 - 蓝天白云的博客

几个有用的关于物理地址和网络地址的函数:

得到父节点的网络地址:uint16 NLME_GetCoordShortAddr( void );

得到父节点的物理地址:void NLME_GetCoordExtAddr( byte * );

得到自己的网络地址:uint16 NLME_GetShortAddr( void );

得到自己的物理地址:byte *NLME_GetExtAddr( void );

根据已知物理地址查询远程设备网络地址,作为一个广播信息发送给网络中的所有设备:

afStatus_t ZDP_NwkAddrReq( byte *IEEEAddress, byte ReqType,
                           byte StartIndex, byte SecurityEnable )

根据已知网络地址查询远程设备物理地址,作为一个广播信息发送给网络中的所有设备:

afStatus_t ZDP_IEEEAddrReq( uint16 shortAddr, byte ReqType,
                            byte StartIndex, byte SecurityEnable )

快速查询(不启动无线查询,而是根据已存储于地址管理器中的网络(物理)地址查询物理(网络)地址):

查找基于网络地址的物理地址:

uint8 APSME_LookupExtAddr( uint16 nwkAddr, uint8* extAddr );

查找基于物理地址的网络地址:

uint8 APSME_LookupNwkAddr( uint8* extAddr, uint16* nwkAddr );

一般发送消息,使用物理地址和网络地址都可以发送,但最好用网络地址,使用物理地址可能会出现问题。

采用16bit网络地址可以降低功耗问题。如果采用64bit IEEE地址发送数据,首先其数据发送的最佳路径难以求得,势必会增加多次发送的功耗 其二 如果该数据接收设备离开网络(当机),发送之时也就不知道。 采用网络地址发送数据,可以采用路由算法 找到最佳路径 减其功耗。[摘自fjxsos]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢 的相关文章

  • 485无线通信/数传模块_zigbee模块_RS485转ZigBee_顺舟智能

    一 概述 顺舟智能 SZ02系列 ZigBee无线串口通信设备 xff08 485无线通信 数传设备 xff09 xff0c 采用了加强型的ZigBee无线技术 xff0c 集成了符合 ZIGBEE协议的射频收发器和微处理器 xff0c 符
  • 基于ZigBee的智能家居系统

    本项目基于C 编写智能家居系统PC客户端 同时编写安卓客户端 代码下载链接https download csdn net download hzqgangtiexia 10435931 1 硬件选型及数据采集 节点板子以CC2530芯片为核
  • 无线通信原理及协议栈(ZigBee、蓝牙等)解析

    1 天线 说起无线电通信 xff0c 不可不提起天线 在无线电设备中 xff0c 用来辐射和接收无线电波的装置称为天线 在发射端 xff0c 发射机产生的已调制的高频振荡电流 xff08 能量 xff09 经馈电 xff08 指被控制装置向
  • ZigBee节点——ZigBee协议栈Z-Stack开发指南

    ZigBee节点 ZigBee协议栈Z Stack开发指南 分类 ZigBee 2011 08 18 14 06 749人阅读 评论 0 收藏 举报 网络 路由器 终端 network types 通讯 1 1设备类型 Device Typ
  • zibgee协议

    1 概述 1 1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802 15 4标准基础上建立的 定义了协议的MAC和PHY层 ZigBee设备应该包括IEEE802 15 4 该标准定义了RF射频以及与相邻设备之间的通信 的PHY
  • zigbee中有几个不同的频率,是啥意思?有啥联系和区别

    zigbee中有几个不同的频率 是啥意思 有啥联系和区别 2011 05 30 09 03 cnsxgh 分类 工程技术科学 浏览1209次 channel 2405Mhz Pan ID 0x0628 工作频率 2 4Ghz 提问者采纳 2
  • 协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢

    协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢 字号 订阅 协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢 猜想如下 终端上电后稳定后就开始寻找周围是否存在网络 向周围发射广播 该广播内容包含自己的身份信息 即M
  • BLE 和 Zigbee 肉眼读数(更新ing)

    BLE1M 画相位图 可以读出preamble 01010101 同步码 01101011 通过向下向上的轨迹来肉眼读 原理是需要看如何进行调制的 toolbox中是GMSK调制 所以反着推回去 就知道画相位图能直接肉眼读数了 同理Zigb
  • ZigBee传感数据采集实验

    一 实验目的与要求 1 学习通过DHT11采集温度和湿度数据 2 掌握CC2530接收和发送串口数据 3 学习使用ZStack库 二 实验原理与内容 1 DHT11电路图 2 基本控制原理 2 1 CC2530 的 IO 口配置我们需要配置
  • 8086CPU外部引脚图

    8086CPU外部引脚图 在最小模式中引脚定义 AD15 AD0 Address Data Bus 16位地址 数据总线 分时复用 传输地址时三态输出 传输数据时三态双向输入 输出 在总线周期T1状态 CPU在这些引脚上输出存储器或I O端
  • ZigBee协议

    1 1 IEEE802 15 4标准 随着通信技术的迅速发展 人们提出了在自身附近几米范围内通信的要求 这样就出现了个人区域网络PAN Personal Area Network 和无线个人区域网络WPAN Wireless Persona
  • ZIGBEE抓包工具Ubiqua使用介绍

    一 软件安装 Ubiqua 软件下载链接 https download csdn net download m pfly fish 12050973 二 安装CC2531抓包驱动 驱动软件下载链接 https download csdn n
  • 基于Zigbee的SHT10温湿度数据采集系统(已实现控制12个终端节点)——Zigbee协调器主要代码解析

    之前实现了基于Zigbee的SHT10温湿度数据采集系统 这里来重新复盘一些主要的知识和代码 写在前面 1 功能介绍 使用Zigbee终端节点采集环境的温度和湿度数据 然后将数据无线发送的Zigbee协调器 最后在电脑端显示获得到的数据 2
  • ZIGBEE: Error[Pa045]: function "" has no prototype问题解决方法

    IAR CC2530的2个程序整合后 报错 而全部错误都是一个性质 Error Pa045 function has no prototype 去掉 Require prototype选项 重新编译即可 应该是一个编译顺序问题
  • Fatal Error[Cp001]: Copy protection check, No valid license found for this product [24]

    解决方法 1 卸载IAR 2 以管理员身份打开IAR安装包 3 以管理员身份打开IAR注册机 4 正常安装即可 5 安装完成后以管理员身份打开IAR 编译程序就会正常
  • zigbee串口打印无法显示或乱码解决方法

    zigbee串口打印问题 在终端节点向协调器发数据时 在数据流中伴有该节点的网络地址 而有时通过PC端无法打印出来 1 可能是串口软件的问题 用过好几个串口软件 有时会出现停止 或乱码行为 在经过多次换用软件 发现 SecureCRT 这个
  • 基于芯科Ember SDK开发的ZigBee ota client验证固件时崩溃(Reset info: 0x0A (FLT)), SDK Bug导致!

    现象 ZigBee子设备新固件下载完成后 准备校验其合法性 代码运行至检验部分 MCU崩溃重启 日志如下 RECV ASCII gt Processing message len 33 profile 0104 cluster 0019 T
  • 在双精度和字节数组之间进行转换,以便通过 ZigBee API 传输?

    我正在尝试获取两个双精度数 GPS 坐标 并通过 ZigBee API 将它们发送到另一个 ZigBee 接收器单元 但我不知道如何将双精度数分解为字节数组 然后将它们重新组合回原始形式一旦他们被转移 基本上 我需要将每个双精度数转换为八个
  • MacOS 10.8 的 rxtxSerial.dll

    我目前正在开发一个 ZigBee 项目 并在装有 Mountain Lion 10 8 的 Mac 上并使用 Eclipse IDE 进行编程 要通过 USB 使用我的 Zigbee 模块进行串行通信 我需要这个 rxtxSerial dl
  • XBee3 协调器在网络发现期间找不到 End_Device

    目前 我正在运行 XBee3 International Mesh Kit 并尝试按照文档中给定的示例进行操作 我尝试使用 Micropython REPL 为三个设备实现网络发现 以下是我的 3 个 XBee 设备的配置 3 个 XBee

随机推荐

  • Vue 使用高德Api的Autocomplete 下拉菜单不出现的问题

    使用Autocomplete 插件需要有key 和 安全密钥 否则下拉菜单内容不会出现 具体用法 需要在script 标签下 加一段代码 这样即可生效
  • 【多模态论文解读】Align before Fuse: Vision and Language Representation Learning with Momentum Distillation

    Align before Fuse Vision and Language Representation Learning with Momentum Distillation Name ALBEF Key words Multimodal
  • [2019计算机视觉]——贪心学院 学习笔记【目录】

    题记 一直在做视觉 但一直没有系统地学一遍 老有一种不安的感觉 故此 从某站上白嫖得一部视频 并将每次的学习内容记录下来 或以此为目录 或为开篇
  • apache文件上传组件详解

    本人水平有限 在学习时请用批判的态度学习 有问题给我留言 说详解有点没有底气了 这是讲文件上传时的一个例子 我把每一行代码的注释都写了出来 加强理解 熟悉api 我把上传文件功能放到了一个工程里 前台有一个index jsp页面 一个suc
  • Win7+64位操作系统成功注册dll的方法!(已测试成功)

    Win7 64位操作系统成功注册dll的方法 已测试成功 因为某种原因 需要在win7 64位下注册dll 但是点击开始运行 输入regsvr32 aaa dll 时 提示错误 无法注册 因此 通过网上查找再经一翻摸索 终于找到了一个完全注
  • 解决Could not load dynamic library ‘libcudart.so.11.0‘; dlerror: libcudart.so.11.0妙招

    一 问题 最近学习AI 需要在Ubuntu下安装TensorFlow 结果TensorFlow装好后 import TensorFlow时报错 Could not load dynamic library libcudart so 11 0
  • IDEA发布全新字体,极度舒适!

    近日 知名设计软件IDEA IntelliJ IDEA 发布了一款全新的字体 Ideographic 这款字体不仅在设计上独具匠心 同时还具有极高的舒适度 下面 我们就来详细了解一下这款字体的特点 IDEA是一款广泛应用于软件开发和设计领域
  • Android Studio 新建drawable-hdpi、drawable-mdpi等

    Android Studio 新建drawable hdpi drawable mdpi 在不同的模式 Project Android 的文件夹中查看文件夹 如果文件夹丢失 您可以轻松添加它们 1 在 res 文件夹上右键 New gt A
  • C++ VScode配置libtorch,并调用PyTorch模型

    C VS配置libtorch 调用TorchScript模型 获取pytorch模型 转成C 模型 下载配置libtorch库 VS 1 首先是下载libtorch库 2 VS中配置 C 调用模型 获取pytorch模型 将训练好的模型保存
  • discuz手机客户端java,Discuz 触屏手机版支持视频播放的方法

    if defined IN MOBILE if strpos msglower media FALSE message preg replace media w s url message if strpos msglower audio
  • WEB安全之:Oracle 数据库 SQL 注入

    郑重声明 本笔记编写目的只用于安全知识提升 并与更多人共享安全知识 切勿使用笔记中的技术进行违法活动 利用笔记中的技术造成的后果与作者本人无关 倡导维护网络安全人人有责 共同维护网络文明和谐 SQL 注入 Oracle 数据库 1 Orac
  • as汇编命令(来自 深入理解Linux内核)

    as汇编命令 来自 深入理解Linux内核 as汇编命令 汇编命令是指示汇编器操作方式的伪指令 汇编命令用于要求汇编器为变量分配空间 确定程序开始地址 指定当前汇编的区 修改位置计数器值等 所有汇编命令的名称都以 开始 其余是字符 并且大小
  • 基于R语言的数据可视化:平行坐标轴图

    基于R语言的数据可视化 平行坐标轴图 数据可视化是数据分析过程中重要的一环 它能够帮助我们更直观地理解数据之间的关系 趋势和模式 在R语言中 有许多包可以用于实现不同类型的数据可视化 其中 GGally包提供了丰富的功能 可以用来绘制多变量
  • 工业机器人三点工具定位法图文_工业机器人工具坐标系的设置

    何淼 摘要 该文以FANUC工业机器人为例 从工具坐标系设置的意义出发 分析了不同机器人设置工具坐标系的方法 成功建立了机器人新的工具坐标系 为机器人精确的运动控制奠定基础 关键词 工业机器人 坐标系 TCP 中图分类号 TP319 文献标
  • 垂直同步

    vblank时间 显示器显示一帧的时间 显卡或芯片输出的图像数据写在后缓存里 屏幕读取前缓存的图像数据并显示 后缓存数据写入完毕后 前后缓存进行交换 如果前缓存的图片写入速度与屏幕读取图像的刷新率不匹配会发生画面撕裂 解决办法 垂直同步 当
  • JAVA中那些令人眼花缭乱的锁

    一 开局一张图带你了解java相关的锁 二 乐观锁和悲观锁 1 悲观锁 悲观锁对应于生活中悲观的人 悲观的人总是想着事情往坏的方向发展 举个生活中的例子 假设厕所只有一个坑位了 悲观锁上厕所会第一时间把门反锁上 这样其他人上厕所只能在门外等
  • mysql 优化杂记

    慢日志分析 SELECT user id AS userId charm AS num FROM db charm WHERE user id NOT IN ORDER BY num DESC userId LIMIT 性能分析 not i
  • Python 爬虫逆向

    Python 爬虫逆向是指使用 Python 语言来编写爬虫程序 用于爬取网站的信息 爬虫逆向一般指的是通过分析网站的网页代码和加载流程 来确定网站信息获取的方式 并使用爬虫程序来模拟这种方式 从而获取网站的信息 爬虫逆向的主要目的是通过自
  • 为什么spark读取本地的json文件会自动去hdfs上去找?读取不到本地的文件

    问题描述 遇到的问题如上图所示 我在spark中读取的json文件明明是集群本地的文件 可是他偏偏就自作聪明去了hdfs上面去找我的文件 那肯定会报错啊 我hdfs上怎么可能有这个文件嘛 原因 我在spark中的运行环境配置了yarn关联
  • 协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢

    协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢 字号 订阅 协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢 猜想如下 终端上电后稳定后就开始寻找周围是否存在网络 向周围发射广播 该广播内容包含自己的身份信息 即M