- 协议栈代码:LoRaMac-node v4.7.0
- 参考文档
- 《RP002-1.0.4 LoRaWAN® Regional Parameters》
- 《TS001-1.0.4 LoRaWAN® L2 1.0.4 Specification》
一、占空比
1. 区域和占空比
参考《RP002-1.0.4 LoRaWAN® Regional Parameters》1.3 Regional Parameters Summary Tables
有些 Region 是有占空比限制,有些 Region 是没有占空比限制的。
对于动态频点的 Region:

对于固定频点的 Region:

2. 占空比规则
参考《TS001-1.0.4 LoRaWAN® L2 1.0.4 Specification》7 Retransmissions Backoff

3. 占空比代码
占空比代码涉及到两个概念:
时间信用(Time Credit)
不同的时间段内,都有一个最大可花费的时间信用,每次发送数据都会消耗一笔时间信用,当时间信用不满足下一次发送的花费时,则不允许发送数据。
观察时间(Observation Time)
当出现当时间信用不满足下一次发送的花费这种情况时,则会计算到达下一个时间段的观察时间,在下一个时间段内所花费的时间信息会清零。
3.1. 占空比参数
| |
3.2. 更新占空比最大值
更新时间信用和观察时间:
| |
计算最大的时间信用:
| |
3.3. 使用占空比
数据发送前,计算本次发送所花费的时间信用是否满足条件:
| |
数据发送完成后:
| |
3.4. 结论
一个 Region 会有一个或多个 Band,对于每一个 Band,都会维护四个参数:
TimeCredits当前时间段内可用的时间信用。
MaxTimeCredits当前时间段内最大的时间信用。
LastBandUpdateTime当前 Band 参数最后更新的时间。
LastMaxCreditAssignTime当前 Band 的观察时间。
更新参数的条件:
- 上一次记录的
LastBandUpdateTime到当前的时间间隔已经超出了本次计算得到的观察时间 observation。 - 上一次记录的
LastMaxCreditAssignTime和本次计算得到的观察时间 observation 不一致。 - 第一次更新参数。
每次发送前都会计算本次发送所要花费的时间信用
creditCosts,如果当前可用的时间信用TimeCredits不够时:- 如果是立即发送的话,则取消本次发送
- 如果支持延时发送的话,则在下一个时间阶段再重新发送。
每次发送成功后,都会更新当前可用的时间信用
TimeCredits。如果当前设备未入网的话,观察时间分为三个阶段,每个阶段的观察时间都不一样:
- 前 1 小时内
- 第 1 个小时到第 11 个小时的期间
- 超过第 11 个小时后
如果当前设备已经入网,那么观察时间默认是 1 小时。
如果当前设备未入网的话,最大时间信用分为三个阶段,每个阶段的观察时间都不一样:
- 前 1 小时内
- 第 1 个小时到第 11 个小时的期间
- 超过第 11 个小时后
如果当前设备已经入网,则最大时间信用默认是 1 小时。如果此时关闭了占空比(
dutyCycleEnabled为 false),那么可用的时间信用也是 1 小时(表示单位时间内可用任意发送)。每个 Region 里面的每一个 Band 都已经预设好了占空比。这个占空比主要是用于计算本次发送所要花费的时间信用、发送完成后更新当前可用的时间信用。
二、示例
1. EU868
1.1. 配置
| |
EU868 有 6 个 Band,每个 Band 的占空比都不一样。
EU868 默认的入网频点是 868.1 / 868.3 / 868.5 MHz,由于这三个频点放在 Band1 里面,那么其占空比是 1%
1.2. 频繁入网受限
由于入网时的占空比是不可以关闭的,那么当频繁入网时,就会出现超出占空比后不再发送的情况。
这里测试时的
DUTY_CYCLE_TIME_PERIOD为 1800000,即 18s。
- 对于前 1 个小时的频繁入网(假如入网不成功),band 1 的最大时间信用 MaxTimeCredits 是 1800000,可用的时间信用 TimeCredits 也为 1800000。
- 当准备发送 Join-Request,会计算本次要花费的时间信用 creditCosts,如果 TimeCredits > creditCosts,则允许发送。
- 当 Join-Request 发送完成后,会在 TimeCredits 里面扣掉本次发送花费的时间信用。
如此循环,直到 TimeCredits 不满足下一次发送的花费。
测试打印如下:
| |
版权声明
本文为「Zeepunt 日常随笔」的原创文章,遵循 CC BY-NC-ND 4.0 许可协议。允许在署名作者、注明原文链接且不作任何更改的前提下非商业性地分享本文。
原文链接:https://zeepunt.github.io/article/lora/device%E5%8D%A0%E7%A9%BA%E6%AF%94%E6%9C%BA%E5%88%B6/