張宏北,王曉懿
(北京工業(yè)大學(xué),北京 100020)
隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,越來越多的設(shè)備正逐步向微型化、便攜化、低功耗方向轉(zhuǎn)型,其中也包括軌道交通監(jiān)測設(shè)備,而轉(zhuǎn)型的結(jié)果,導(dǎo)致其對于傳統(tǒng)通信系統(tǒng)的功耗要求越來越嚴(yán)格,然而監(jiān)測設(shè)備使用的傳統(tǒng)通信系統(tǒng)是基于數(shù)據(jù)分發(fā)服務(wù)實(shí)現(xiàn),其在提供穩(wěn)定的網(wǎng)絡(luò)傳輸性能時(shí),會(huì)相應(yīng)的產(chǎn)生較大能耗,而如果通過減少服務(wù)從而降低設(shè)備功耗,又會(huì)無法保證穩(wěn)定的傳輸。因此,如何在保持或適當(dāng)降低原有網(wǎng)絡(luò)性能的同時(shí),盡可能減少功耗便成為當(dāng)前十分重要的研究問題。
為使應(yīng)用于物聯(lián)網(wǎng)中的數(shù)據(jù)分發(fā)系統(tǒng)能夠較好的保證傳輸性能的同時(shí),降低設(shè)備的功耗,本文基于數(shù)據(jù)分發(fā)服務(wù)實(shí)現(xiàn)了物聯(lián)網(wǎng)數(shù)據(jù)分發(fā)系統(tǒng),并且為降低系統(tǒng)功耗對服務(wù)進(jìn)行了優(yōu)化。
由于數(shù)據(jù)分發(fā)服務(wù)規(guī)范中各模塊和接口定義是固定的,不能修改其結(jié)構(gòu),但是可以增加新的內(nèi)部功能。本文依據(jù)規(guī)范以及系統(tǒng)需求提出了幾點(diǎn)系統(tǒng)低功耗運(yùn)行的方案,以延長設(shè)備使用時(shí)間。
系統(tǒng)架構(gòu)由上到下主要分為發(fā)布訂閱層、數(shù)據(jù)分發(fā)協(xié)議層和傳輸層,如圖1 所示,其中低功耗設(shè)計(jì)將在數(shù)據(jù)分發(fā)協(xié)議層和傳輸層中進(jìn)行。

