xbeePROS1发送的数据在802.15.4网络中有多大时延?
完整的计算过程请参考Digi官方网站的文章:Sending data through an 802.15.4 network latency timing. Digi的S1模块可以跑802.15.4固件,发送数据通过802.15.4的时延是空中传输时间加上CSMA-CA耗时和重传的时间之和,详述如下。最新的XBee S2C 802.15.4计算方法类似,只有少许差别,其它以802.15.4为基础的协议也可参考下面的一些内容,根据不同网络层协议中或参数中定义的包头包尾,有效载荷,最大字节数和mac层应用层的重发次数等另作计算,以方便对极端场景做程序上的优化设计。
快速参考(以下数据在接下来的计算中会用到)
单帧最大有效载荷数据:XBee 8021.5.4 max payload = 100 bytes
空中波特率: RF baud rate (802.15.4, 2.4GHz) = 250 Kbps
单字节250kbps传输耗时:Byte time @ 250 Kbps = 32 us
64-bit寻址发送空中耗时: T_air(B) = 0.8 + 0.032B ms
16-bit寻址发送空中耗时: T_air(B) = 0.416 + 0.032B ms
16-bit寻址发送最佳场景时耗时(广播及单播):16-bit best case (broadcast and unicast): T_total(B) = 0.544 + 0.032B ms
64-bit寻址单播发送最佳场景时耗时:64-bit unicast best case: T_total(B) = 0.928 + 0.032B ms
64-bit寻址广播最坏场景耗时: 64-bit Broadcast worst case: T_total(B) = 9.376 + 0.032B ms
16-bit寻址单播最坏场景总耗时:64-bit unicast worst case: T_total(B) = 40.096 + 0.128B ms
64-bit寻址单播最坏场景总耗时:64-bit unicast worst case: left for the reader to calculate
空中时间: 802.15.4物理层允许最大127字节包,去除包头包尾S1的有效载荷最大为100字节,S2系列的ZigBee包头会更大,每个帧最大有效载荷请以手册中为准。
802.15.4物理层定义RF的波特率为250Kbps,每位4us或是说每字节32us 所以T_air(B)=0.8 + 0.032B ms, 这里B是字节数 这个公式仅考虑空中时延,实际场景还要加上CSMA-CA和重传 载波监测多址接入碰撞规避机制是在发射前检测信道是否干净(CCA),如果信道评估没过,会延迟一段随机时间,再次尝试CCA。 CCA的算法在IEEE802.15.4的172页中有详述。这里有个简易的框架参考:
- 延迟一段随机时间, 随机延迟:(0 : 2^BE - 1) * 0.320 ms BE从RN开始,每次加1,最大值5次,直到步聚发送后清0。(RN在模块中可设置,默认为0,公式0:N中冒号表示在0和N之间的数值中随机选择)
- CCA (0.128ms)
- 如果CCA通过,发送出去,如果信道被占用,重复1~3步骤,最多重试4次。
- 如果是广播模式(没有应答/重传)就完成了。如果是单播:
- 等待目标节点的ACK (0.864ms)
- 如果ACK收到,就完成了,如果没收到1~4,最多重试3次
总计发送时间 T_total(B) 最好的情况,分16位寻址和64位寻址:
16-bit: T_total(B) = 0.544 + 0.032B ms 64-bit: T_total(B) = 0.928 + 0.032B ms
最差的情况:
16-bit:T_total(B) = 40.096 + 0.128B ms
也就是以常见的16位寻址的方式发送数据,在802.15.4协议下发送100字节,在最好的情况下,约耗时3.7ms,最差的情况为52.8ms。
xbeePROS1发送的数据在802.15.4网络中有多大时延?的更多相关文章
- 跨进程发送消息数据(发送WM_COPYDATA消息,够简单的)
1 //1.发送窗体 2 procedure TForm2.Button1Click(Sender: TObject); 3 var 4 h: HWND; 5 Size: Integer; 6 Cop ...
- 蓝牙(Bluetooth) IEEE 802.15.1 协议学习
catalogue . 蓝牙概念 . 配对和连接 . 机密安全性 . 蓝牙协议分类 . 蓝牙协议栈 1. 蓝牙概念 蓝牙(Bluetooth)是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网 ...
- IEEE 802.15.4协议学习之MAC层
MAC负责建立于网络的同步,支持关联和取消关联.MAC层的安全以及控制物理信道访问机制.信道访问机制主要有以下几种: 1. 有序的物理无线信道访问机制 2. 协调器启动和维 ...
- IEEE 802.15.4协议学习之物理层
在详细讲述IEEE 802.15.4协议之前,谈谈自己这两个星期看协议过程中的一点心得,或者是收获吧. 看协议文档,一定要看有书签的,边看边在旁边做些备注,以便于后期整理.对于协议层次相关的,最好在纸 ...
- 【转】iOS开发网络篇—发送json数据给服务器以及多值参数
原文: http://www.cnblogs.com/wendingding/p/3950132.html 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 ...
- Python3学习之路~8.2 socket简单实例 实现ssh 发送大量数据
实例1: 利用socket模拟客户端和服务器端各自收发一次数据: #Author:Zheng Na # 客户端 import socket # 声明socket类型,同时生成socket连接对象 cl ...
- IEEE 802.15介绍
1. 无线通信 无线通信主要是利用无线电(Radio)射频(RF)技术的通信方式,无线网络是采用无线通信技术实现的网络无线网络可为两种: 近距离无线网络和远距离无线网络 近距离无线网络主要可分为如下两 ...
- 类型:Ajax;问题:ajax调用ashx参数获取不到;结果:ashx文件获取$.ajax()方法发送的数据
ashx文件获取$.ajax()方法发送的数据 今天在使用Jquery的ajax方法发送请求时,发现在后台中使用ashx文件无法接收到ajax方法中传递的参数,上网查了一下原因后发现了问题所在,原来是 ...
- A7139 无线通信驱动(STM32) 添加FIFO扩展模式,能够发送超大数据包
A7139 拥有电磁波唤醒以及10mW的发射功率,很easy实现长距离通信,眼下測试有障碍物能够轻松达到300m以上. 通过几天的调试,眼下能够发送随意大小的数据包,大小为1-16KB.所有使用中断收 ...
随机推荐
- cocos2dx自带物理引擎-创建物理世界
首先在createScene()里 auto scene = Scene::createWithPhysics(); 创建带有物理的场景 然后再OnEnter里创建边界框 auto body = Ph ...
- 用GDB调试程序(二)
GDB的命令概貌——————— 启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示: /home/hchen> g ...
- postgresql数据库备份
一.工具备份数据 打开windows下的命令窗口:开始->cmd->安装数据库的目录->进入bin目录: 导出命令:pg_dump –h localhost –U postgres ...
- 分布式 +rides
redis分布式部署 1.scrapy框架是否可以自己实现分布式? - 不可以.原因有二. 其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls ...
- [持续交付实践] pipeline使用:语法详解
一.引言 jenkins pipeline语法的发展如此之快用日新月异来形容也不为过,而目前国内对jenkins pipeline关注的人还非常少,相关的文章更是稀少,唯一看到w3c有篇相关的估计是直 ...
- 学习:D3
http://www.ourd3js.com/wordpress/?p=196 http://www.ourd3js.com/demo/rm/R-9.2/force.html 力导向图(那个可以拖拽的 ...
- 01 Python初识
基础: 1.后缀名是py ATT: 单个文件执行,后缀无所谓 2.两种执行方式 终端 python+文件路径 解释器内部: 直接执行 3.解释器路径: #/usr/bin/env pyth ...
- springboot2系列目录
参考:https://blog.csdn.net/cowbin2012/article/details/85254990 带源码
- jeecg开源项目的IDEA的部署
JEECG采用了SpringMVC + Hibernate + Minidao(类Mybatis) + Easyui(UI库)+ Jquery + Boostrap + Ehcache + Redis ...
- django 验证码实现
django验证码的使用: 验证码的作用:用于人机识别. 验证码 ###验证码: def code_str(request): from PIL import Image from PIL impor ...