LoRa模块为什么会出现timeout,分析其原因

今日头条

1083人已加入

描述

LoRa模块往往具备易用、小巧、传输距离远、超低功耗等优点,是一种非常好的远距离无线数据传输解决方案,适用于需要远程数据采集和低功耗的各种应用,它遵循LoRaWAN 1.0.2协议,还支持LoRa的点对点通信功能,可帮助用户快速建立他们自己私有的远距离LoRa网络。

在实际使用过程中,LoRa模块在接收数据的过程中,可能出现一种错误提示:ERROR 96。本文介绍出现这种错误的根本原因,大家如果碰到这种错误,可以一一对比排查出真正导致该问题的原因。

想要了解LoRaWAN网关的覆盖范围可参考文章《LoRaWAN网关覆盖范围驾驶测试》、想了解LoRa模块二次开发可参考《LoRa模块二次开发入门篇》、想要了解LoRaWAN网关支持的节点可参考《一个LoRaWAN网关能支持多少个节点》

图1    LoRaWAN Class A模式上传数据时的RX窗口

如图1所示,在LoRaWAN协议的Class A模式下,当节点上传一个数据包的时候,在TX窗口的后面将紧跟2个RX窗口。比如,TX窗口长度1s,RX1窗口长度1s,之后就是RX2窗口。

出现ERROR 96,则意味着RX2窗口超时了。只有一种情况可以导致发生ERROR 96的错误:当LoRa节点发送一个确认的上传数据包的时候,它将会等待ACK确认包,如果直到RX2窗口关闭的时候,它仍然没接收到ACK确认包的话,就会出现ERROR 96的错误提示信息。

导致LoRa节点一直等到RX2窗口关闭了、也未能收到ACK确认包的可能的原因比较多,列举如下:

1、LoRaWAN网关未收到LoRa节点发的上行数据包,自然就不会有下行ACK行为发生。无线干扰、信号不良或频点不匹配等原因都会导致这种丢包情况发生。

2、LoRaWAN网关收到上行数据包并转发给NS(网关的内置SERVER)了,但NS处理该数据包时发现有问题或者NS本身存在问题,导致其并未生成ACK并下发,LoRa节点自然也就不会收到ACK了。

3、LoRaWAN网关收到上行数据包并转发给NS,NS也顺利生成ACK并下发给网关,但网关因业务拥堵或自身原因,并未成功将ACK从LoRa射频空口发出来。

4、LoRaWAN网关收到上行数据包并转发给NS,NS也顺利生成ACK并下发给网关,网关也成功将ACK通过LoRa射频发到空口中了,但LoRa节点未收到,无线干扰、信号不良、频点不匹配等都会导致这种丢包情况发生。

5、LoRaWAN网关收到上行数据包并转发给NS,NS也顺利生成ACK并下发给网关,网关也成功将ACK通过LoRa射频发到空口中了,LoRa节点的射频端也成功收到这个无线信号了,但是LoRa节点的底层在处理收到的这个报文时,解析校验发现该报文有误(例如信号变形导致数据失真或ACK报文本身组装有误),进而丢弃了该报文,上层程序也会视作未收到ACK。

因此,当我们出现ERROR 96的时候,我们可以这么排查故障:

1、检查LoRaWAN网关是否能接收到LoRa节点发送的数据;2、检查该数据包是否本身存在问题;3、检查LoRaWAN网关内置的NS SERVER是否能正常生成ACK并下发;4、检查整个网络是否比较拥堵;5、检查LoRa节点是否能正常接收到LoRaWAN网关下发的数据。

如果配备的LoRaWAN网关的具备较为友好的运维界面,比如瑞科慧联的LoRaWAN网关RAK7249的WebUI上,就可以查看到该网关所关联的所有节点的状态。

图2   瑞科慧联LoRaWAN网关RAK7249的WebUI示意图

图2是瑞科慧联的LoRaWAN网关RAK7249提供的运维界面的示意图,可以看到,其可以查看LoRa网络是否拥堵、发包的情况等等,借助这些运维信息,就可以更好的发现LoRaWAN组网的状态,更好的排查故障并解决问题。一个良好的LoRaWAN网关的运维界面,可以帮助我们更好的运作我们的物联网解决方案。

本文介绍了导致LoRa模块出现ERROR 96的若干种原因,以及如何排查故障。
        fqj

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分