张宏北,王晓懿
(北京工业大学,北京 100020)
随着物联网技术的不断发展,越来越多的设备正逐步向微型化、便携化、低功耗方向转型,其中也包括轨道交通监测设备,而转型的结果,导致其对于传统通信系统的功耗要求越来越严格,然而监测设备使用的传统通信系统是基于数据分发服务实现,其在提供稳定的网络传输性能时,会相应的产生较大能耗,而如果通过减少服务从而降低设备功耗,又会无法保证稳定的传输。因此,如何在保持或适当降低原有网络性能的同时,尽可能减少功耗便成为当前十分重要的研究问题。
为使应用于物联网中的数据分发系统能够较好的保证传输性能的同时,降低设备的功耗,本文基于数据分发服务实现了物联网数据分发系统,并且为降低系统功耗对服务进行了优化。
由于数据分发服务规范中各模块和接口定义是固定的,不能修改其结构,但是可以增加新的内部功能。本文依据规范以及系统需求提出了几点系统低功耗运行的方案,以延长设备使用时间。
系统架构由上到下主要分为发布订阅层、数据分发协议层和传输层,如图1 所示,其中低功耗设计将在数据分发协议层和传输层中进行。
图1 系统架构Fig.1 System architecture
以数据为中心的发布订阅层为数据分发系统的核心功能层,主要负责对上层应用提供发布订阅功能,支持用户通过该层提供的接口自定义主题和服务质量等基础设置,并将相关的信息存储在内部的数据结构中,为下层的行为提供数据基础。
数据分发协议层为数据分发系统实际上执行发布订阅层功能的实现层,主要负责接收发布订阅层传递来的数据包,将其按照数据分发协议进一步打包后交给传输层发送。获取传输层接收到的消息,进行解析,将解析出的数据包上传给发布订阅层。不论是执行发送还是接收,该层都会保存一份数据包的副本作为历史记录,以备出现由于网络异常而重新发送消息等不时之需。
传输层为数据分发系统提供网络通信的功能,负责将数据从物理层面上由发送端发送给接收端的过程。
在物联网数据分发系统中,传输层负责实现具体的数据发送和接收行为。为使系统能够接入并支持多种传输方式,例如UDP、TCP 等,系统中为传输层引入了传输插件框架,该框架为不同的传输方式定义了统一的接口,便于传输层内部的调用和管理,并且在需要支持新的传输方式时,仅需实现传输插件接口即可,减小了对原有程序的修改。这也为系统接入物联网通信技术奠定基础。
2.3.1 睡眠唤醒机制
物联网数据分发系统的数据分发协议层是真正处理数据交互的实现层,其中的自动发现协议在正常通信时会频繁地发送PDP 消息,而对于物联网设备尤其是电池供电的设备来说,频繁的通信会增加功耗,从而减少设备使用时间。因此,为降低此类功耗,本文将适当增加发送心跳(Heartbeat)时间间隔以及判断离线时间上限的方式来降低功耗。
此外,在发布方和订阅方建立连接后,在消息传输协议的影响下,发布方还需要定时发送心跳消息来确认对方的消息接收情况,而订阅方收到心跳后会立刻回复确认消息(AckNack),在低功耗设备的通信间隔过长,而定时心跳间隔小于交互间隔时,就会多出很多无效确认,从而产生额外功耗,因此此处将定时发送改为跟随上一个数据一并发送,在上一个数据发送后立刻进行确认,这样既可以减少定时发送功耗,也能够去除无效确认。
尽管通过降低工作频率一定程度降低系统功耗,但如果节点之间交互时间过长,即使工作频率降低,仍会出现功耗的浪费,因此考虑在通信周期较长的情况下加入睡眠唤醒机制。
本系统设计的睡眠唤醒机制处于数据分发协议层,具有两种模式:一种是正常运行模式,一种是睡眠模式。正常运行模式即系统处于正常运行的状态,同时工作频率为低功耗设计的频率;睡眠模式下,系统作为发布方会停止所有自主发送消息的功能,如自动发现心跳功能,作为订阅方会停止内部定时检查功能以及除自动发现模块外的所有接收功能。低功耗设备中,两种模式会交替运行,从而降低系统功耗。由于发布方和订阅方的功能不尽相同,如图2 所示,分别展示了两个角色运行流程。
图2 流程Fig.2 Flowchart
当系统作为发布方并处于正常模式时,如果很长一段时间没有收到应用传来的数据,会转换到睡眠模式,并通知所有建立连接的订阅方自己是睡眠,而不是下线。当处于睡眠模式时,如果收到上层应用发送数据的事件,则会再转回正常模式,并通知订阅方自己重新开始发布消息。
而当系统作为订阅方并处于正常模式时,如果很长一段时间没有收到任何发布方的消息,或者上层传来的数据,则进入睡眠模式,同样需要通知所有建立连接的发布方,自己进入睡眠模式。当处于睡眠模式时,如果收到发布方传来的消息,或者应用主动唤醒,则转回正常模式,并且通知发布方自己重新开始接收消息。
最后,当系统同时作为发布方和订阅方并处于正常模式时,只有同时符合上述提到的两条睡眠条件时,系统才会进入到睡眠状态。而处于睡眠状态时,只要满足上述提到的任意一个唤醒条件时,即被唤醒,并正常运行。
该机制既从根本上解决了发送心跳功能引发的功耗浪费问题,又不会完全停止系统分发与接收功能,导致无法唤醒。
2.3.2 NB-IoT通信协议设计
NB-IoT 窄带物联网通信是一种相比通用物联网,具有更低成本、更低功耗、更强覆盖等特性的技术。其低功耗模式更是能够将通信层面的功耗降到uA 级。而由于其功耗低,不可避免地传输效率就会相对较慢,上行平均160 kbit/s,下行200 kbit/s,因此适用于少量数据的交互。比如说某一辆车状态信息的采集,只需要很少的数据即可表示车辆状态,在该场景下窄带物联网通信的延时能够接近通用网络。
综上所述,本节将为系统传输层接入NB-IoT窄带通信技术,在物联网设备工作频率低,且交互数据微量的情况下,系统可以使用该通信技术代替通用网络,从而更好的降低设备功耗。
但是,由于NB-IoT 的低功耗模式位于传输层,而前面系统睡眠唤醒机制位于数据分发协议层,因此需要对两种机制进行适配。
NB-IoT 协议支持3 种省电模式:省电模式(Power Saving Mode,PSM)、不连续接收模式(Discontinuous Reception,DRX),扩展不连续接收模式(Extended DRX,eDRX)。其中本文使用的NB-IoT 模组采用了PSM 和eDRX 来节省功耗。
PSM 下,NB-IoT 模块不会检测是否有数据到达,只有在设备主动发送数据时,模块才会进入连接状态,此时可以接收数据,并且PSM 的周期TAU(T3412)是运营商下发的,无法配置。因此,该模式不适用于系统单独作为订阅方的情况,因为进入PSM 后无法被远程唤醒,而系统作为发布方时,由于该模式支持主动发送数据,因此睡眠唤醒条件基本不变,为防止在发现时由于网络原因导致设备提前进入低功耗模式,模式的开启也由睡眠唤醒机制触发。最后,当系统同时作为发布方和订阅方时,该模式只有发布数据或者TAU 结束时才会进入连接状态,因此系统进入睡眠以及唤醒模式的条件将以单独作为发布方的条件为准。PSM 运行如图3 所示。
图3 PSM模式Fig.3 PSM mode
eDRX 模式下,NB-IoT 模块会周期性地监听是否有数据到达,周期内有一个寻呼时间窗口,在此期间设备可以通过模块接收数据并处理相应的业务,其余时间模块将处于休眠状态,不接收任何数据,eDRX 运行周期如图4 所示。其中时间窗口和周期都是可调节的,因此,该模式能够兼顾低功耗和对时延有一定要求的业务,无需像PSM 一样只有发送数据才能接收数据。该模式支持系统作为任何角色进行发布订阅过程,但是系统无法在该模式处于休眠状态时进行通信,因此本文适当调整模块的寻呼周期以及系统睡眠唤醒机制的等待时间,令eDRX 周期与系统判断离线时间相同,这样正常通信时可以在判断超时之前接收新的PDP 消息,使得系统的睡眠唤醒过程能够及时通知域中的其他节点,最大程度地平衡时延以及低功耗需求。
图4 eDRX模式Fig.4 eDRX mode
在宽带网络条件下,本文提出的物联网数据分发系统与传统通信系统实现差别不大,因此双方在传输性能方面的差距可以忽略不计,本章着重展示系统功耗优化效果。
为保证使用NB-IoT 在降低系统功耗的同时不会过多的损耗通信性能,首先验证在少量数据交互且频率较低时,使用NB-IoT 及带宽受限以太网的两种情况下,通信效率无显著差异。选定数据采集应用作为监测应用、本文设计的物联网数据分发系统作为底层通信系统,测试两种网络情况下的传输延时,测试结果如表1 所示。
表1 两种网络延时对比Tab.1 Comparison between delays of the two networks
由表1 可知,NB-IoT 与受限带宽的平均延时差距为72 ms。根据实际应用需求,通信延时差距在100 ms 以内是可以接受的,延时差距可忽略不计。因此在上述场景下,可以使用NB-IoT 技术代替带宽受限的以太网进行通信,来更好的降低系统功耗。
为验证系统功耗,本次实验选择带有蓝牙通讯的数显usb 电流电压检测仪,其能够在数显屏幕上显示出实时的电流电压值。实验中将根据某一时刻的(电流×电压)计算出功率来展示系统的实时功耗。测试平台采用树莓派。在树莓派中运行数据采集应用作为轨道监控应用。
测试时,数据采集应用将分别使用传统的通信系统以及本文研究的物联网数据分发系统进行通信。通过对比实验结果,检验数据分发系统降低功耗的效果。为使功耗的变化与节省程度更加明显,树莓派待机功耗如图5 所示,作为之后分析的基准。
图5 树莓派待机功率Fig.5 Standby power of Raspberry Pi
根据图5 可知,树莓派待机时消耗的功率基本维持在1.4 W 以下。
1)睡眠唤醒功耗测试
为了证明本文设计的睡眠唤醒机制能够有效的降低功耗,本文针对传统通信系统以及使用睡眠唤醒机制后的系统功耗分别进行测试。
测试环境设定:采用带宽受限以太网作为网络环境、UDP 作为通信协议、低功耗的系统运行模式。
系统参数设置:传输模式选择可靠传输,以验证心跳/确认消息优化是否正常运作。自动发现消息的发送频率设置为20 s,进入睡眠时间设置为40 s,检查时间TIMER-C 设置为20 s,超时时间TIMER-O 设置为1 min,信 息采集间隔为20 s。在本文研究系统运行期间,发送方采集一次数据之后暂停40 s,让系统进入睡眠状态,等待1 min 后继续采集,唤醒系统,接收方只需要接收数据,即可被动执行睡眠和唤醒。
通过多次实验取平均值,得到的系统功耗对比如图6 所示。
图6 系统睡眠唤醒功耗对比Fig.6 Comparison between power consumption of sleep wake-up mechanism
由图6 可知,20~80 s 是系统正常运行产生的功耗,由于减少了PDP 消息以及心跳消息发送频率,系统在正常运行的情况下会比传统通信系统的功耗稍低,但未满足监测应用对于低功耗的需求,说明仅降低工作频率是不够的。在80~140 s 系统进入睡眠模式后,功耗得到明显的降低,相比传统通信系统,节约了36%。说明睡眠唤醒模式的设计确实能够有效地降低功耗,满足物联网系统的需求。
2)NB-IoT 功耗测试
此部分测试中,应用通信网络设置为NB-IoT,通信协议设置为udp,系统参数设定不变。对于NB-IoT 的低功耗设置,其中PSM 无需设置周期,对于eDRX 模式,根据运营商给出的时间表设置eDRX 的周期为20.48 s,PTW 为5.12 s,并以此为基础修改系统内部定时器,其中超时时间与eDRX 相同,定时检查时间与PTW 相同,这样可以使订阅方接收唤醒消息的延时降低,并且防止将远端睡眠状态中的发布方信息删除。
此部分的对比测试使用的是上一部分的数据采集应用以及使用了睡眠唤醒机制的数据分发系统,来检验适配了NB-IoT 低功耗模式的数据分发系统对于功耗优化的效果。最终系统功耗对比如图7 所示。
图7 NB-IoT低功耗模式对比Fig.7 Comparison between NB-IoT low-power modes
由图7 可知,系统在使用NB-IoT 通信时,进入睡眠模式后,NB-IoT 模块也进入休眠,此时消耗的功率最低。在PSM 模式下,相比传统通信系统节省了48%左右的功耗,同时比单独使用睡眠唤醒机制的系统节省了12%的功耗。由于eDRX 模式下的NB-IoT 模块在睡眠期间仍旧会轮询监听是否有下行数据,因此比PSM 模式的功率消耗略高,但仍旧比传统通信系统节省了46%的功耗,说明系统睡眠唤醒机制与NB-IoT 低功耗模式相配合能够更好的降低软件的功耗。
本文提出低功耗物联网数据分发系统,能够在提高设备传输性能的同时,延长其使用寿命。本研究以数据分发服务规范为基础,设计了新的数据分发系统,加入插件框架,使系统在提供高效的数据分发功能的同时,能够让设备更方便的加入到新的网络架构中进行通信。针对低功耗设备,设计睡眠唤醒机制,并且额外接入了窄带物联网NB-IoT 通信技术,将其低功耗模式与系统的睡眠唤醒机制进行了适配,使低功耗设备在面对不同的通信场景时能够灵活的切换通信方式,最大程度的降低系统功耗。