协调器是如何获取终端的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地址并自动对其分配网络短地址呢 的相关文章

  • STM32+Zigbee模块实现串口通信获取传感器数据

    文章目录 1 所用的资源2 Zigbee模块简介3 STM32板上用到的资源4 代码部分 1 所用的资源 1 两个Zigbee透传模块 2 两块32板 xff08 我手上的是VET6和RCT6的两块板子 xff09 xff0c 其它的板子也
  • 485无线通信/数传模块_zigbee模块_RS485转ZigBee_顺舟智能

    一 概述 顺舟智能 SZ02系列 ZigBee无线串口通信设备 xff08 485无线通信 数传设备 xff09 xff0c 采用了加强型的ZigBee无线技术 xff0c 集成了符合 ZIGBEE协议的射频收发器和微处理器 xff0c 符
  • Android手机控制ZigBee板上LED

    环境 xff1a Windows 编译器 xff1a IAREW8051 8 1 硬件 xff1a CC2530 协议栈 xff1a ZStack CC2530 2 3 0 1 4 0 手机 xff1a Android4 1 2 又重新开始
  • Zigbee技术有哪些特点

    ZigBee的特点主要有以下八个方面 xff1a xff08 1 xff09 低功耗 xff1a 在低耗电待机模式下 xff0c 2节5号干电池可支持1个节点工作6 24个月 xff0c 甚至更长 这是ZigBee的突出优势 相比之下蓝牙可
  • zigbee入网过程分析(mac层分析),附Ubiqua抓包

    普通开关 插座 门锁设备入网流程一般到basic就结束了 灯到identity结束 低功耗传感器设备一般到IAS zone结束 设备入网流程如下 1 beacon request 由endpoint发出 请求入网 设备一般会全信道扫描找网
  • zibgee协议

    1 概述 1 1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802 15 4标准基础上建立的 定义了协议的MAC和PHY层 ZigBee设备应该包括IEEE802 15 4 该标准定义了RF射频以及与相邻设备之间的通信 的PHY
  • CC2530学习(一)环境配置

    CC2530F256是一款将各种丰富的功能系统地集成到一片LSI Large Scale Integrated circuit 大规模集成电路 的片上系统 System on Chip 简称SoC 内嵌增强型51内核的单片机 芯片后缀256
  • Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once)

    今天在用IAR软件 给Zigbee程序写注释时 出现了这么一个警告 Warning Pa050 non native end of line sequence detected this diagnostic is only issued
  • zigbee加密技术

    ZigBee安全和加密 作者 wxl 发布时间 2009 05 22 已阅读 283次 在ZigBee技术中 采用对称密钥的安全机制 密钥由网络层和应用层根据实际应用需要生成 并对其进行管理 存储 传送和更新等 安全机制由安全服务提供层提供
  • ZigBee传感数据采集实验

    一 实验目的与要求 1 学习通过DHT11采集温度和湿度数据 2 掌握CC2530接收和发送串口数据 3 学习使用ZStack库 二 实验原理与内容 1 DHT11电路图 2 基本控制原理 2 1 CC2530 的 IO 口配置我们需要配置
  • 协议栈中绑定流程的一点认识

    2011年4月27日 初学者关于协议栈中绑定流程的一点认识 本人刚接触zigbee不久 在学习中将不断记录每天的进步 期待大家的指导 在这里指出我还是参考了ZStack CC2530 2 3 1 1 4 0 Projects zstack
  • ZigBee协议

    1 1 IEEE802 15 4标准 随着通信技术的迅速发展 人们提出了在自身附近几米范围内通信的要求 这样就出现了个人区域网络PAN Personal Area Network 和无线个人区域网络WPAN Wireless Persona
  • 基于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选项 重新编译即可 应该是一个编译顺序问题
  • Z-Statk协调器 路由器 终端的确定---Simple例程(一)

    Z Statk协调器 路由器 终端的确定 Simple例程 一 2010 12 24 09 42 10 分类 嵌入式 当我们选择了终端 路由器 或者协调器的时候 来看一下程序中是怎么判断的 也就是如何作为其中的各个角色进行启动 是加入网络
  • Zigbee协议栈(CC2530开发板) 修改发射功率

    Zigbee协议栈 CC2530开发板 修改发射功率 2010 12 07 15 11 43 分类 Zigbee 标签 zigbee 协议栈 发射功率 字号 订阅 CC2530 控制输出功率的寄存器是 TXPOWER 推荐功率设置 协议栈默
  • [ Z-Stack协议分析(一)] ZMain.c函数

    Z Stack协议分析 一 main函数解析 1 Z stack的简单介绍 Z stack是一个协议栈 是由美国TI公司德州仪器公司设计的 Z Stack协议可在官网下载 我用的还是老版本 ZStack CC2530 2 3 0 1 4 0
  • 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
  • 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