TI中文支持网
TI专业的中文技术问题搜集分享网站

求助:zigbee网络是如何实现对RFD节点发送广播包的?

IEEE802.15.4(TIMAC)下,目标地址为0xFFFF的数据包不能对RFD节点用indirect模式发送,因此,在zigbee网络层,只能让路由在子节点列表(AssociatedDevList)里面,挨个用indirect模式点对点发送。indirect模式依赖allocate到的发送缓冲区,缓冲区默认寿命是7.56秒,如果每个节点都建立一个缓冲区,那么会存在缓冲区不够用的情况。所以我存在以下三种猜测,不知道哪一个是对的。

1,限制每一个路由下能够挂载的RFD数量,我测试过TIMAC的indirect发送,一次压入超过8包数据,FFD就会死机,所以限制路由器下的EndDevice数量,是有可能的方式。请问路由下的EndDevice最大能挂多少个?是否有限制?

2,轮流发送,用indirect模式对子节点列表下的节点挨个点名,一次发送一个,等DataConfirm时,再点下一个。但是DataConfirm事件是随机的,最长时间7.56秒。对于NWK_MAX_DEVICES默认21的协调器来说,挨个点名,实时性不好。

3,限制发送+挨个点名。假设AssociatedDevList里面的RFD有M个,但是indirect一次能压入N个,这样发送次数就是M/N。在f8wConfig.cfg中有个参数POLL_RATE。假设这个参数为2500,而路由器下子节点中有16个RFD,那么广播到所有RFD的最大时间就是16*2500/N/1000 = 40/N秒。

 

 

 

VV:

TI1:TI MAC的sample application里面规定是MSA_MAX_DEVICE_NUM 50

2:这样可靠性比较高,但时延会比较长

3:TIMAC里面没有f8wConfig.cfg配置文件的。

Aries Lord:

回复 VV:

zigbee对RFD广播是用的哪种方式?z-stack是用的TIMAC的库,在MAC层上必然受到TIMAC的限制。TIMAC在使用indirect模式发送时,同时发送8包数据就会死机。TIMAC里面有个macPibDefaults.transactionPersistenceTime参数,默认0x1F4,约合7.56秒。这个就是indirect的超时限制,如果indirect的数据在这个时间没有发送出去就会超时。

z-stack下,默认有21个节点。但是z-stack能做到同时对21个节点使用indirect模式发送数据么?或者采用分时发送?

VV:

回复 Aries Lord:

请你检查NWK_INDIRECT_MSG_MAX_PER 和 NWK_MAX_DATABUFS_TOTAL 变量,是不是因为indirect messaging buffer overflow errors 造成的

Aries Lord:

回复 VV:

NWK_INDIRECT_MSG_MAX_PER 和 NWK_MAX_DATABUFS_TOTAL在TIMAC里面没有,TIMAC里面indirect我测试8条能通过,14条就会死机。我想知道TIMAC的默认最大indirect msg是多少条?同时z-stack在使用对终端节点广播时,是否也存在这个限制?

VV:

回复 Aries Lord:

MAC_CFG_TX_MAX这个变量是MAC层发送数据队列的限制,你可以改下试试。

Z-stack也同样有限制的

Aries Lord:

回复 VV:

TIMAC默认值为5,z-stack协调器和路由器增加到了8。

但是z-stack广播到终端节点,每个协调器和路由器下面最大20个终端节点,能否保证每一个节点都能收到信息?

VV:

回复 Aries Lord:

Z-stack里面对一个节点都有一定的存储空间,就是NWK_INDIRECT_MSG_MAX_PER

赞(0)
未经允许不得转载:TI中文支持网 » 求助:zigbee网络是如何实现对RFD节点发送广播包的?
分享到: 更多 (0)