圖1 系統(tǒng)架構(gòu)Fig.1 System architecture
以數(shù)據(jù)為中心的發(fā)布訂閱層為數(shù)據(jù)分發(fā)系統(tǒng)的核心功能層,主要負(fù)責(zé)對上層應(yīng)用提供發(fā)布訂閱功能,支持用戶通過該層提供的接口自定義主題和服務(wù)質(zhì)量等基礎(chǔ)設(shè)置,并將相關(guān)的信息存儲在內(nèi)部的數(shù)據(jù)結(jié)構(gòu)中,為下層的行為提供數(shù)據(jù)基礎(chǔ)。
數(shù)據(jù)分發(fā)協(xié)議層為數(shù)據(jù)分發(fā)系統(tǒng)實(shí)際上執(zhí)行發(fā)布訂閱層功能的實(shí)現(xiàn)層,主要負(fù)責(zé)接收發(fā)布訂閱層傳遞來的數(shù)據(jù)包,將其按照數(shù)據(jù)分發(fā)協(xié)議進(jìn)一步打包后交給傳輸層發(fā)送。獲取傳輸層接收到的消息,進(jìn)行解析,將解析出的數(shù)據(jù)包上傳給發(fā)布訂閱層。不論是執(zhí)行發(fā)送還是接收,該層都會(huì)保存一份數(shù)據(jù)包的副本作為歷史記錄,以備出現(xiàn)由于網(wǎng)絡(luò)異常而重新發(fā)送消息等不時(shí)之需。
傳輸層為數(shù)據(jù)分發(fā)系統(tǒng)提供網(wǎng)絡(luò)通信的功能,負(fù)責(zé)將數(shù)據(jù)從物理層面上由發(fā)送端發(fā)送給接收端的過程。
在物聯(lián)網(wǎng)數(shù)據(jù)分發(fā)系統(tǒng)中,傳輸層負(fù)責(zé)實(shí)現(xiàn)具體的數(shù)據(jù)發(fā)送和接收行為。為使系統(tǒng)能夠接入并支持多種傳輸方式,例如UDP、TCP 等,系統(tǒng)中為傳輸層引入了傳輸插件框架,該框架為不同的傳輸方式定義了統(tǒng)一的接口,便于傳輸層內(nèi)部的調(diào)用和管理,并且在需要支持新的傳輸方式時(shí),僅需實(shí)現(xiàn)傳輸插件接口即可,減小了對原有程序的修改。這也為系統(tǒng)接入物聯(lián)網(wǎng)通信技術(shù)奠定基礎(chǔ)。
2.3.1 睡眠喚醒機(jī)制
物聯(lián)網(wǎng)數(shù)據(jù)分發(fā)系統(tǒng)的數(shù)據(jù)分發(fā)協(xié)議層是真正處理數(shù)據(jù)交互的實(shí)現(xiàn)層,其中的自動(dòng)發(fā)現(xiàn)協(xié)議在正常通信時(shí)會(huì)頻繁地發(fā)送PDP 消息,而對于物聯(lián)網(wǎng)設(shè)備尤其是電池供電的設(shè)備來說,頻繁的通信會(huì)增加功耗,從而減少設(shè)備使用時(shí)間。因此,為降低此類功耗,本文將適當(dāng)增加發(fā)送心跳(Heartbeat)時(shí)間間隔以及判斷離線時(shí)間上限的方式來降低功耗。
此外,在發(fā)布方和訂閱方建立連接后,在消息傳輸協(xié)議的影響下,發(fā)布方還需要定時(shí)發(fā)送心跳消息來確認(rèn)對方的消息接收情況,而訂閱方收到心跳后會(huì)立刻回復(fù)確認(rèn)消息(AckNack),在低功耗設(shè)備的通信間隔過長,而定時(shí)心跳間隔小于交互間隔時(shí),就會(huì)多出很多無效確認(rèn),從而產(chǎn)生額外功耗,因此此處將定時(shí)發(fā)送改為跟隨上一個(gè)數(shù)據(jù)一并發(fā)送,在上一個(gè)數(shù)據(jù)發(fā)送后立刻進(jìn)行確認(rèn),這樣既可以減少定時(shí)發(fā)送功耗,也能夠去除無效確認(rèn)。
盡管通過降低工作頻率一定程度降低系統(tǒng)功耗,但如果節(jié)點(diǎn)之間交互時(shí)間過長,即使工作頻率降低,仍會(huì)出現(xiàn)功耗的浪費(fèi),因此考慮在通信周期較長的情況下加入睡眠喚醒機(jī)制。
本系統(tǒng)設(shè)計(jì)的睡眠喚醒機(jī)制處于數(shù)據(jù)分發(fā)協(xié)議層,具有兩種模式:一種是正常運(yùn)行模式,一種是睡眠模式。正常運(yùn)行模式即系統(tǒng)處于正常運(yùn)行的狀態(tài),同時(shí)工作頻率為低功耗設(shè)計(jì)的頻率;睡眠模式下,系統(tǒng)作為發(fā)布方會(huì)停止所有自主發(fā)送消息的功能,如自動(dòng)發(fā)現(xiàn)心跳功能,作為訂閱方會(huì)停止內(nèi)部定時(shí)檢查功能以及除自動(dòng)發(fā)現(xiàn)模塊外的所有接收功能。低功耗設(shè)備中,兩種模式會(huì)交替運(yùn)行,從而降低系統(tǒng)功耗。由于發(fā)布方和訂閱方的功能不盡相同,如圖2 所示,分別展示了兩個(gè)角色運(yùn)行流程。

