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.所有使用中断收 ...
随机推荐
- 理解OpenShift(2):网络之 DNS(域名服务)
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- 2017-2018-2 20165312 实验四《Android程序设计》实验报告
2017-2018-2 20165312 实验四<Android程序设计>实验报告 一.安装Android Studio并进行Hello world测试和调试程序 安装Android St ...
- Linux系统重置root用户密码
Linux系统重置root用户密码 作者:Eric 微信:loveoracle11g 查看系统版本是不是RHEL7 [root@zhouwanchun ~]# cat /etc/redhat-rele ...
- 涂抹mysql笔记-mysql管理工具
五花八门的mysql管理工具<>mysql提供的命令行工具 mysql_install_db:mysql建库工具,在源码安装mysql环节我们使用过. mysql_safe:mysql启动 ...
- 刘志梅2017710101152.《面向对象程序设计(java)》第一周学习总结
本人学号<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com http://ww ...
- vue打包
npm installnpm run devnpm run build @types/node npm install --save @types/node npm install @types/no ...
- 换上 SansForgetica-Regular 字体,增加记忆能力
最近澳大利亚的RMIT(皇家墨尔本理工大学) 搞出来这么个字体,号称能增强记忆,原理是通过难以识别的字体,让人提起精神去识别,从而记忆更深刻. 果断弄了个试试. 安装过程: 下载字体文件 点这里去下载 ...
- LINUX PID 1 和 SYSTEMD
要说清 Systemd,得先从Linux操作系统的启动说起.Linux 操作系统的启动首先从 BIOS 开始,然后由 Boot Loader 载入内核,并初始化内核.内核初始化的最后一步就是启动 in ...
- day32基于tcp协议的远程执行命令
客户端 from socket import *import structimport json client = socket(AF_INET, SOCK_STREAM)client.connect ...
- 44个Java代码性能优化总结
https://blog.csdn.net/xiang__liu/article/details/79321639 ---稍后有时间整理