现象:
单独41个节点组网后,通讯正常, 另42个组网后,通讯也正常,天线固定, 两个网合并组在一起,效果不好。source routing单次会收到多个RRI, 节点的MTO与AR值设置不一致。以最后一个RRI为准的路径信息,似乎发送不成功。
固件:XBee3 ZB 1009~100B都有。
调试目标: 达到更好通讯效果
调试过程:
- A1,A3包过多的情况排查
RRI增多:一方面是MTO过多,另一方面信号不畅,重入网或retry可能产生RRI
MTO增多:原因不明,更改AR=0后,MTO仍然存在,在开发板上无法复现,推测两个原因:
一是个别控制箱模块有问题,AR更新后,它仍转发旧的,另一个是固件1009,是否用100B就没了,最终协调器退网后,MTO消失,但AR=0仍可见不明原因的MTO。调试的目标转向调查不明MTO是如何产生。
由于在现场无法通过逐个断电来排查,在实验室用18台100B版本固件组网,并未发现MTO有异常,新增新刷的另两排100B固件,发现初始部署时,还是有不明MTO。并且时常收到入网通知信息,推测和程序中的通讯不畅时的退网机制有关。
用实验室验证猜测,证实过多的NR导致路由变动频繁。而NR过多的原因,竟是Source Routing的地址装载0x21帧不符合文档要求。对方采用双向握手,在多次不通时会发NR退网,这个机制在自动部署时发挥一定作用,但由于0x21有误,下行不畅,导致过多的退网,参考:
一、创建一个跳点 使用一个XBee3 ZB模块作为协调器,另一个XBee3模块作为路由器加入该网络,将其增益参 […]
解决方案:
采用0x21指定source routing地址时,一定要按文档要求来,基中跳点顺序和RRI要一致,最后一个跳点在最前,不要头尾颠倒。
确保网络稳定部署后不随意发ATNR退网,如果自动部署需要用到这个ATNR,则把这个退网的触发机制最大化,在入网后,则可以通过远程命令来设置MCU发ATNR的时间或是尝试通讯次数。
带按钮设备可以设置部署模式和正常运作模式,以及调试模式,通过按钮控制哪种模式运作并切换。对于无按钮设备,通过蓝牙以及micropython来触发部署模式和一般运作模式,以保证正常运作不需要发NR退网。