2、物理层基础:扩频因子、带宽、编码率、符号速率与数据速率的关系

好,咱们进入正题。物理层这东西,说白了就是 LoRa 通信的「地基」。很多朋友做网络规划时,上来就盯着终端节点数和网关数量,结果部署完发现覆盖不行,或者容量根本不够用。为什么?因为没搞懂物理层这几个参数是怎么互相拉扯的。

我个人习惯,在讲任何网络规划之前,先让团队把物理层吃透。你想想看,数据速率怎么来的?扩频因子、带宽、编码率,它们之间到底是什么关系?今天咱们就把这层窗户纸捅破。

2.1 扩频因子(SF)—— 距离与速率的博弈

扩频因子,英文叫 Spreading Factor,简称 SF。它决定了每个符号能携带多少比特信息。

简单说,SF 值越高,一个符号携带的比特数就越多。但代价是什么?符号的传输时间变长了。嗯,这里要注意,时间变长意味着空中占用时间增加,也就是 ToA(Time on Air)变长。

我在项目中遇到过,有人为了追求覆盖距离,把所有节点都设成 SF12。结果呢?一个网关下挂 200 个节点,数据根本收不过来,全部碰撞丢包。这就是典型的「只考虑覆盖,不考虑容量」。

LoRa 常用的扩频因子范围是 SF7 到 SF12。每个 SF 值对应不同的灵敏度:

扩频因子 (SF) 每个符号的码片数 (Chips/Symbol) 灵敏度增益 (相对于 SF7)
SF7 128 0 dB (基准)
SF8 256 约 +2.5 dB
SF9 512 约 +5.0 dB
SF10 1024 约 +7.5 dB
SF11 2048 约 +10.0 dB
SF12 4096 约 +12.5 dB

你看,SF 每增加 1,灵敏度大约提升 2.5 dB。这意味着什么?同样的发射功率,SF12 比 SF7 能多传出去一倍多的距离。但代价是,SF12 的空中时间是 SF7 的 2^5 = 32 倍!

核心结论:SF 越高,覆盖越远,但容量越低。做网络规划时,必须根据实际距离动态调整 SF,而不是一刀切。

2.2 带宽(BW)—— 速度与噪声的平衡

带宽,Bandwidth,单位是 kHz。LoRa 常用的带宽有 125 kHz、250 kHz 和 500 kHz。

带宽越大,符号速率越快,数据速率自然就上去了。但问题来了,带宽越大,底噪也越高。你想想看,接收机接收的噪声功率和带宽是成正比的。带宽翻倍,噪声功率也翻倍,信噪比就下降了。

我曾经调试过一个项目,在郊区部署,环境噪声很低。我建议用 125 kHz 带宽,配合 SF10,覆盖效果很好。但客户非要改成 500 kHz,觉得速率快。结果呢?灵敏度掉了 6 dB,边缘节点全部掉线。这就是典型的「捡了芝麻丢了西瓜」。

带宽与数据速率的关系,可以用这个公式来理解:

符号速率 (Rs) = 带宽 (BW) / 2^SF

注意,这里的符号速率是物理层原始的符号速率,不是最终的数据速率。但它是计算数据速率的基础。

我的建议:在大多数场景下,优先使用 125 kHz 带宽。只有在需要高吞吐量且覆盖距离要求不高时,才考虑 250 kHz 或 500 kHz。

2.3 编码率(CR)—— 纠错能力与有效载荷的取舍

编码率,Code Rate,表示有效数据在传输数据中的占比。LoRa 支持 4/5、4/6、4/7、4/8 四种编码率。

编码率 4/5 意味着每 5 个传输比特中,有 4 个是有效数据,1 个是纠错码。编码率 4/8 则是每 8 个比特中只有 4 个有效数据,纠错码占了一半。

编码率越低,纠错能力越强,但有效数据速率也越低。怎么选?

  • 信号质量好(近端节点):用 4/5,速率高,浪费少。
  • 信号质量差(边缘节点、干扰大):用 4/8,宁可慢一点,也要保证数据能正确解出来。

