从广义上讲,网关是连接2个不同网络的设备。如果一个设备,它能将LoRa无线网络和Internet连接起来,它就是一个LoRa网关。
目前,大部分的LoRa网关采用SX1301基带芯片,也有部分使用SX1276/8单信道芯片。那么,SX1301的吞吐量是SX1276/8的多少倍呢?我们一起来探讨。
有些行业朋友认为,SX1301有8通道,每个通道可以接收6个正交(速率不同,互不干扰)LoRa信号,那么,SX1301 = 8 x 6 = 48个SX1276/8。
然而,这是不正确的!
下文摘自《SX1301 Datasheet》Page-18IF0 to IF7 channels
它明确地说明:SX1301能同时解调的LoRa数据包不超过8个。
如果您只需要知道结果,看完上面的数字----8,就OK了,请移步。
如果您和我们一样,喜欢探寻更深层次的原因,请接着看下面的解释。看到下面SX1301的框架图,很快会得到2个启发:
1)它只有8路LoRa解调器,这才是真正的瓶颈!那怕一个通道(IF0~IF7)接收了6个正交数据包,解调器也只负责处理其中一个。
2)当一个通道接收LoRa信号后,会启动3个工作进程:数据包仲裁MCU,分配解调器给“合适”的LoRa通道;前导码搜索引擎,查找一个LoRa数据包的起始信号;LoRa解调器,解析该LoRa数据包。
刚才谈到:数据包仲裁MCU,分配解调器给“合适”的LoRa通道。那么,什么才是合适呢?这个优先级包括:接收数据包的速率,信道(IF0~IF7),射频通道(即,2个SX1255/7,分别对应Radio A和B),接收数据包的信号强度。
数据包仲裁MCU的优先级,是由Semtech的固件决定的,用户无法更改。这也是芯片厂商的天生优势----制定游戏规则,限定玩家的范围。
那么,SX1301是否等于8个SX1276/8呢?也不正确!因为,这忽略了SX1301的ADR技术。
ADR(Adaptive Data Rate,速率自适应),如下图所示,依赖Node和SX1301-Gateway的距离:越近,Node将采用高速率;越远,Node将采用低速率。这可以有效地提高网络吞吐量。
SX1301的ADR技术能提高吞吐量,要准确计算性能的提升却比较难,因为,它依赖实际网络中节点的物理位置分布。
因为LoRa的长距离优势,往往基于低速率,即下表的SF12=293bps;可以看出,SF10(中速率)约为低速率的3倍,SF7(高速率)约为低速率的18倍。
为此,我们提出数学统计模型。设网络节点的位置呈正态分布(这是最符合工程实施的概率分布)。如下图所示:68.2%属于常态,即ADR用不上;27.2%,ADR能提高约3倍吞吐量;4.6%,ADR能提高18倍吞吐量。
这样一来,ADR提高吞吐量为:68.2%x 1 + 27.2% x 3 + 4.6% x 18 = 232.6%
小结:运用ADR的SX1301吞吐量相当于(8 x 232.6%) = 18.6 个SX1276/8
以上都属于理论的推导,接下来,我们一起看2个实测平台。
实测1:http://rimelink.timeddd.com/st/STS.aspx?id=66
这是一个SX1278的LoRa网关,基于TDMA(时分复用)方式组网,共7个Node,上报12字节数据(温度,湿度,露点;每个4字节,为float类型)。
细心地观察会发现,一个Node,每隔35秒才更新一次数据。这是SX1278网关的局限性,因为是单信道,Node只能分时隙使用带宽,因此,一个节点上报的延时,会随节点数目线性增长。
这个SX1278网关的吞吐量为:(7x 12 x 8)b / 35s = 19bps
实测2:http://lorawan.timeddd.com/demo.aspx
这是一个SX1301的LoRaWAN网关,基于FDMA(频分复用)方式组网,共12个Node,上报12字节数据(温度,湿度,露点;每个4字节,为float类型)。
细心地观察会发现,一个Node,每隔5秒左右更新一次数据。这是因为SX1301有8通道,允许多个Node同时上报;当然,当Node随机选择信道时,可能因碰撞而失败,成功上报概率约为0.9。
这个SX1301网关的吞吐量为:(12x 12 x 8)b / 5s * 0.9 = 207bps
拿上述2种网关的吞吐量比较:207 /19 = 10.8(倍),为什么没有达到理论上的18.6倍呢?因为基于SX1301网关的12个Node,放置在一起,没有使用ADR技术,并且使用了最低的速率(SF12=293bps)。