圖2 流程Fig.2 Flowchart
當(dāng)系統(tǒng)作為發(fā)布方并處于正常模式時(shí),如果很長一段時(shí)間沒有收到應(yīng)用傳來的數(shù)據(jù),會(huì)轉(zhuǎn)換到睡眠模式,并通知所有建立連接的訂閱方自己是睡眠,而不是下線。當(dāng)處于睡眠模式時(shí),如果收到上層應(yīng)用發(fā)送數(shù)據(jù)的事件,則會(huì)再轉(zhuǎn)回正常模式,并通知訂閱方自己重新開始發(fā)布消息。
而當(dāng)系統(tǒng)作為訂閱方并處于正常模式時(shí),如果很長一段時(shí)間沒有收到任何發(fā)布方的消息,或者上層傳來的數(shù)據(jù),則進(jìn)入睡眠模式,同樣需要通知所有建立連接的發(fā)布方,自己進(jìn)入睡眠模式。當(dāng)處于睡眠模式時(shí),如果收到發(fā)布方傳來的消息,或者應(yīng)用主動(dòng)喚醒,則轉(zhuǎn)回正常模式,并且通知發(fā)布方自己重新開始接收消息。
最后,當(dāng)系統(tǒng)同時(shí)作為發(fā)布方和訂閱方并處于正常模式時(shí),只有同時(shí)符合上述提到的兩條睡眠條件時(shí),系統(tǒng)才會(huì)進(jìn)入到睡眠狀態(tài)。而處于睡眠狀態(tài)時(shí),只要滿足上述提到的任意一個(gè)喚醒條件時(shí),即被喚醒,并正常運(yùn)行。
該機(jī)制既從根本上解決了發(fā)送心跳功能引發(fā)的功耗浪費(fèi)問題,又不會(huì)完全停止系統(tǒng)分發(fā)與接收功能,導(dǎo)致無法喚醒。
2.3.2 NB-IoT通信協(xié)議設(shè)計(jì)
NB-IoT 窄帶物聯(lián)網(wǎng)通信是一種相比通用物聯(lián)網(wǎng),具有更低成本、更低功耗、更強(qiáng)覆蓋等特性的技術(shù)。其低功耗模式更是能夠?qū)⑼ㄐ艑用娴墓慕档絬A 級。而由于其功耗低,不可避免地傳輸效率就會(huì)相對較慢,上行平均160 kbit/s,下行200 kbit/s,因此適用于少量數(shù)據(jù)的交互。比如說某一輛車狀態(tài)信息的采集,只需要很少的數(shù)據(jù)即可表示車輛狀態(tài),在該場景下窄帶物聯(lián)網(wǎng)通信的延時(shí)能夠接近通用網(wǎng)絡(luò)。
綜上所述,本節(jié)將為系統(tǒng)傳輸層接入NB-IoT窄帶通信技術(shù),在物聯(lián)網(wǎng)設(shè)備工作頻率低,且交互數(shù)據(jù)微量的情況下,系統(tǒng)可以使用該通信技術(shù)代替通用網(wǎng)絡(luò),從而更好的降低設(shè)備功耗。
但是,由于NB-IoT 的低功耗模式位于傳輸層,而前面系統(tǒng)睡眠喚醒機(jī)制位于數(shù)據(jù)分發(fā)協(xié)議層,因此需要對兩種機(jī)制進(jìn)行適配。
NB-IoT 協(xié)議支持3 種省電模式:省電模式(Power Saving Mode,PSM)、不連續(xù)接收模式(Discontinuous Reception,DRX),擴(kuò)展不連續(xù)接收模式(Extended DRX,eDRX)。其中本文使用的NB-IoT 模組采用了PSM 和eDRX 來節(jié)省功耗。
PSM 下,NB-IoT 模塊不會(huì)檢測是否有數(shù)據(jù)到達(dá),只有在設(shè)備主動(dòng)發(fā)送數(shù)據(jù)時(shí),模塊才會(huì)進(jìn)入連接狀態(tài),此時(shí)可以接收數(shù)據(jù),并且PSM 的周期TAU(T3412)是運(yùn)營商下發(fā)的,無法配置。因此,該模式不適用于系統(tǒng)單獨(dú)作為訂閱方的情況,因?yàn)檫M(jìn)入PSM 后無法被遠(yuǎn)程喚醒,而系統(tǒng)作為發(fā)布方時(shí),由于該模式支持主動(dòng)發(fā)送數(shù)據(jù),因此睡眠喚醒條件基本不變,為防止在發(fā)現(xiàn)時(shí)由于網(wǎng)絡(luò)原因?qū)е略O(shè)備提前進(jìn)入低功耗模式,模式的開啟也由睡眠喚醒機(jī)制觸發(fā)。最后,當(dāng)系統(tǒng)同時(shí)作為發(fā)布方和訂閱方時(shí),該模式只有發(fā)布數(shù)據(jù)或者TAU 結(jié)束時(shí)才會(huì)進(jìn)入連接狀態(tài),因此系統(tǒng)進(jìn)入睡眠以及喚醒模式的條件將以單獨(dú)作為發(fā)布方的條件為準(zhǔn)。PSM 運(yùn)行如圖3 所示。

