LoRaWAN介绍11 唤醒通信
“矛盾是一切运动和生命的根源。”--〔德〕黑格尔:《大逻辑》
在无线通信设计中有一个矛盾的地方:一方面,为了节能,要求节点尽可能长时间地休眠;另一方面,为了快速通信,要求服务器尽可能快地唤醒节点。
缓解该矛盾的办法是:约定唤醒、时钟同步和避免冲突。本文通过对LoRaWAN的Class B唤醒通信的分析,您将会看到设计一个物联网不得不在诸多因素中作出折中,即“两害相权取其轻”。
1 切换Class B
一个End Node从Class A(Class C不能)能切换到Class B,这取决于该Node的应用需要,切换过程如下:
(1) Node的应用请求LoRaWAN协议栈切换到Class B;
(2) 协议栈开始搜索网关发送的Beacon(信标帧),如果搜到Beacon,则返回BEACON_LOCKED原语,否则返回BEACON_NOT_FOUND原语;
(3) 如果希望加速发现Beacon,协议栈可以使用“BeaconTimingReq”的MAC命令,为保证网络高效运行,该命令1小时内仅能发送一次;
(4) Node根据自身电量和应用需求,选择唤醒通信的时隙间隔和通信速率;
(5) 如果Node成功切换到Class B模式,它每次UPLINK的帧中FCTRL=1;
(6) 一个移动的Node,必须定时告诉Server自己的方位,这往往通过发送一个UPLINK帧来完成,用于Server选择信号最强的Gateway唤醒通信;
(7) 如果一个节点在2小时内,没有接收到Beacon帧,那么它将失去与网络的同步,协议栈会通知应用层切换回Class A模式。
2 Beacon时间值
Class B中Beacon每隔128秒发送一次,End Node定期打开一个接收窗口,称之为“ping slot”,Server在该接收窗口发送的下行通信称之为“ping”。
如下图所示,Gateway每隔128秒发送Beacon,End Node每32秒打开一个“ping slot”,如果Server发送“ping”,End Node将回应数据帧。
为保证Beacon帧的正确发送,设置了BEACON_RESERVED时间值;
为防止一次ping和response通信,与Beacon的发送相冲突,设置了BEACON_GUARD时间值;
因此,留给Server和Node唤醒通信的时间值BEACON_WINDOW=
BEACON_PERIOD – BEACON_RESERVED –BEACON_GUARD;
这4个时间值如下:
BEACON_PERIOD = 128s
BEACON_RESERVED = 2.120s
BEACON_GUARD = 3.000s
BEACON_WINDOW = 122.880s
3 时隙随机化
想象下,如果一个网络有1000个End Node,如果它们在同一时刻侦听ping,那会带来什么后果呢?
答案是:系统冲突,或者叫过度侦听,这会消耗End Nodes更多的电能。如,Server希望唤醒第1000号End Node进行通信,其他999个End Nodes也不得不侦听 “与自己无关的DOWNLINK帧”而消耗电能。
为解决这个问题,每个EndNode的唤醒时刻是随机化的。每个Beacon周期(128s),Node的pingOffset(第一个ping窗口)随机公式如下:
Key = 16 x 0x00
Rand = aes128_encrypt(Key, beaconTime |DevAddr | pad16)
pingOffset = (Rand[0] + Rand[1] x 256) % pingPeriod
前面提到BEACON_WINDOW=122.880s,它被分成212=4096时隙,每个时隙30ms.
如上图所示,EndNode在一个Beacon周期开启4次ping slot,即pingPeriod=1024(时长=1024x30ms=30720ms),pingOffset每次都不一样(在3个Bacon周期中,它分别为:512、0和1023)。
以pingOffset=512,可以看到4次ping slot打开的时刻点,如下表所示。
slot |
BeaconReserved + (pingOffset + N x pingPeriod) x 30ms |
Ton |
#1 |
2.120s + (512 + 0 x 1024) x 30ms |
17.48s |
#2 |
2.120s + (512 + 1 x 1024) x 30ms |
48.20s |
#3 |
2.120s + (512 + 2 x 1024) x 30ms |
78.92s |
#4 |
2.120s + (512 + 3 x 1024) x 30ms |
109.64s |
4 Beacon帧结构
Beacon帧分成2部分:common part和gateway specific part,每个地区该帧的结构不一样。Time是UTC(Coordinated Universal Time,宇宙统一时间),GwSpecific包括Gateway的GPS信息。
对于一个固定的End Node,它仅解析common part并同步时钟,即可;
对于一个移动的End Node,它需要解析所有帧内容,获取Gateway的GPS信息,通过发送UPLINK帧,将告诉Server用于选择最佳的Gateway。
5 Beacon失步
设备的时钟都有漂移,如+/-10ppm的晶振128秒内将漂移+/-1.3ms,Gateway由GPS秒同步校准,而End Node则靠Beacon帧中的时间值来校准。
实际运行中,End Node可能会因为某些原因(无线干扰、通信拥塞或节点移动至远距离等)而接收不到Beacon。在这种情况下,LoRaWAN允许该End Node继续运行120分钟(2小时),同时允许End Node延伸ping slot时间窗口长度,以便缓解时钟漂移带来的误差。
在此2小时内,只要接收到Beacon帧,该End Node可以继续运行120分钟;否则,它将切换到Class A。
您的留言或需求: