LoRa传输时间计算软件使用说明

LoRa传输时间计算软件使用说明

软件介绍

  此软件主要用于计算LoRa数据包的空中时间,也可以简单认为是计算发一个包所要的时间。

  影响数据包空中时长的因素有以下几点:
  1、SF(扩频因子),在其他参数不变的情况下,SF数值越大,数据包空中时间越长;
  2、数据带宽,在其他参数不变的情况下,带宽越大,数据包空中时间短;
  3、编码率,在其他参数不变的情况下,编码率越大,数据包空中时间短;
  4、低速率优化位(Low DataRate Optimize)开启会影响增大数据包空中时间(下面我会对Low DataRate Optimize进行单独讲解,因为这个哥们在不注意的时候会坑人);
  5、前导码长度,在其他参数不变的情况下,前导码长度越长,数据包空中时间长;
  6、负载长度,在其他参数不变的情况下,负载长度越长,数据包空中时间长;
  7、数据头和CRC开启也会影响数据包空中时间;

主界面

LoRa传输时间计算软件使用说明_第1张图片
主要关注在调整左边参数过后,右边Time on Air的变化,这个数值代表了数据包的空中时间。在这里插入图片描述
常规设置:
  SF:7-12,点对点通信可以用5和6,SX127x不支持5。
  带宽:LoRaWAN协议要求大部分频率范围都是为125k,少部分可以使用500k,私有协议定制可以直接考虑用500k。
  编码率:LoRaWAN协议要求为4/5,可以根据自己的需要来设,建议使用默认的4/5。
  低速率优化位:关闭(符号持续时间大于16ms时开启,下面有讲解)。
  前导码长度:8
  负载长度:LoRaWAN标准规定SF7-SF8最大为222,SF9为115,SF10-SF12最大为51。
  数据头:开启。
  CRC:开启

参考值:

SF 带宽 编码率 低速率优化 前导码长度 负载长度 数据头 CRC 空中时长
7 125k 4/5 8 222 348.416ms
8 125k 4/5 8 222 614.912ms
9 125k 4/5 8 115 615.424ms
10 125k 4/5 8 51 616.448ms
11 125k 4/5 8 51 1150.976ms
12 125k 4/5 8 51 2138.112ms

Low DataRate Optimize

字面意思是:低速率优化。
  我们先来找找看这个哥们到底是干什么用的,在SX1276/77/78/79的数据手册里面可以找到对他的描述:
LoRa传输时间计算软件使用说明_第2张图片
  中文意思为:考虑到在高扩频因子下,包的持续时间可能很长,该选项可以提高包在传输和接收期间对传输频率变化的鲁棒性,低速率优化位增加了LoRa链接在低有效数据率的鲁棒性。当符号持续时间超过16ms时,低数率优化位必须使能。 注意:发送和接收两端的低速率优化位必须设置相同 。

开始解释:
  1、什么是符号位持续时间超过16ms?
  红色方框中的内容就是符号位的持续时间,一旦大于16ms ,低速率优化位就必须打开。
LoRa传输时间计算软件使用说明_第3张图片
  2、为什么会有这个功能?
  LoRa的调制是线性的,如果波形持续时间太长,频率就会因晶体频率飘逸变大而变大,频率漂移变大后,接收端无法正常的接收此包。所以在硬件的设计中我讲到,在一些环境中会使用到32M的TCXO,就是这个问题。使用TCXO的终端可以不考虑这个功能。
  
  

C代码实现空中时间计算


static uint16_t  time_tmp[6]={128,256,512,1024,2048,4096};//计算发送时间时用

uint32_t get_send_time(uint8_t sf, uint16_t size)
{
    uint32_t time = 0;
    float t_preamble = 12.25 * ((time_tmp[sf-7]/125));//前导码发送时间
    float t_payload = (8 + MAX(ceil((float)((8*size)-4*sf+44)/(4*sf))*5,0))*((float)(time_tmp[sf-7]/125));//负载发送时间

    time = (uint32_t)(t_preamble + t_payload);

    return time;
}

此代码为我自用代码,以供参考。
  
  
  
  

个人联系方式:
   个人微信:一五零零八四六四六零三
   个人QQ:214330271
   群QQ:463280366(资料都在里面)

你可能感兴趣的:(LoRaWAN)