圖3 PSM模式Fig.3 PSM mode
eDRX 模式下,NB-IoT 模塊會(huì)周期性地監(jiān)聽是否有數(shù)據(jù)到達(dá),周期內(nèi)有一個(gè)尋呼時(shí)間窗口,在此期間設(shè)備可以通過模塊接收數(shù)據(jù)并處理相應(yīng)的業(yè)務(wù),其余時(shí)間模塊將處于休眠狀態(tài),不接收任何數(shù)據(jù),eDRX 運(yùn)行周期如圖4 所示。其中時(shí)間窗口和周期都是可調(diào)節(jié)的,因此,該模式能夠兼顧低功耗和對時(shí)延有一定要求的業(yè)務(wù),無需像PSM 一樣只有發(fā)送數(shù)據(jù)才能接收數(shù)據(jù)。該模式支持系統(tǒng)作為任何角色進(jìn)行發(fā)布訂閱過程,但是系統(tǒng)無法在該模式處于休眠狀態(tài)時(shí)進(jìn)行通信,因此本文適當(dāng)調(diào)整模塊的尋呼周期以及系統(tǒng)睡眠喚醒機(jī)制的等待時(shí)間,令eDRX 周期與系統(tǒng)判斷離線時(shí)間相同,這樣正常通信時(shí)可以在判斷超時(shí)之前接收新的PDP 消息,使得系統(tǒng)的睡眠喚醒過程能夠及時(shí)通知域中的其他節(jié)點(diǎn),最大程度地平衡時(shí)延以及低功耗需求。

圖4 eDRX模式Fig.4 eDRX mode
在寬帶網(wǎng)絡(luò)條件下,本文提出的物聯(lián)網(wǎng)數(shù)據(jù)分發(fā)系統(tǒng)與傳統(tǒng)通信系統(tǒng)實(shí)現(xiàn)差別不大,因此雙方在傳輸性能方面的差距可以忽略不計(jì),本章著重展示系統(tǒng)功耗優(yōu)化效果。
為保證使用NB-IoT 在降低系統(tǒng)功耗的同時(shí)不會(huì)過多的損耗通信性能,首先驗(yàn)證在少量數(shù)據(jù)交互且頻率較低時(shí),使用NB-IoT 及帶寬受限以太網(wǎng)的兩種情況下,通信效率無顯著差異。選定數(shù)據(jù)采集應(yīng)用作為監(jiān)測應(yīng)用、本文設(shè)計(jì)的物聯(lián)網(wǎng)數(shù)據(jù)分發(fā)系統(tǒng)作為底層通信系統(tǒng),測試兩種網(wǎng)絡(luò)情況下的傳輸延時(shí),測試結(jié)果如表1 所示。

