首页天道酬勤lora通信技术原理,lora通信距离测试

lora通信技术原理,lora通信距离测试

张世龙 05-12 20:30 61次浏览

在整个3 MAC通信中,LoRa区分上传链路信息和下载链路信息。 在终端节点经由一个或多个网关中继上传信息之后,将上传信息上传给网络节点。 的所有上传链接都使用RF包的显示模式。 此模式包含LoRa的物理头和CRC检查。 通过射频增加的CRC来确保数据负载的完整性。

PHYPreamblePHDRCRCPYHPayloadCRC下行链路是网络服务器端通过一个或多个网关将数据发送到终端节点的链路。 的所有下行链路也使用显示模式,但没有数据完整性检查,以便将子带占空比限制的影响降至最低。

每次终端节点上传时,PHYPreamblePHDRCRCPYHPayload都会打开两个简短的接受窗口。 受理窗口的开始时间由发送结束时间决定。

第一个接收窗口RX1传输结束后的CLS2_RECEIVE_DELAY1秒后开始,第二个接收窗口RX2传输接受后的http://www.Sina.com 这是检测下行链路前导码的最短时间。 当以CLS2_RECEIVE_DELAY2的时间间隔检测到前导时,无线接收状态持续到下行链路帧被解调为止。 如果在第一个时间间隔检测到帧并对其进行解调,则终端节点不会打开第二个时间窗口。

如果网络节点需要向a类节点传递下行链路信息,则网络节点总是在这两个接受时间窗口之一开始传输。RX终端节点在第二个接受时间窗口结束之前不允许传输信息。 对于Note:第三类型的终端节点,如果给定时间窗口与来自上行链路的发送操作的开始时间重叠,并且如果在发送操作之后第二接收时间窗口结束,则终端节点不提供接收窗口的服务。

3.1 MAC加载格式LoRa的上行链路和下行链路加载以1字节的MACheader(mhdr )开始,后跟最多59字节的MAC加载(MACPayload ),最后是4字节的消息确认代码)

字节数11594 phypayloadmhdrmacpayloadmicmac报头指定消息类型MType,其中已编码帧是根据当前LoRa的MAC层数据格式的版本号Major定义的。

MType描述000加入请求001加入同意010数据未确认011数据确认100 ~ 110RFU111所有权LoRa的MAC层区分加入请求、加入批准、未确认消息、确认消息4种不同的MAC消息类型。 加入请求和加入接受在第二章的OTAA过程中使用。 数据用于传输MAC控制和APP应用程序数据,也可能在同一数据中。 确认消息必须在无线接收端确认,不需要确认未确认消息。 所有权信息最终可以用于提供不相互作用的非标准信息格式,并且必须在了解自己扩展的设备上使用。

Major描述00版本101~11 rfu http://www.Sina.com /版本号规定了正在加入的消息格式和开头的4字节数据。 在每个版本中,终端节点必须实现不同版本的数据格式。 版本信息必须事先通知web服务器。

对于不同的消息类型,用不同的方法确认信息的完整性。

Note:上的负载信息也称为数据帧,其包括数据报头(FHDR ),并且可以伴随有可选端口(FPort )和可选帧负载如果存在,则FPort的值为0意味着FRMPayload只包含MAC命令。 第3.2章包含可能的MAC指令列表。 FPort值为1~255的用途适用规定。

字节数为7~230~10~(N-1 )数据帧FHDRFPortFRMPayload FHDR包括1字节的帧控制(FCtrl )、2字节的帧计数(FCnt )、末端节点的表演

字节数为4120~15的数据帧DevAddrFCtrlFCntFOpts LoRa网络的一个特征是终端节点能够自主地确定未使用的传输率。 LoRa的MAC使用这个功能来优化固定侧的传输速度。 移动终端使用默认数据速率,因为在高速移动的无线信道上管理数据是不现实的。 如果设置了ADR位,网络将使用相应的MAC命令控制终端速率。 清除ADR位时,网络不会独立于接收信号的质量尝试终端设备的数据速率控制。 ADR由终端装置根据需要设定或清除。 但是,如果可能,必须打开ADR以延长电池寿命并最小化网络容量。

