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

ZigBee各种传输方式的稳定性对比

1.单播/绑定/组播/广播,中单播和绑定是不是一样稳定?组合和广播相对稳定性会差一点?

2.绑定的话,如何去控制一组设备呢?假如环境中有多种设备需要分别控制,比如开关、插座、灯具,

他们都绑定到协调器的话,如何在控制的时候只控制一组?(比如控制灯的时候,开关插座不要被控制)

Viki Shi:

设置不同的组,分别控制,参考:blog.csdn.net/…/79158107

YiKai Chen:

回复 Viki Shi:

单播和绑定是一样稳定,组播和广播相对稳定性会差

user5367314:

回复 YiKai Chen:

比如一个环境里有多种终端(开关,插座,灯具)
在入网的时候他们全部都和协调器绑定了,如果我想控制所有的开关或者插座或者灯具中的一类
因为绑定后发命令所有的终端都能收到,我是不是通过不同的命令去控制不同类的设备即可?

YiKai Chen:

回复 user5367314:

是的

user5367314:

回复 YiKai Chen:

协调器给终端发送数据,终端非睡眠的,
1.如果终端没有收到数据,协调器也会Hold 7秒
2.当终端没有收到时,协调器会重传,这个重传的间隔是多长时间?
3.如果终端没有收到数据,协调器会Hold 7秒,
如果此时协调器需要给另一个终端发送数据,假如第二个终端也没收到,
此时协调器会hold两个终端的数据吗?

Viki Shi:

回复 user5367314:

1&2、终端是否收到,可以通过MAC ACK判断:

#define MAC_ACK_WAIT_DURATION0x40/* The maximum number of symbols to wait for an acknowledgment frame */

3、会,用户可以设置hold数据的时间及数量:

// 1-255 (0 -> 256) X RTG_TIMER_INTERVAL
// A known shortcoming is that when a message is enqueued as "hold" for a
// sleeping device, the timer tick may have counted down to 1, so that msg
// will not be held as long as expected. If NWK_INDIRECT_MSG_TIMEOUT is set to 1
// the hold time will vary randomly from 0 - CNT_RTG_TIMER ticks.
// So the hold time will vary within this interval:
// { (NWK_INDIRECT_MSG_TIMEOUT-1)*CNT_RTG_TIMER,
//NWK_INDIRECT_MSG_TIMEOUT*CNT_RTG_TIMER }
#define NWK_INDIRECT_CNT_RTG_TMR1
// To hold msg for sleeping end devices for 30 secs:
// #define CNT_RTG_TIMER1
// #define NWK_INDIRECT_MSG_TIMEOUT 30
// To hold msg for sleeping end devices for 30 mins:
// #define CNT_RTG_TIMER60
// #define NWK_INDIRECT_MSG_TIMEOUT 30
// To hold msg for sleeping end devices for 30 days:
// #define CNT_RTG_TIMER60
// #define NWK_INDIRECT_MSG_TIMEOUT (30 * 24 * 60)
// Maximum msgs to hold per associated device.
#define NWK_INDIRECT_MSG_MAX_PER3
// Maximum total msgs to hold for all associated devices.
#define NWK_INDIRECT_MSG_MAX_ALL\(NWK_MAX_DATABUFS_TOTAL - NWK_INDIRECT_MSG_MAX_PER)

user5367314:

回复 Viki Shi:

协调器给终端发数据,为了保证终端收到的稳定性(慢一点没关系)
1.协调器端增加重发次数,需要改下面的哪个参数?
-DAPSC_MAX_FRAME_RETRIES=3
-DNWK_MAX_DATA_RETRIES=3
-DMAX_POLL_FAILURE_RETRIES=3
2.#define MAC_ACK_WAIT_DURATION0x40
这个参数默认是64毫秒?是否可以改大?64毫秒内没有收到应答会再次发送?
那睡眠终端64毫秒肯定收不到,怎么处理?
3.用户可以设置hold数据的时间及数量
这个是改哪两个参数?

Viki Shi:

回复 user5367314:

1、MAC_MAX_FRAME_RETRIES
2、参考:e2e.ti.com/…/756521没收到可以重传
3、看上面贴的代码

user5367314:

回复 Viki Shi:

MAC_MAX_FRAME_RETRIES默认的次数是3次?
如果想增加重传的次数,例如想改为5次
uint8 i = 5;
MAC_MlmeSetReq( MAC_MAX_FRAME_RETRIES, &i);
我在void zclSampleSw_Init( byte task_id )的后面加上上面的代码
是不是就可以了?

YiKai Chen:

回复 user5367314:

可以

赞(0)
未经允许不得转载:TI中文支持网 » ZigBee各种传输方式的稳定性对比
分享到: 更多 (0)