表1 兩種網(wǎng)絡(luò)延時(shí)對比Tab.1 Comparison between delays of the two networks
由表1 可知,NB-IoT 與受限帶寬的平均延時(shí)差距為72 ms。根據(jù)實(shí)際應(yīng)用需求,通信延時(shí)差距在100 ms 以內(nèi)是可以接受的,延時(shí)差距可忽略不計(jì)。因此在上述場景下,可以使用NB-IoT 技術(shù)代替帶寬受限的以太網(wǎng)進(jìn)行通信,來更好的降低系統(tǒng)功耗。
為驗(yàn)證系統(tǒng)功耗,本次實(shí)驗(yàn)選擇帶有藍(lán)牙通訊的數(shù)顯usb 電流電壓檢測儀,其能夠在數(shù)顯屏幕上顯示出實(shí)時(shí)的電流電壓值。實(shí)驗(yàn)中將根據(jù)某一時(shí)刻的(電流×電壓)計(jì)算出功率來展示系統(tǒng)的實(shí)時(shí)功耗。測試平臺采用樹莓派。在樹莓派中運(yùn)行數(shù)據(jù)采集應(yīng)用作為軌道監(jiān)控應(yīng)用。
測試時(shí),數(shù)據(jù)采集應(yīng)用將分別使用傳統(tǒng)的通信系統(tǒng)以及本文研究的物聯(lián)網(wǎng)數(shù)據(jù)分發(fā)系統(tǒng)進(jìn)行通信。通過對比實(shí)驗(yàn)結(jié)果,檢驗(yàn)數(shù)據(jù)分發(fā)系統(tǒng)降低功耗的效果。為使功耗的變化與節(jié)省程度更加明顯,樹莓派待機(jī)功耗如圖5 所示,作為之后分析的基準(zhǔn)。

圖5 樹莓派待機(jī)功率Fig.5 Standby power of Raspberry Pi
根據(jù)圖5 可知,樹莓派待機(jī)時(shí)消耗的功率基本維持在1.4 W 以下。
1)睡眠喚醒功耗測試
為了證明本文設(shè)計(jì)的睡眠喚醒機(jī)制能夠有效的降低功耗,本文針對傳統(tǒng)通信系統(tǒng)以及使用睡眠喚醒機(jī)制后的系統(tǒng)功耗分別進(jìn)行測試。
測試環(huán)境設(shè)定:采用帶寬受限以太網(wǎng)作為網(wǎng)絡(luò)環(huán)境、UDP 作為通信協(xié)議、低功耗的系統(tǒng)運(yùn)行模式。
系統(tǒng)參數(shù)設(shè)置:傳輸模式選擇可靠傳輸,以驗(yàn)證心跳/確認(rèn)消息優(yōu)化是否正常運(yùn)作。自動(dòng)發(fā)現(xiàn)消息的發(fā)送頻率設(shè)置為20 s,進(jìn)入睡眠時(shí)間設(shè)置為40 s,檢查時(shí)間TIMER-C 設(shè)置為20 s,超時(shí)時(shí)間TIMER-O 設(shè)置為1 min,信 息采集間隔為20 s。在本文研究系統(tǒng)運(yùn)行期間,發(fā)送方采集一次數(shù)據(jù)之后暫停40 s,讓系統(tǒng)進(jìn)入睡眠狀態(tài),等待1 min 后繼續(xù)采集,喚醒系統(tǒng),接收方只需要接收數(shù)據(jù),即可被動(dòng)執(zhí)行睡眠和喚醒。
通過多次實(shí)驗(yàn)取平均值,得到的系統(tǒng)功耗對比如圖6 所示。