字节数为7~230~10~(N-1 )数据帧FHDRFPortFRMPayload FHDR包括1字节的帧控制(FCtrl )、2字节的帧计数(FCnt )、末端节点的表演

位76543至0 fctrladradrackreqackfpendingfoptslen http://www.Sina.com /即使可以移动

的终端设备事实上大部分时间都是不移动的,所以取决于设备的移动状态,终端设备可以要求网络使用ADR对其数据速率进行优化。

如果终端节点的数据速率被网络优化到大于默认的数据速率,终端节点需要验证网络仍然可以接受到上行帧。在每个上行链路后,终端节点通过ADR_ACK_CNT进行计数。在ADR_ACK_LIMIT个连续上传链路且没有下传链路,终端节点会设置ADR 反馈需要(ADRACKReq)比特。网关需要在下一个ADR_ACK_DELAY上传链路,网关需要下行链路帧进行反馈,从而在上行链路之后任意一个下行链路都会重置ADRACK计数器。下行链路的ACK不需要设置,因为在终端设备的接受串口期内任意的反馈都意味这网关kkdgs接受来自终端的上行链路。如果在下一个ADR_ACK_DELAY中仍然没有接受到数据,终端会尝试切回默认的拓展因子以扩大连接范围来获得重新连接。如果终端设备使用默认的扩展因子,那么ADRACKReq就不应该被设置,因此在这种情况下是没法提高连接范围的。
Note:不要求立即响应ADR确认请求为网络提供了灵活性,以便更佳地调度其下行链路。

终端节点会保持两个帧计数器来跟踪上传到网络服务器的帧数目(FCntUp)和终端节点接收到网络服务器的帧数目(FCntDown)。网络服务端反之也会保存终端节点的上述帧指针。在初始化的时候,所有的指针都被初始化成0。每次收到一帧数据都会加1.在接受端,相应的计数器会和接受到的数据进行同步,使得接受的值就算比当前计数器的值大也会很接近,因此最多丢失MAX_FCNT_GAP帧的数据。帧计数超出这个范围的帧将会被丢弃。

LoRa的MAC允许使用16比特或者32比特的帧计数器。网络端需要实现帧计数器的带外通知。如果使用16比特的计数器,Fcnt可以直接被用作计数器的值,并在需要的时候加上前导的0。如果使用的32比特的计数器,为计数器的低16位。
Note:由于FCn仅仅包含了32位的最低有效位,所以服务器必须从流量中推出帧计数器的高16位。

对于数据帧确认收到先前的数据帧,确认位(ACK)应该被先设置。

Note: 对于需要确认的信息,接收者需要反馈一个应答信号。如果发送者是终端,网络端需要准确地在CLS2_RECEIVE_DELAY1或者CLS2_RECEIVE_DELAY2秒进行应答。如果发送端是网关,那么终端设备可以自己决定在什么时候发送。

终端设备需要尽可能少的保持在发送状态,所以在接收到确认信息后就会立刻发送确认信息。或者终端可以推迟确认信息,使其和下一个信息一起。

该确认机制的详细时序框图在dddqc 7中。

保留帧比特(FPending)只被使用在下行链路中,表明网关有更多的数据需要传输,因此要求终端尽快打开另一个接受窗口。FPending具体使用参见dddqc 7.3。

帧的可选操作长度(FOptesLen)表明帧中实际FOpts的长度。FOpts是一个最长15字节的捎带在数据帧上的MCA指令。具体的MAC指令可见章节3.2。如果长度为0,说明FOpts是缺失的。

这部分的MIC计算的消息为:
msg = MHDR | FHDR | FPort |FRMPayload
len(msg)使用字节表示消息的长度。现在MIC通过下面公式进行计算:
cmac = aes128_cmac(NwkSKey, B0 | msg)
MIC = cmac[0..3]
此处的 B0 B 0 如下定义:

字节1414411 B0 B 0 0x490DirDevAddrFCnt0x00len(msg)

Dir是指数据方向,0表示上行,1表示下行。

