一种基于LoRaWAN通信协议的数据分包传输方法与流程

文档序号:25870287发布日期:2021-07-13 16:32阅读:481来源:国知局
一种基于LoRaWAN通信协议的数据分包传输方法与流程

本发明涉及通信技术领域,特别是涉及一种基于lorawan通信协议的数据分包传输方法。



背景技术:

lorawan是一种基于lora调制技术的lpwan(低功耗广域网)通信协议。lorawan具有低功耗、长距离传输、灵活的网络构建等优点,许多公司开始投入大量的人力物力深入研究其相关技术。

lorawan通信协议中将传输速率分成六种并对应六种扩频因子。在不同的扩频因子下,规定了各自的应用层载荷最大长度。当开启adr功能后,网络根据当前的网络质量进行优化,选择合适的扩频因子进行传输数据。具体数据参见表1:

表1

然而,在实际的应用环境中,lorawan节点和应用服务器通过lorawan协议进行数据交互时,当传输的应用数据比较大,对于传输速率较低的扩频因子,无法通过一次传输将整个应用数据包进行传输。因此,针对上述情况,如何设计一种稳定、高效、可靠的方法,从而可以解决上述问题,成为本领域技术人员亟待解决的重要技术问题。



技术实现要素:

本发明提出的一种基于lorawan通信协议的数据分包传输方法,将lorawan节点和应用服务器传输的应用数据拆分成若干个数据分包进行传输,解决了lorawan通信协议无法直接发送大体积应用数据包的问题。

本发明保护一种基于lorawan通信协议的数据分包传输方法,用于lorawan节点和应用服务器之间进行应用数据交互,发送应用数据的一方为应用数据发送方,接收应用数据的一方为应用数据接收方,该方法包括如下步骤:

步骤1:应用数据发送方发送应用数据前,获取当前lorawan网络通信的扩频因子,根据当前扩频因子对应传输的最大载荷长度,确定发送本次应用数据总共需要切分数据包的数量。

步骤2:根据确定的分包数量,将应用数据进行分包,总分包数和当前包序号保存在应用数据分包内。

步骤3:应用数据发送方按照分包序号,逐个将所有的数据分包通过数据分包收发机制发送给应用数据接收方;使得大于当前最大载荷长度的应用数据,能够发送给应用数据接收方。

进一步地,所述数据分包收发机制为:应用数据接收方每次接收到应用数据发送方发来的数据分包时,会判断数据分包是否正确,对应用数据发送方回复应答数据包。

更进一步地,应用数据发送方在发送应用数据分包后,一定时间内未收到该分包的应答数据包时,将在限制次数内重发该分包,直至收到该数据分包的应答数据包;当超过一定时间内未接收到应答数据包,结束本次应用数据传输任务。

其中,所述一定时间由发送超时计时器进行计时。

更进一步地,当应用数据接收方本次接收的不是最后一个数据分包时,应用数据接收方回复应用数据发送方的数据分包的应答数据包后,一定时间内未收到下一个序号的数据分包,将在限制次数内重发该数据分包的应答数据包,直至收到下一个序号的数据分包;当超过一定时间内未接收到下一个序号的数据分包,结束本次应用数据传输任务,并丢弃本次应用数据传输中已收到的所有数据分包。

其中,所述一定时间由接收超时计时器进行计时。

步骤4:应用数据接收方在接收所有数据分包结束后,将各应用数据分包整合还原成应用数据包。

步骤5:应用数据接收方验证整合后的应用数据完整性,若整合后的应用数据完整,进行数据处理,否则丢弃;避免应用数据接收方接收到无效数据。

本发明的有益效果:1、本发明通过将lorawan节点和应用服务器传输的应用数据拆分成若干个数据分包进行传输,应用合理的数据收发机制,既保证低功耗和长距离传输,又稳定、可靠地解决了lorawan通信协议无法一次传输较大数据包的弊端;2、本发明通过验证数据的完整性,避免应用数据接收方接收到无效数据,增加不必要的计算开销和存储空间。

附图说明

图1为基于lorawan通信协议的数据分包传输方法流程框图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

实施例1

本实施例以输入一个长度为200字节的应用数据为例,对本发明的技术方案(主要流程如图1所示)进行具体阐述。

在lorawan节点向应用服务器上传该200字节的应用数据时,即lorawan节点是应用数据的发送方,应用服务器是应用数据的接收方。

步骤1:首先获取当前lorawan网络通信的扩频因子,如表1所示,当扩频因子为sf7和sf8时,应用层最大载荷长度是222,不进行分包,总分包数为1;当扩频因子为sf9时,应用层最大载荷长度是115,分两个包,总分包数为2;当扩频因子为sf10、sf11、sf12时,应用层最大载荷长度是51,分五个包,总分包数为5。本实施例选择扩频因子为sf10进行数据传输。

步骤2:将应用数据分成五个分包;序号为1的数据分包包含总分包数和分包序号1,序号为2的数据分包包含总分包数和分包序号2,序号为3的数据分包包含总分包数和分包序号3,序号为4的数据分包包含总分包数和分包序号4,序号为5的数据分包包含总分包数和分包序号5。

步骤3:lorawan节点开始将序号为1的数据分包上传给应用服务器,此时lorawan节点设置一个发送超时计时器。应用服务器在收到lorawan节点本次数据分包(即序号为1的数据分包)后,立即下发一个对于本次数据分包接收确认的应答包给lorawan节点,若本次数据分包不是本次应用数据上传的最后一个数据分包,应用服务器也设置一个接收超时计时器。当lorawan节点的发送超时计时器超过超时时间,且一直未接收到本次数据分包的应答包,本次应用数据上传失败,立即结束本次应用数据传输;当lorawan节点的发送超时计时器未超过超时时间,且未接收到本次数据分包的应答包,将在每间隔一段时间后,重发本次数据分包,直至接收到本次数据分包的应答包为止。当lorawan节点接收到本次数据分包的应答包,立即检查分包信息,是否还有数据分包需要上传,若没有数据分包需要上传,将不再继续上传应用数据;若还有数据分包需要上传,立即上传下一个数据分包(即序号为2的数据分包),遵从以上发送流程,直至所有数据分包发送完成。

在应用服务器在接收应用数据阶段,接收超时计时器超过超时时间,且一直未接收到lorawan节点上传的下一个序号的数据分包(即序号为2的数据分包),本次应用数据上传失败,应用服务器丢弃本次应用数据传输中已收到的所有数据分包,结束本次应用数据传输;当接收超时计时器在超时时间内,应用服务器将每间隔一段时间,重发本次数据分包的应答包(即序号为1的数据分包),直到接收到lorawan节点上传的下一个序号的数据分包。

步骤4:当应用服务器接收完本次lorawan节点上传的所有数据分包,根据各数据分包的序号进行数据整合,整合成长度为200字节的完整应用数据,完成本次应用数据的传输。

步骤5:应用服务器验证整合后的200字节应用数据完整性。

其中,应用服务器下发应用数据给lorawan节点时,即应用服务器是应用数据的发送方,lorawan节点是应用数据的接收方,其传输流程与应用数据的上传流程一致。这里不再进行赘述。

显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1