圖6 系統(tǒng)睡眠喚醒功耗對比Fig.6 Comparison between power consumption of sleep wake-up mechanism
由圖6 可知,20~80 s 是系統(tǒng)正常運(yùn)行產(chǎn)生的功耗,由于減少了PDP 消息以及心跳消息發(fā)送頻率,系統(tǒng)在正常運(yùn)行的情況下會(huì)比傳統(tǒng)通信系統(tǒng)的功耗稍低,但未滿足監(jiān)測應(yīng)用對于低功耗的需求,說明僅降低工作頻率是不夠的。在80~140 s 系統(tǒng)進(jìn)入睡眠模式后,功耗得到明顯的降低,相比傳統(tǒng)通信系統(tǒng),節(jié)約了36%。說明睡眠喚醒模式的設(shè)計(jì)確實(shí)能夠有效地降低功耗,滿足物聯(lián)網(wǎng)系統(tǒng)的需求。
2)NB-IoT 功耗測試
此部分測試中,應(yīng)用通信網(wǎng)絡(luò)設(shè)置為NB-IoT,通信協(xié)議設(shè)置為udp,系統(tǒng)參數(shù)設(shè)定不變。對于NB-IoT 的低功耗設(shè)置,其中PSM 無需設(shè)置周期,對于eDRX 模式,根據(jù)運(yùn)營商給出的時(shí)間表設(shè)置eDRX 的周期為20.48 s,PTW 為5.12 s,并以此為基礎(chǔ)修改系統(tǒng)內(nèi)部定時(shí)器,其中超時(shí)時(shí)間與eDRX 相同,定時(shí)檢查時(shí)間與PTW 相同,這樣可以使訂閱方接收喚醒消息的延時(shí)降低,并且防止將遠(yuǎn)端睡眠狀態(tài)中的發(fā)布方信息刪除。
此部分的對比測試使用的是上一部分的數(shù)據(jù)采集應(yīng)用以及使用了睡眠喚醒機(jī)制的數(shù)據(jù)分發(fā)系統(tǒng),來檢驗(yàn)適配了NB-IoT 低功耗模式的數(shù)據(jù)分發(fā)系統(tǒng)對于功耗優(yōu)化的效果。最終系統(tǒng)功耗對比如圖7 所示。

圖7 NB-IoT低功耗模式對比Fig.7 Comparison between NB-IoT low-power modes
由圖7 可知,系統(tǒng)在使用NB-IoT 通信時(shí),進(jìn)入睡眠模式后,NB-IoT 模塊也進(jìn)入休眠,此時(shí)消耗的功率最低。在PSM 模式下,相比傳統(tǒng)通信系統(tǒng)節(jié)省了48%左右的功耗,同時(shí)比單獨(dú)使用睡眠喚醒機(jī)制的系統(tǒng)節(jié)省了12%的功耗。由于eDRX 模式下的NB-IoT 模塊在睡眠期間仍舊會(huì)輪詢監(jiān)聽是否有下行數(shù)據(jù),因此比PSM 模式的功率消耗略高,但仍舊比傳統(tǒng)通信系統(tǒng)節(jié)省了46%的功耗,說明系統(tǒng)睡眠喚醒機(jī)制與NB-IoT 低功耗模式相配合能夠更好的降低軟件的功耗。
本文提出低功耗物聯(lián)網(wǎng)數(shù)據(jù)分發(fā)系統(tǒng),能夠在提高設(shè)備傳輸性能的同時(shí),延長其使用壽命。本研究以數(shù)據(jù)分發(fā)服務(wù)規(guī)范為基礎(chǔ),設(shè)計(jì)了新的數(shù)據(jù)分發(fā)系統(tǒng),加入插件框架,使系統(tǒng)在提供高效的數(shù)據(jù)分發(fā)功能的同時(shí),能夠讓設(shè)備更方便的加入到新的網(wǎng)絡(luò)架構(gòu)中進(jìn)行通信。針對低功耗設(shè)備,設(shè)計(jì)睡眠喚醒機(jī)制,并且額外接入了窄帶物聯(lián)網(wǎng)NB-IoT 通信技術(shù),將其低功耗模式與系統(tǒng)的睡眠喚醒機(jī)制進(jìn)行了適配,使低功耗設(shè)備在面對不同的通信場景時(shí)能夠靈活的切換通信方式,最大程度的降低系統(tǒng)功耗。