完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
本帖最后由 一只耳朵怪 于 2018-6-1 15:19 编辑
大家好,我用最新的协议栈做数据传输,用协调器广播数据,间隔300ms,发现会丢包,用packet sniffer观察,发现每隔3s左右,协调器发送的数据会停顿一下600ms左右,我调试发现串口收到的数据没有全部发送出去,和sniffer观察到的情况是一致的,但如果用点对点传输就不存在这个问题,不知道这是不是协议栈的一本BUG,如何解决? |
|
相关推荐
9个回答
|
|
|
你好,
在Zigbee中,广播数据是不适合像单播数据这么连续发送的,这是Zigbee协议栈规定的。 Zigbee的广播机制解释如下,广播数据在发出后,其余有广播能力的节点如rouer在收到后会转发这个广播包,如此一层层往后跳以保证整个网络都能收到这个广播。同时,任何一个节点在发送或转发这个广播包的时候会监听自己的邻居有没有进行转发,如有没进行转发的,说明该邻居可能没有收到,会进行重发。重试次数在zstack中有设定。 如此,一旦网络规模大了整个广播包会在空中存在较长时间,所以Zigbee联盟设定了nwkBroadcastDeliveryTime这个属性,用来说明一个广播包最多有效的时间。而在这段时间内,发起者都会保留这个广播包放在一个table中。这个table默认最多能存10个这样的包,所以连续发送的话,发送10个时候这个table就存满了,新的包就不能发送了,必须等待有数据过期后才有新的数据能发出。 以下是Zigbee联盟建议 nwkBroadcastDeliveryTime 过期时间的计算方法,参考Zigbee spec: nwkBroadcastDeliveryTime = 2*nwkMaxDepth* ((0.05+(nwkcMaxBroadcastJitter/2))+ nwkPassiveAckTimeout*nwkBroadcastRetries/ 1000) TI Wireless Connectivity |
|
|
|
|
yudu78 发表于 2018-6-1 07:46 感谢您的回复,我想可能就是这个原因,我要做一些实验来确认下。 |
|
|
|
|
yudu78 发表于 2018-6-1 07:46 你好,请问,我用4个路由同时给终端点播消息,可是终端有时候接收不到四个,只能接收到三个,请赐教。我觉得是不是同时发,导致发送失败,然后重传多次都失败,然后导致消息丢失,所以没收到。是否f8wConfig.cfg有相关重发的设置,求赐教!!!! |
|
|
|
|
yudu78 发表于 2018-6-1 07:46 你好,请问,我用4个路由同时给终端点播消息,可是终端有时候接收不到四个,只能接收到三个,请赐教。我觉得是不是同时发,导致发送失败,然后重传多次都失败,然后导致消息丢失,所以没收到。是否f8wConfig.cfg有相关重发的设置,求赐教!!!! |
|
|
|
|
yudu78 发表于 2018-6-1 07:46 你好, 请问如何才能关闭这个重传机制,我想像UDP那样,只管发出去。具体在协议栈的哪个地方,万分感谢! (PS:我的是ZStack-2.5.1a) |
|
|
|
|
yudu78 发表于 2018-6-1 07:46 我有遇到这样的问题,而且终端还经常掉网,然后又重新加入到协调器,导致丢包很严重 |
|
|
|
|
muyeliang 发表于 2018-6-1 08:32 您可以f8wConfig.cfg中修改 -DNWK_MAX_DATA_RETRIES和-DAPSC_MAX_FRAME_RETRIES |
|
|
|
|
|
这两个 -DNWK_MAX_DATA_RETRIES和-DAPSC_MAX_FRAME_RETRIES是做什么用的 |
|
|
|
|
|
是设置重传参数的 |
|
|
|
|
只有小组成员才能发言,加入小组>>
549 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1513 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1337 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1756浏览 29评论
2781浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1723浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:18 , Processed in 0.984623 second(s), Total 87, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2195