目录
2.1 Receive_Delay1/Receive_Delay2
2.2 JOIN_ACCEPT_DELAY1/JOIN_ACCEPT_DELAY2
2.4 RXParamSetupReq/RXParamSetupAns
1 前言
LoRaWAN 协议依赖于 Aloha 型网络。在这种类型的网络中,终端设备可以任意进行传输。
A 类设备的关键特性是,通信仅由终端设备发起。来自网络服务器的下行链路消息需要排队,直到下次从终端设备接收到上行链路消息,并打开接收窗口 (Rx)。此设计专门针对需要先响应上行链路才能进行下行链路通信的应用,或者在延迟要求相当宽松的情况下提前安排下行链路。
2 接收窗口
在上行链路之后,A 类终端设备会打开一个短接收窗口 (Rx1),如果在此期间未接收到下行链路,则会打开第二个接收窗口 (Rx2)。上行传输结束后的一段固定时间之后,Rx1 开始打开。通常,此延迟为1秒,但是这段时间是可调整的。通常上行传输结束后两秒,Rx2 开始打开,当然这段时间也是可调整的。
- 未收到任何消息
- Rx1窗口收到消息
- Rx2窗口收到消息
PS:设备不会尝试发送另一条上行链路消息,除非:
- 它在 Rx1 期间已收到下行链路消息,或者
- 上一次传输之后的第二个接收窗口已完成
2.1 Receive_Delay1/Receive_Delay2
- Rx1 的默认延迟 (RECEIVE_DELAY1) 是一种网络参数,默认延迟可能因地区而异,可由服务端通过 MAC 命令 RxTimingSetupReq 或者入网时命令Join-Accept进行更改。默认为1秒。
- 终端设备在 Rx1 关闭后等待一秒再打开 Rx2。这意味着 RECEIVE_DELAY2 = RECEIVE_DELAY1 + 1 秒
2.2 JOIN_ACCEPT_DELAY1/JOIN_ACCEPT_DELAY2
LoRaWAN协议中,所有设备都是以A类设备启动并入网,因业务需要再切换到B类或者C类设备。因此OTAA空中激活过程中,都是按A类设备方式打开接收窗口。
唯一的区别就是打开接收窗口的延迟时间:JOIN_ACCEPT_DELAY1和JOIN_ACCEPT_DELAY2.协议默认JOIN_ACCEPT_DELAY1为5s,JOIN_ACCEPT_DELAY2为6s
2.3 RX1DR/RX2DR
- 即接收窗口RX1和RX2的速率配置
- 在《LoRaWAN协议-设备入网流程详解(OTAA和ABP)》一文中,就提到了RX1DR和RX2DR参数是由网关在OTAA入网过程中通过Join-Accept命令下达给节点
- 另外网关还可以通过MAC命令RXParamSetupReq来重新配置RX1DR和RX2DR
2.4 RXParamSetupReq/RXParamSetupAns
在实际工作中,应用服务器可以通过命令RXParamSetupReq来对节点的接收窗口参数进行修改配置,该消息属于确认消息,节点收到该命令后需回复应答即命令RXParamSetupAns。
RXParamSetupReq命令是下行链路命令,只能等待设备终端主动开启上行链路后打开接收窗口的时机。节点设备收到服务端的MAC命令RXParamSetupReq,由于该命令是已确认消息,节点需再次发起一次上行链路回复RXParamSetupAns,而不是立即睡眠。
1)RXParamSetupReq
- 只分析MAC帧中的FRMPayload部分,包含了DLSettings和Frequency字段。其中DLSettings字段用于设置RX1DROffset和RX2DR
- RX1DROffset表示RX1DR和RX2DR的差值
2)RXParamSetupAns
- Status每一bit代表的含义
3 功耗情况
- 发射状态按14dBm,工作电流一般为32mA;接收状态下工作电流是小于11mA;睡眠过程中电流最低可以到600nA;具体数值可以查节点端芯片手册
- 每个接收窗口的持续时间必须至少和终端设备的无线电接收器有效检测到下行链路前导所需的时间一样长。芯片要求是至少5个Symbol时间。依据LoRa配置可以计算出最小窗口时间,这里列几个典型值,在BW125kHz,SF7速率下,最小窗口时间为5.1毫秒。具体如何计算可以参考《Lora技术- 码片/码元/数据速率以及空中时间计算》
- 发射时间和接收解调时间依据包长和LoRa配置计算,可以参考上文链接中的空中时间计算
4 未确认和已确认消息
- 终端设备向服务器发送消息命令时,可以选择类型为未确认或者已确认,反之亦然。
- 未确认消息,即发送方发出去后无需关注接收方是否收到。
- 确认消息,即发送方发送后,需收到接受方回复的ACK
- 节点间隔发送3次心跳包,为未确认消息,无需服务端回复应答
- 节点发送确认消息(比如包含报警相关的信息,图中橙色部分),前2次一直未收到服务端的应答,因此重复发送,直至第3次发送后收到服务端的应答
- LoRaWAN网络的下行链路资源是比较稀缺的,需谨慎使用确认消息
5 下行链路
服务器必须等到设备发送上行链路消息之后才能向其发送数据。一旦接收到上行链路消息,应用服务器就会立即发送下行链路消息。如果该消息是未确认的,设备一旦接收到下行链路消息就会回到睡眠状态。但如果下行链路消息是确认消息的情况,设备会再次主动发起一次上行通信操作。
例如节点设备收到服务端的MAC命令RXParamSetupReq,由于该命令是已确认消息,节点需再次发起一次上行链路回复RXParamSetupAns,而不是立即睡眠。