|
背景
实际部署条件:60s采集100个节点的数据,也就是说在一分钟内NS要收到100个节点上报的数据
测试条件:使用6个节点进行模拟,100ms监测一次busy引脚状态,空闲后延时20ms发数据,上行数据使用非确认帧,关闭ADR,SF=7。
测试出现的问题:
1. busy引脚大概4s左右空闲,连续发包,会出现10%的丢包率,分析丢包率的原因
2. 使用确认帧的情况下,busy引脚空闲会比较快,为什么?
3. 如何保证100个节点的数据在60s能上报完成?
过程
一、丢包率原因
(1)关闭ADR:设备不会自行调节SF,每个设备都使用固定的SF去发数据,同一个信道是无法接收两个一样SF的数据包的
(2)如果开了确认包,网关是半双工的情况下,下行的时候是无法接收数据的
(3)6个节点发送数据的频率选择本身也是随机的,也会存在碰撞的可能
(4)多个节点的引脚状态如果都空闲,那么发送数据的时间可能会碰撞
(5)受到环境影响或外部干扰产生的丢包
二、使用确认帧为什么空闲的比较快
Class A的设备每次上行后都会紧跟两个短暂的下行接收窗口,RX1一般是在上行后1s开始,RX2是在上行后2s开始。如果在任何一个接收窗口中检测到前导码,终端设备需要继续激活,直到整个下行帧都解调完毕。如果在RX1检测到数据帧,且这个数据帧的地址和MIC校验通过确认是给这个终端的,那么终端就不必开启第二个接收窗口,因为在使用确认帧的模式下,RX1如果接收到数据,就不会开启RX2了。非确认帧模式下,两个接收窗口都没接收到数据一个上行才算结束。
三、如何保证100个节点的数据在60s能上报完成?
前面讲到,数据丢包的原因可能在于碰撞,那么我们要解决的就是如何避免碰撞
1、8个节点为一组,非确认帧,每个节点固定使用一个信道。那么组内8个设备频点不同就可以同时上报。这样就相当于60s 12组设备上报。相当于是把网关的8个通道让节点使用的更加均匀一点了,但会出现如果真的某个频点出现干扰,长时间没数据的情况。
2、LoRaWAN的冲突处理机制一般就是靠随机延时来错峰发送,完全避免碰撞是不可能的,只能尽可能让数据分散开,减小碰撞概率。那么这里有两种方法可以考虑
2.1 入网延时+通信延时
(1)入网延时
入网时就开始增加随机延时,假如一个节点入网需要5s,网关为8通道,那么在理想情况下(即100个节点按序入网,100%信道利用率),入网所需时间为62.5s,但实际效率是理想的15%-20%,那么如果在入网阶段增加随机延时,这个延时时间就可以设置在0-312s,即0-5分钟内。
(2)数据通信前的延时
为了数据发送时间能够在错开,还可以设置常规上报数据包前的延时,按照客户的模组使用的速率和数据长度,SF=7, 192个字节,那么TOA的时间差不多就是307ms,那么这时候的随机时延至少应该大于TOA的时间
2.2 通信延时
考虑到一般来说入网是一个必要过程,且是一次性过程,因此排除入网阶段,假设所有的节点都已正常入网要开始发数据了,由于60s内需采集完100个节点的数据,那么可以设置每个节点通信前进行0-60s的随机毫秒级延时,错开100个节点的数据发送时间,这样100个节点的数据就可以在60s内发送完成
2.3 一些通用建议
(1)重要的信息如触发类的告警信息,可采用确认帧,同时开启失败重传。
(2)心跳类的定时上报,采用非确认帧,一般这类数据占大多数。
2.4 关于CSMA
CSMA:CarrierSenseMultipleAccess,载波监听多路访问技术,简单来说就是发数据之前先检测信道,如果信道空闲,就发数据,如果信道占用,随机退让一段时间再检测
有人会考虑,既然数据包碰撞了,那我能否通过开启模组的CSMA来避免?
首先模组支持CSMA功能,可以通过AT指令配置开启但是开启后,可能影响数据发送的时效性,因此建议格局实际使用场景来决定
四、参数计算
1、LoRaWAN TOA(Time On Air)即空中传输时间计算
可使用LoRa计算器(见附件),标准LoRaWAN的配置前导码等于8,显示头模式,开启CRC校验
以SF=7,数据长度192字节为例, TOA为307ms
ps:顺便提供一个LoRaWAN在线计算工具Air time calculator | LoRaTools
2、LoRaWAN网络容量简易计算
根据上面计算的TOA,输入到表格中计算网络容量
简单来看在非确认帧模式下
单通道的计算公式为:S=F*0.18/TOA,其中F为上报周期,0.18即18%,为LoRa的信道利用率
LoRaWAN网络容量计算
3、根据客户部署情况计算信道占用率
以单个数据包SF7,192个字节,60s内采集100个节点的数据为例:
单个数据包的TOA为307ms,100个节点八通道的情况下,通道占用时间大概为4.7秒,总共60s的时间,信道占用率大概在12.8%((0.307*100*2)/(60*8))左右(数据量比较多的情况下,信道利用率大概在15%-20%之前,如果超过这个范围,数据碰撞丢包就会比较严重)
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|