王 明,王志成
1(中國科學院大學,北京,100049)
2(中國科學院 沈陽計算技術(shù)研究所 高檔數(shù)控國家工程研究中心,沈陽 110168)
目前燃油機車的油量監(jiān)測主要依靠司機通過機車上磁翻板液位計估計油量,這種方式有諸多缺點:精度低;無法對油耗進行科學管理.隨著鐵路信息化的發(fā)展,提高機車油耗的管理水平、加強對油耗的成本控制成為鐵路行業(yè)亟待解決的難題.
針對以上問題,本研究提出了基于NB-IoT的機車油量實時監(jiān)測系統(tǒng),采用高精度超聲波液位傳感器及GPS模塊實時采集機車的位置、車速、油量液位等信息,通過NB-IoT窄帶無線通信技術(shù)將信息實時發(fā)送到云端服務器,實現(xiàn)機車油耗的科學管理,用戶可通過瀏覽器實時查看機車的油耗、位置等信息,對機車進行科學調(diào)度,提高資源的利用.
NB-IoT(Narrow Band Internet of Things,NB-IoT)是物聯(lián)網(wǎng)領域基于蜂窩通信的新興技術(shù)[1],屬于低功耗廣域網(wǎng)(LPWAN)技術(shù)之一,具有低功耗、低成本、長距離、廣連接等優(yōu)勢[2],適合環(huán)境監(jiān)測、智能抄表、智能物流等諸多應用領域[3].
NB-IoT使用License頻段,在上行和下行傳輸數(shù)據(jù)時,最小只消耗 180 kHz 的系統(tǒng)帶寬,可直接部署于GSM網(wǎng)絡、UMTS或LTE網(wǎng)絡,降低部署成本,實現(xiàn)網(wǎng)絡平滑升級[4-6].
本系統(tǒng)由感知層、通信層、服務層、用戶層組成,總體架構(gòu)如圖1所示.第一層為感知層,超聲波液位傳感器負責采集機車油量液位數(shù)據(jù),GPS模塊負責獲取機車的經(jīng)緯度和速度等狀態(tài)數(shù)據(jù),并將信息通過NBIoT模塊空口連接到通信層的NB-IoT基站[7];第二層為通信層,負責感知層NB-IoT設備空口接入處理等功能,通過S1-lite接口連接到NB-IoT核心網(wǎng)[8];第三層為服務層,負責匯聚接入網(wǎng)的IoT相關(guān)數(shù)據(jù),并根據(jù)自定義協(xié)議區(qū)分不同類型的數(shù)據(jù),存儲到數(shù)據(jù)庫,并向用戶層提供油耗查詢、查詢歷史油量等服務接口;第四層為用戶層,用戶可以通過瀏覽器查看油耗、歷史數(shù)據(jù),修改NB-IoT設備上報頻率等參數(shù).
圖1 系統(tǒng)結(jié)構(gòu)圖
3.1.1 NB-IoT 終端硬件實現(xiàn)
NB-IoT終端硬件組成如圖2所示,由NB-IoT模組、微控制器、超聲波液位傳感器、GPS模組、電源模塊、備用電池組成.
圖2 硬件設計示意圖
NB-IoT通信模組采用芯訊通公司的SIM7000C,該模組基于高通MDM9206平臺開發(fā)的LTE eMTC(CAT M1)和 NB-IoT 模塊,支持多種頻段,硬件接口支持 UART、USB2.0等,使用AT 命令控制,支持多種通訊協(xié)議,是目前低功耗場景由其他通信技術(shù)向NB-IoT通信轉(zhuǎn)變的首選[9].
微控制器采用STM32L0系列芯片,支持低功耗模式.
超聲波液位傳感器是非接觸式、易于安裝,支持RS485和RS232串口輸出.
GPS模組采用u-blox公司的Ublox-NEO-M8N定位芯片,具有高靈敏度、低功耗、小型化的特點,定位精度可達3米.
電源模塊負責提供穩(wěn)定電源,備用電池負責機車斷電后繼續(xù)監(jiān)控油量.
3.1.2 NB-IoT 終端軟件實現(xiàn)
NB-IoT設備主程序由定時、監(jiān)聽、上傳數(shù)據(jù)、采集數(shù)據(jù)等功能組成,程序的工作流程如圖3所示.主程序首先對STM32進行系統(tǒng)初始化,如定時器、串口等,然后對NB-IoT、GPS和傳感器初始化,開啟采集和發(fā)送數(shù)據(jù)的定時器,定時時間根據(jù)參數(shù)設置采集定時器的時間要小于發(fā)送定時器的時間,采集定時器負責控制設備采集油量液位、定位信息,設備狀態(tài)等信息,發(fā)生定時器負責定時上傳數(shù)據(jù)至服務器;NB-IoT模塊監(jiān)聽下行數(shù)據(jù),當有下行業(yè)務時能喚醒模塊[10].
圖3 NB-IoT 設備軟件主程序流程圖
服務器軟件采用B/S架構(gòu)進行設計,為減小程序的耦合性,提高程序?qū)崟r性,將程序分Socket網(wǎng)絡通信程序和Web服務程序兩部分,實時消息的傳遞采用Redis消息隊列,整體結(jié)構(gòu)如圖4所示.
圖4 服務器軟件結(jié)構(gòu)示意圖
為Socket網(wǎng)絡通信模塊時刻監(jiān)聽指定端口,負責接受、解析NB-IoT設備上傳的數(shù)據(jù),將油量經(jīng)過濾波算法處理后存儲到MySQL數(shù)據(jù)庫,同時負責監(jiān)聽Web服務程序通過Redis消息隊列發(fā)布的命令,下發(fā)給NB-IoT設備;Web服務程序通過訪問MySQL數(shù)據(jù)庫向用戶展示油量、油耗、機車位置、速度等信息,同時接受用戶對NB-IoT設備的控制,通過Redis消息隊列發(fā)布給Socket網(wǎng)絡通信程序,通過Socket傳輸給NB-IoT設備.
3.2.1 濾波算法
機車在運動過程中會引起油的波動致使測量的液位不精準,影響系統(tǒng)的精度和可靠性.為此本系統(tǒng)在服務器接收到數(shù)據(jù)以后加入了濾波算法提高系統(tǒng)的穩(wěn)定性.因為機車油是上下波動以及緩慢消耗的過程,并且機車有加油的情況不能當做誤差處理掉,所以采用滑動平均濾波算法、限幅濾波算法以及一階低通濾波算法相結(jié)合的方法減小誤差,提高系統(tǒng)的精度和穩(wěn)定性.
滑動平均濾波算法的思想:建立一個長度為N的隊列,在隊列中存放N個歷史數(shù)據(jù)N{a1,a2,···,an-1,an},每次獲取到新數(shù)據(jù),先刪掉隊列中最老的舊數(shù)據(jù),然后新數(shù)據(jù)入隊,求得新隊列的平均,便作為最終的采集數(shù)據(jù).滑動平均濾波算法的算法公式如下:
其中,Xt為當前取得的值,N為隊列長度,ai為隊列的具體數(shù)據(jù).
限幅濾波算法公式如下:
其中,Xt第t次取得的值,Yt為第t次測量的值,Yt-1為第t-1次測量的值,A是相鄰兩次測量允許的最大偏差.
一階低通濾波算法公式如下:
其中,Xt為第t次取得的值,Yt為第t次測量的值,Xt-1為第t-1次取得的值,α為濾波系數(shù),本設計采用的低通濾波算法 α為0.1及0.01.
本系統(tǒng)濾波算法的整體思路如圖5所示,首先將液位值轉(zhuǎn)化為油量值,然后經(jīng)過濾波方法1,用于加油檢測,同時經(jīng)過濾波方法2將油量值存到數(shù)據(jù)庫.
圖5 濾波算法整體思路
濾波方法1的狀態(tài)轉(zhuǎn)換如圖6所示.
濾波方法1是在滑動平均濾波算法的基礎上增加了正常態(tài)、異常態(tài)、異常超時態(tài)三個狀態(tài),正常態(tài)是第t次測量的值Yt與第t-1次獲取的值Xt-1差的絕對值小于等于50;異常態(tài)是第t次測量的值Yt與第t-1次獲取的值Xt-1差的絕對值大于50;異常超時態(tài)是油量值一直處于異常狀態(tài)時間超過T分鐘.
圖6 濾波方法 1 的狀態(tài)圖
濾波方法2是油量在經(jīng)過濾波方法1之后,用限幅濾波算法和一階低通濾波結(jié)合使得液位變化平緩而不失真,濾波流程如圖7所示.
圖7 濾波方法 2 的流程圖
通過在某車務段調(diào)度機車上安裝NB-IoT設備布置測試環(huán)境,測試結(jié)果表明本系統(tǒng)可以正常運行,系統(tǒng)運行首頁如圖8所示.歷史油量數(shù)據(jù)如圖9所示.
NB-IoT終端設備主要由NB-IoT模組、微處理器、超聲波液位傳感器、GPS模塊組成.NB-IoT模組分為休眠和工作兩種模式[11],在休眠狀態(tài)下耗流小于5 mA,在工作模式下發(fā)射模式為LTE功耗為0.25 W,EDGE功率為0.5 W[12].因此終端設備的能耗與上傳數(shù)據(jù)的時間間隔密切相關(guān),本系統(tǒng)數(shù)據(jù)上傳間隔為10 s,平均能耗為 0.2 W.微處理器采用 STM32L051 芯片,stop 模式喚醒功耗 0.8 uA,工作模式下功耗為 2.4 uA.超聲波液位傳感器工作電流為35 mA.GPS模塊采用Ublox-NEO-M8N,功耗為 50 mW.
圖8 系統(tǒng)運行首頁
圖9 機車油量歷史數(shù)據(jù)趨勢圖
本系統(tǒng)中的超聲波油量傳感器更新頻率為1 s,上傳數(shù)據(jù)的時間間隔為10 s,控制命令下發(fā)的時間為0-10 s,因為只有在設備上傳數(shù)據(jù)后才能根據(jù)此時的設備號匹配到相應的IP地址將命令正確的下發(fā)給相應的終端設備.因此本系統(tǒng)的響應速度為10 s.
實驗中油量濾波算法的隊列長度為60,時間間隔為10 s,則監(jiān)測的油量有10分鐘的延時,油量正常消耗階段對油量的觀測沒有影響.
實驗中采用濾波算法如上所述方法實現(xiàn),濾波前與濾波后油量實時液位如圖10、圖11所示.
機車油箱總油量約為9000 L,由于測試條件有限無法得到精確的實際油量,根據(jù)車務段機車的加油數(shù)據(jù),對比加油前后的油量差與實際的加油量相差為正負 100 L.
圖10 濾波前液位高度
圖11 濾波后液位高度
基于NB-IoT的機車油量監(jiān)控系統(tǒng)利用NB-IoT技術(shù)能夠穩(wěn)定的將機車油量液位、經(jīng)緯度、速度等信息傳輸?shù)椒掌?使用多種簡單濾波算法相結(jié)合的方法減少液位波動引起的誤差取得較好的效果,對機車進行科學調(diào)度,提高資源的利用,加強對機車油耗的控制.