注意:本文并非严格按照原文进行翻译,属于阅读理解性质的自由翻译。
CH8
ClassB的目的是使得节点具有在预定时间打开接收窗口(称之为ping slot)的能力。
CH9
一个支持ClassB的网络,所有的网关都必须同步发送beacon。
NS选择哪个网关来发起下行,基于节点的最后一次上行的RSSI,因此,节点在移动并检测到收到的beacon(节点可以识别出收到的beacon来自于哪个网关)发生变化时,节点必须发起一次上行(通常发一个空的上行帧)强迫NS更新NS下行路由(NS->某网关->节点)。
节点工作在Class B之前,下面信息必须告诉NS:节点ping-slot默认周期、DR(数据速率)、频道。
笔记:同一网络,所有网关发送beacon是同时的,这来源于GPS时间的唯一性。节点是有可能“收到”多个网关的beacon。
所有节点都以Class A入网。节点的应用软件可决定切换到Class B,按照如下流程:
- 节点应用层请求LoRaWAN层切换到Class B。节点的LoRaWAN层搜索beacon并返回结果(BEACON_LOCKED或者BEACON_NOT_FOUND)。LoRaWAN层可使用DeviceTimeReq MAC指令加快beacon搜索过程。
- 一旦进入Class B模式,节点所有上行帧的FCTRL_ClassB(FCTRL域中位Class B)都置1,从而告知NS本节点已进入Class B模式。节点MAC层将自动在每个beacon和ping时间窗打开接收。节点成功收到beacon后,LoRaWAN层会把beacon内容和RSSI传给应用层;节点在ping slot成功收到下行后,处理方法同Class A下行。LoRaWAN层在组织beacon和ping时会考虑最大可能时钟偏差。
- 移动节点必须周期通知NS更新下行路由,通常是发送一个空的上行帧。比周期发送更高效的办法是,应用层检测到beacon内容变化时主动发起上行。当然,节点需要在beacon接收和此上行之间增加一个0-120s的随机延迟(以防止多个移动节点同时发上行引起系统性冲突)。
- 任意时刻,NS可通过PingSlotChannelReq MAC指令修改节点的ping 频率和速率。
- 任意时刻,节点可修改ping周期:首先必须临时结束Class B操作(上行FCTRL_ClassB清0)并发送PingSlotInfoReq指令到NS,NS对此命令回复ACK之后,节点可使用新的ping周期重新开始进入Class B操作。
- 一段时间节点未收到beacon之后,节点MAC层必须通知应用层当前MAC已切换到Class A。同时,LoRaWAN层也不再设置上行FCTRL_ClassB。应用层可以周期性尝试切回Class B(重新从上述第1步即搜索beacon开始)。
图50给了一个示例。Beacon周期128s,ping周期32s。即节点每32s开启一次ping slot。大多数ping slot没有下行,节点检测不到前导码之后尽快关闭接收。如果检测到前导码,则会保持接收打开直到下行帧解调成功。接收后续处理同Class A。
CH10
Class B上行帧和Class不同之处:帧头的FCTRL_ClassB。这个在前面已有描述。
CH12
节点由ClassA切换到ClassB之前必须收到beacon,进入ClassB之后还需要周期搜索/接收beacon,从而同步时钟。
Class B节点可能临时收不到beacon,此时节点要逐渐加宽beacon和ping的接收窗。
如果收到beacon后2小时收不到新的beacon,节点需使用内部时钟保持同步。
使用温度传感器可以进一步降低节点内部时钟晶振的误差。
笔记:节点打开RX窗口的维持时间变长,但是打开的周期不变(例如上面还是32s打开一次),从而增加beacon和ping的收到机会(“多等了一会了”)
CH13
两个连续beacon起点之间时间差称之为beacon周期。
元组成:Guard time | beacon start | beacon reserved |ping可用时间
3s 2.12s
Beacon周期128s,减去5.12s,剩余122.88s为ping可用时间。122.88s=4096*30ms
Guard time是给上一次ping用的,保证ping完成后才能进行beacon发送。
beacon reserved是给beacon用的,保证beacon完成后才能进行ping发送。
笔记:相比V1.02一个变化:beacon发送
1、由UTC epoch + NwkId 改成GPS epoch。
2、TBeaconDelay由0-50ms值到确定为1.5ms±1us。
这是想全球统一运营的节奏啊!