|
AT+OTAA=0,1 //ABP模式,打开热启动
1.原因
首先我司模块目前都是按照V1.0.2协议来设计。
其次,跟服务器对fcnt判断机制有关系,因为V1.0.2协议中规定模块在ABP模式下reset之后,upfcnt必须要从0重新开始计数,那么,服务器的fcnt判断机制也应该按这样来设计,即当upfcnt累加一段时间后,如果服务器收到upfcnt=0数据包,此时,服务器应该同步将保存的upfcnt清0,重新开始计数,而不是认为upfcnt应该继续累加,从而判定upfcnt=0的这包数据属于fcnt回退,是非法的,这样就导致了一下现象,节点重启之后,客户看服务器数据记录上,再也收不到上行数据包了。
2.举个例子来说明
当节点发了一段时间数据包之后,fcnt=1000,如果此时重启模块,那么节点会采用新的上下文通信,即fcnt会清0,即下一包数据包fcnt=0。
由于ABP模式下,设备无join,所以服务器还是认为下一包fcnt=1000+1=1001,所以当设备重启后发的第一包upfcnt=0的数据包,如果服务器收到此包数据包后,会判定是fcnt回退,此包数据包非法,那么此包数据一般是直接丢弃掉,不会推送给客户,所以客户看来就是服务器再也收不到节点数据了。
3. 节点开启热启动,可规避这个问题
建议ABP模式下,打开热启动,那么就算节点重启后,数据包fcnt还是在原先基础上累加,不会清0。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|