我记得有一次做工厂环境测试,现场电机干扰特别大。用默认的 4/5 编码率,丢包率高达 30%。后来改成 4/7,丢包率降到 2% 以下。虽然速率降了,但至少数据能上来,对吧?

注意:编码率不是越低越好。编码率 4/8 虽然纠错强,但有效数据速率只有 4/5 的一半。如果信号本身很好,用低编码率纯粹是浪费空中时间。

2.4 符号速率与数据速率 —— 最终的计算公式

好,前面铺垫了这么多,现在咱们把公式摆出来。数据速率 DR 的计算公式是:

DR = SF * (BW / 2^SF) * CR

其中:

  • SF:扩频因子,单位是 bits/symbol
  • BW / 2^SF:符号速率,单位是 symbols/s
  • CR:编码率,4/5 = 0.8,4/6 ≈ 0.667,4/7 ≈ 0.571,4/8 = 0.5

举个例子,SF7、BW 125 kHz、CR 4/5:

DR = 7 * (125000 / 128) * 0.8
   = 7 * 976.5625 * 0.8
   ≈ 5468.75 bps
   ≈ 5.47 kbps

再算一个 SF12、BW 125 kHz、CR 4/5:

DR = 12 * (125000 / 4096) * 0.8
   = 12 * 30.5176 * 0.8
   ≈ 293.0 bps

看到了吗?SF7 到 SF12,数据速率差了将近 19 倍。这就是为什么我说,SF 的选择直接决定了你的网络容量上限。

关键点:数据速率越低,单个数据包的空中时间越长,单位时间内能处理的数据包就越少。网络容量 = 数据速率 × 可用时间 / 数据包大小。这个逻辑链一定要理清楚。

2.5 各参数组合下的数据速率速查表

为了方便大家做规划,我整理了一个常用组合的数据速率表。这个表我项目里经常用,建议收藏:

扩频因子 (SF) 带宽 (BW) 编码率 (CR) 数据速率 (bps) 典型应用场景
SF7 125 kHz 4/5 5,469 近端节点,高吞吐量
SF8 125 kHz 4/5 3,125 中等距离,平衡型
SF9 125 kHz 4/5 1,758 较远距离,低速率
SF10 125 kHz 4/5 977 远距离,传感器数据
SF11 125 kHz 4/5 537 超远距离,小数据包
SF12 125 kHz 4/5 293 极限覆盖,紧急数据
SF7 500 kHz 4/5 21,875 高速率,近距离

避坑指南:我曾经见过有人用 SF7 + 500 kHz 去覆盖 5 公里距离,结果网关根本收不到。为什么?因为 500 kHz 带宽下,SF7 的灵敏度只有 -123 dBm 左右,而 5 公里路径损耗早就超过 130 dB 了。物理层参数的选择,一定要结合链路预算来做,不能拍脑袋。

2.6 小结 —— 物理层参数的选择逻辑

好了,咱们把今天的内容串一下。扩频因子、带宽、编码率,这三个参数共同决定了 LoRa 的物理层性能。它们之间的关系,可以用一句话概括:

「扩频因子决定灵敏度,带宽决定符号速率,编码率决定纠错能力,三者共同决定数据速率。」

做网络规划时,我的建议是:

  1. 先定覆盖目标:根据最远节点的距离,确定最低可用的 SF 值。
  2. 再选带宽:优先 125 kHz,除非有明确的速率需求。
  3. 最后调编码率:根据现场干扰情况,在速率和可靠性之间做取舍。

下一章,咱们会讲 LoRaWAN 的 MAC 层机制,包括信道接入、确认重传、占空比限制等。这些内容直接关系到网络容量怎么算。但前提是,你得先把物理层这几个参数搞明白。否则,后面的容量计算全是空中楼阁。

嗯,今天就到这儿。有什么问题,咱们课后交流。