协议栈版本Z_Mesh V1.0.0与Z-Stack Home 1.2.1分别测试,一个协调器,8 – 10个路由左右,协调器每隔20s单播传输数据给路由,路由不做任何操作,只接收数据,协调器每发送一个路由地址,收到AF_DATA_CONFIRM_CMD事件之后再发送下一个地址,全部发送完后,相隔20s后再次执行相同操作。目前针对这两个协议栈版本都进行了测试,通过协调器AF_DATA_CONFIRM_CMD事件打印的结果,出现最多的两个错误分别是ZMacChannelAccessFailure和ZMacTransactionOverFlow,出现这两个错误,得隔一段较长的时间协调器才能正常发数据,并且出现的几率也是挺频繁的。
麻烦TI的各位技术解答一下,这些错误具体是什么引起的?有什么方法解决?或者出现这些错误后应该如何处理比较好?感谢!
Alvin Chen:
ZMacChannelAccessFailure:
这是你连续4次CSMA-CA失败时,将得到这个错误。
ZMacTransactionOverFlow:
这是mac层任务溢出造成的。你可以尝试在发送一个单播成功后等几秒后再发下一次。
zexin zeng:
回复 Alvin Chen:
谢谢Alvin Chen,关于你说的mac层任务溢出,是因为MAXMEMHEAP定义的空间不够导致的吗?另外如果按你说的,发送成功要等几秒再发送,那是否意味着协议栈无法处理快速传输的应用?是发送过快就会出现这些错误吗?
Alvin Chen:
回复 zexin zeng:
ZigBee网络更加偏向传感器网络应用,你可以加一个ms级别的延时试一下。
zexin zeng:
回复 Alvin Chen:
已试过增加100 – 150ms的延时,这两个问题依旧出现,实在是难以解决。
Alvin Chen:
回复 zexin zeng:
你去用我们的demo 去试一下
C:\Texas Instruments\Z-Stack Mesh 1.0.0\Projects\zstack\Samples\GenericApp
zexin zeng:
回复 Alvin Chen:
我就是直接使用Z-Stack Mesh 1.0.0安装目录下面的demo工程来测试的,当时下载的这个版本的协议栈只有20多M,也不知道是不是完整的。至于Z-Stack Home 1.2.1版本的协议栈,我是使用SampleLight工程测试,把底层的保留了,应用层的使用跟Z-Stack Mesh 1.0.0demo的相同。而且最新发现,除了出现过上述的两个错误,还出现了一个ZComDef.h里面没有定义的0x19的错误,实在是没什么头绪。
Alvin Chen:
回复 zexin zeng:
你最好重新下载,本来的demo是500ms,绑定发送一次,这个demo没有问题,你可以试一下。
CSMA-CA错误一般很难出现的。
YiKai Chen:
請參考附件是编译Z-Stack Mesh 1.0.0的FW,一个ZC一个ZR
5287.GenericApp.zip
Alvin Chen:
回复 YiKai Chen:
Thanks
zexin zeng:
回复 Alvin Chen:
在论坛里搜索ZMacChannelAccessFailure,碰到这个错误的人其实也不少。我这边最开始发现这个错误是做OAD更新实验,更新一个文件实在是太久,后来通过串口打印,才发现基本上都是出现这两个错误,导致传输时间过长。Z-Mesh V1.0.0官网的包貌似就是20多M。