如果数据帧是有负载的,那么负载要在验证码计算之前进行加密。加密算法使用通用的AES_128算法。密钥K的使用取决于数据消息的FPort:

FPortK0NwkSKey1~255AppSkey

加密后的信息
pld = FRMPayload
对于每一个消息,算法定义了一系列的 Ai A i :

字节1414411 Ai A i 0x010DirDevAddrFCnt0x00i

对于 Ai A i 被加密成 Si S i
Si S i = aes128_encrypt(K, Ai A i ) for i = 1 …k
S = S1 S 1 | S2 S 2 … Sk S k
有效载荷的加密通过截断操作:
(pld | pad16 p a d 16 )xor S
来得到第一个len(pld)字节。

3.2 MAC指令

为了更好地管理网络,网络服务器和终端节点之间可以通过一系列的指令进行信息交换。MAC层命令永远不会暴露给应用、应用服务器和终端设备。一个单独的数据,帧可以包含任意一个MAC控制序列。MAC控制既可以作为FOpts的附属,又可以单独作为数据帧的FRMPayload发送,此时的FPort会被设置成0。作为附属的MAC命令序列会被明文发送,并且不会超过15字节。作为FRMPayload发送的MAC指令永远会被加密同时只要不超过最大的FRMPayload长度。不应该被窃听者窃听的信息必须作为一个独特消息的FRMPayload进行发送。

MAC命令由一个一字节的命令号,后面跟着可能是空的命令特有的字节序列。

CIDCommand发送方描述终端网关0x02LinkCheckReq*终端设备用来验证连接0x02LinkCheckAns*网关应答,同时发送接受功率,告知接受质量(连接边缘)0x03LinkADRReq*通知终端修改数据速率、发送功率以及通道0x03LinkADRAns*对上述的应答0x06DevStatusReq*请求终端状态0x06DevStatusReq*返回终端设备信息,包括电量、射频占空比、RF功率和发送包的数量 3.2.1 链接检查

通过LinkCheckReq指令,终端设备可以检查它与网络的连接状况。该命令是没有负载的,如果LinkCheckReg被网关接收到,就会返回一个LinkCheckAns命令。

字节11LinkCheckAns负载MarginGwCnt

调制余量(Mar’gin)是一个8比特的取值在0~254的无符号整数,是上次成功连接中接受信号的dB值。0值意味着信号解调没有余量,20dB则意味着终端节点到最近网关解调增益。
网关计数(GwCnt)是网关成功接受上次LinkCheckReq的数目。

3.2.2 Link ADR

通过LinkADR命令,网络服务器可以要求终端节点执行速率适配。

比特4416LinkADReq负载数据速率发送功率ChMask

数据速率被如下进行编码:

数据速率配置0LoRa:SF12/125kHz1LoRa:SF11/125kHz2LoRa:SF10/125kHz3LoRa:SF9/125kHz4LoRa:SF8/125kHz5LoRa:SF7/125kHz6LoRa:SF7/250kHz7FSK: 100kbps8~15RFU

发送功率被如下编码:

发送功率配置020dBm114dBm211dBm38dBm45dBm52dBm6~15RFU

信道掩码对可能的中频进行编码:

比特中频0868.11868.32868.53868.854869.055869.5256869.957~15RFU

终端使用LinkADRReq回应LinkADRAns命令。

字节LinkADRReq负载1剩余

剩余是上次成功接受的LinkADRAns命令的解调信噪比。这是一个8比特的有符号数,范围在-127到127。-128被保留并且意味着该值不能正确计算。

3.2.3终端设备状态

DevStatusReq指令中,网络服务器需要终端的状态信息,如果终端接受到了该命令,就会返回一个DevStatusAns指令。

字节11DevStatusAns负载电池剩余

电池等级按照如下进行编码:

电池等级描述0设备连接外带电源1~2541最小,254最大255无法测量

剩余部分是上次解调DevStatusReq的SNR,这一个一个8比特的有符号数,最小值为-127,最大为127。

音频的采样率重要还是比特率,采样率和采样频率的关系 all datasheet 数据手册,加强自身专业技能