查看: 872|回复: 0

[技术交流] lorawan模块采用ABP模式时,必须要打开热启动的原理

[复制链接]

67

主题

100

帖子

570

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
570
发表于 2020-5-28 17:48:48 | 显示全部楼层 |阅读模式
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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表