zigbee如何设置重发次数

        zigbee在发送数据不成功的时候,会启用重发机制,而这个重发机制分为:MAC重发,APSC重发,NWK重发,而APSC和NWK重发是以接收到MAC ACK为前提,否则不会重发。

zigbee如何设置重发次数_第1张图片

一、重发次数的定义

         应用层发出的普通数据包,若一直无响应,如果收不到MAC ACK,则重发发送次数=macPibDefaults.maxFrameRetries + 1;如果收到了MAC ACK则重发次数=NWK_MAX_DATA_RETRIES   * ( macPibDefaults.maxFrameRetries + 1 )

        应用层发出的需分包的数据包,若一直无响应,如果收不到MAC ACK,则重发发送次数=macPibDefaults.maxFrameRetries + 1;如果收到了MAC ACK则重发次数=APSC_MAX_FRAME_RETRIES   * ( macPibDefaults.maxFrameRetries + 1 )

二、 重发次数的设置

        MAC重发次数次数在“mac_pib.c”文件里的macPibDefaults数组里面定义,默认是重发3次。 zigbee如何设置重发次数_第2张图片

当maxFrameRetries=0的时候,从下面抓包数据可知,协调器对短地址为0xBA89的终端发送了三组数据,每组一条,每次间隔大概400ms。

zigbee如何设置重发次数_第3张图片


当maxFrameRetries=1的时候,从下面抓包数据可知,如果终端没回MAC ACK,则协调器会发送三组数据,每组发送两条,

zigbee如何设置重发次数_第4张图片

但是哪里控制发送三组数据我暂时还没找到。

         APSC重发和NWK重发设置的位置位于“f8wConfig.cfg”文件

/* The maximum number of retries allowed after a transmission failure APSC分发包重发次数(条件收到MAC ACK)*/
-DAPSC_MAX_FRAME_RETRIES=3


/* Max number of times retry looking for the next hop address of a message NWK应用层重发次数(条件收到NWK ACK)*/
-DNWK_MAX_DATA_RETRIES=3








参考资料:

1.重发机制问题

2.如何设置数据包的重发次数、重发间隔

3.zigbee延时重发机制的使用



你可能感兴趣的:(zigbee)