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