(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350000)
國家電網(wǎng)公司要求電力巡檢系統(tǒng)滿足“全面性、準(zhǔn)確性、及時性、可靠性”等需求。由于在我國偏遠(yuǎn)地區(qū),仍存在大量的牧區(qū)和山區(qū),這些地區(qū)通信手段匱乏。針對這類地區(qū)的電力系統(tǒng)及突發(fā)事故的巡檢,目前還缺乏比較有力的手段?,F(xiàn)階段國內(nèi)外使用的電力巡檢方式有人工巡檢、智能機器人巡檢、無人機巡檢和直升機巡檢等,其中后三種巡檢方式由于其成本較大,并且技術(shù)不夠成熟,目前只適用于實驗室研究以及小范圍內(nèi)使用,而人工巡檢方式因其靈活度高、便利性強、成本低等特點,使得在巡檢中得到廣泛使用[1]。但這種方式存在工作量巨大,效率降低、故障報告不及時等嚴(yán)重問題。
近年來,隨著我國北斗衛(wèi)星導(dǎo)航系統(tǒng)(Compass Navigation Satellite System)系統(tǒng)的投入使用,利用北斗衛(wèi)星作為通信媒介成為現(xiàn)實。北斗衛(wèi)星通信系統(tǒng)具有覆蓋范圍大、沒有通信盲區(qū)、安全、可靠等優(yōu)點被廣泛應(yīng)用于海洋、氣象、水利、農(nóng)業(yè)、森林等偏遠(yuǎn)環(huán)境數(shù)據(jù)傳輸?shù)耐ㄐ臶2]。此外,北斗衛(wèi)星導(dǎo)航系統(tǒng)在電力系統(tǒng)中的應(yīng)用也逐漸增加[2-4]。
本設(shè)計基于不改變已投運設(shè)備和系統(tǒng)的前提下,采用北斗手持機來實現(xiàn)無移動信號覆蓋的偏遠(yuǎn)地區(qū)的位置獲取及通信的方法。并且針對該手持機提出了其應(yīng)用層軟件的設(shè)計思路及實現(xiàn)方法,同時解決北斗衛(wèi)星通信報文發(fā)送的容量問題。
本設(shè)計系統(tǒng)組成如圖1所示,主要包括:電力主站、北斗主站前置器、安卓手機、北斗手持機等。
圖1 北斗電力巡檢設(shè)計
北斗手持機集北斗收發(fā)鏈路的硬件功能模塊于一體,可以實現(xiàn)北斗衛(wèi)星上行信號的調(diào)制功能和北斗衛(wèi)星下行信號的解調(diào)功能;北斗手持機集成了電池及充放電管理模塊,可實現(xiàn)戶外獨立工作,續(xù)航能力達15小時。北斗手持機還集成了藍(lán)牙功能模塊,一方面可以將從衛(wèi)星中獲取當(dāng)前位置信息以及衛(wèi)星信號強度等有用信息通過藍(lán)牙發(fā)送到手機端,同時也能將手機端的指令和調(diào)度信息下發(fā)到北斗手持機,再通過北斗鏈路將信息傳回主站端的北斗用戶終端設(shè)備。
本文設(shè)計實現(xiàn)的主要功能有:
(1) 基本功能:離線地圖、藍(lán)牙連接、ic檢測。
(2) 通信功能:長報文信息發(fā)送。
(3) 定位功能:北斗RNSS定位、電子圍欄。
本設(shè)計的界面功能模塊是基于模型-視圖-控制器( Model-View-Controller,MVC) 的架構(gòu)模式進行設(shè)計,如圖2所示。
為了提高現(xiàn)場的指揮調(diào)度能力,可通過文字及時上傳異常點信息,交予后臺服務(wù)器分析處理、統(tǒng)籌規(guī)劃,確保遠(yuǎn)端指揮人員實時了解現(xiàn)場狀況及電網(wǎng)受災(zāi)情況。本設(shè)計調(diào)用了高德地圖API,并建立在安卓平臺的基礎(chǔ)上設(shè)計了良好的UI地圖界面,使巡檢人員更加直觀的了解自己所處的地理位置;同時也完善了電子圍欄巡檢提醒等功能,保障巡檢人員到位情況及安全,提高巡檢終端的智能化程度,實現(xiàn)整個巡檢過程的無紙化操作。
圖2 功能模塊關(guān)系
藍(lán)牙建立于連接的過程是北斗手持機(server端)設(shè)備一直處于等待狀態(tài),當(dāng)接受到安卓手機(client端)的連接請求的時候進入連接狀態(tài)。首先通過帶Bluetooth API的Android 手機調(diào)用BluetoothAdapter.LeScanCallback接口搜索藍(lán)牙設(shè)備,利用callback返回藍(lán)搜索結(jié)果,然后通過調(diào)用BluetoothAdapter的startLeScan()掃描藍(lán)牙設(shè)備,當(dāng)搜索到手持機對應(yīng)的藍(lán)牙硬件物理地址后,APP端立即停止掃描;藍(lán)牙連接流程圖如圖5所示。
藍(lán)牙通信的應(yīng)用需需要建立GATT連接。首先調(diào)用BluetoothDevice的connectGatt()函數(shù)。此函數(shù)帶三個參數(shù):Context、autoConnect(boolean)和BluetoothGattCallback。通信鏈路建立成功后,返回GATT profile的封裝BluetoothGatt對象。通過這個對象,我們就能在Android設(shè)備上對藍(lán)牙進行通信相關(guān)的操作。用BluetoothGattCallback傳遞一些連接狀態(tài)及結(jié)果,當(dāng)兩個設(shè)備都在連接狀態(tài)時可以正常通信。
固定的北斗信息封裝有固定的報文頭格式,如固定的ic檢測S|icjc通過調(diào)用函數(shù),定義操作類型。藍(lán)牙傳遞數(shù)據(jù)后在判斷數(shù)據(jù)是否接收完整。
由于手持機的藍(lán)牙只透傳北斗基帶結(jié)算出來的數(shù)據(jù),并沒有把數(shù)據(jù)做進一步的解析,因此手機APP端需要完成北斗協(xié)議的編解碼。
北斗協(xié)議的解碼和完成北斗手持機通過藍(lán)牙下發(fā)到手機APP端的數(shù)據(jù)。首先監(jiān)控藍(lán)牙收到的數(shù)據(jù),對數(shù)據(jù)按照協(xié)議頭進行分類,所有的北斗協(xié)議,均以‘S|’字符開頭,以回車換行字符‘0x0D’、‘0x0A’結(jié)尾,因此,在軟件開始時需先建立數(shù)組,每個數(shù)組中包該包頭、包尾和數(shù)據(jù),并定義兩個數(shù)組,分別存儲北斗RDSS和北斗RNSS的指令。
圖3 藍(lán)牙4.0的建立與連接流程圖
如果是報文信息,則輸根據(jù)協(xié)議頭中的報文長度標(biāo)識位判斷該報文的長度,然后通過頭協(xié)議和報文的第一個字節(jié)是否為‘0xA4’來判斷報文發(fā)送類型是代碼、漢字或者混發(fā),最后利用相對應(yīng)的碼字組合方式將信息讀取出來顯示在手機短信中,并調(diào)用手機的震動提醒功能;如果是IC信息,則更新手機界面的IC信息號,并根據(jù)報文內(nèi)容讀取序列號、通播地址、服務(wù)等級、服務(wù)類型和服務(wù)頻度5個信息顯示在手機端APP的界面中,如果是功率信息則直接更新APP的信號強度的圖標(biāo)。由于北斗二代RNSS是單向傳輸?shù)膮f(xié)議,除非更改波特率等配置信息外,無需額外進行操作,因此不需要對RNSS進行協(xié)議的編碼。北斗RDSS需要根據(jù)《北斗RDSS用戶機接口協(xié)議4.0版本》進行編碼。編碼內(nèi)容包含IC檢測、功率檢測、時間輸出、自檢信息、通信申請、定位申請、第一類位置報告和第二類位置報告。APP端實時檢測用戶的操作,判斷用戶的指令需求,并根據(jù)北斗協(xié)議進行封裝后,通過藍(lán)牙發(fā)送給手持機。
由于北斗通信收到用戶卡等級的限制和影響,3級用戶卡一次只能發(fā)送78.5字節(jié)的報文,然后實際電力巡檢應(yīng)用過程中,往往需要發(fā)送更長的短信息,因此需要對短報文信息進行拆分包和組包處理。拆分包和組包處理,首先需要對北斗報文中的78.5字節(jié)數(shù)據(jù)字段進一步進行定義,并規(guī)范好相應(yīng)的功能位,如表1所示。
表1
其中,拆分標(biāo)志位用來表征本幀數(shù)據(jù)是否是拆分包數(shù)據(jù),當(dāng)該2字節(jié)內(nèi)容為十六進制“AAFF”時,則判斷為拆分包數(shù)據(jù),若為其它數(shù)據(jù),則判斷為不是拆分包數(shù)據(jù),將整個報文數(shù)據(jù)端作為短信內(nèi)容輸出;編碼字節(jié)共占1.5字節(jié),含12比特數(shù)據(jù),其中的高比特用于指示該幀是否為最后一幀,第二比特數(shù)據(jù)用于表示是否要求應(yīng)答為發(fā)送方定義,根據(jù)數(shù)據(jù)內(nèi)容的重要性,判斷該包數(shù)據(jù)的重要級別,當(dāng)重要級別較高的數(shù)據(jù)傳輸時,則該位置為1,否則置0;低10比特用于指示該幀是一組數(shù)據(jù)中的第幾包數(shù)據(jù),取值范圍0~1023,如表2所示。
表2
報文內(nèi)容用于填充所要傳輸?shù)膱笪男畔ⅲ恍r灪蜑镃RC校驗,共2字節(jié),其中第一字節(jié)用于對拆分標(biāo)志位和編碼字節(jié)進行糾錯,第二字節(jié)用于對接收報文內(nèi)容進行檢錯,當(dāng)收到報文出現(xiàn)誤碼時,如果誤碼出現(xiàn)在包頭中,則有可能會引起整個數(shù)據(jù)包的解析錯誤甚至引起系統(tǒng)故障,因此在協(xié)議中加入了一個字節(jié)的CRC檢驗和,用對包頭的糾錯。如果誤碼出現(xiàn)在報文內(nèi)容中,則通過檢驗判斷是否有誤碼,而不對具體的誤碼進行糾錯處理。
其中,是否結(jié)束標(biāo)志的優(yōu)先級高于是否應(yīng)答的優(yōu)先級,當(dāng)接收端手機APP收到最后一條報文包時,無論是否應(yīng)答標(biāo)志位是否置1,都需要給發(fā)送方發(fā)送應(yīng)答信號。
當(dāng)發(fā)送方收到所有需求接收方應(yīng)答的應(yīng)答標(biāo)志后,需要給接收方發(fā)送結(jié)束通知包,該報數(shù)據(jù)的編碼字節(jié)中,結(jié)束標(biāo)志和應(yīng)答標(biāo)志均置1,包序號寫1,報文內(nèi)容為十六進制全1的1字節(jié)數(shù)。
當(dāng)接收方接收到發(fā)送發(fā)送的具有應(yīng)答需求標(biāo)志的報文包時,需要給發(fā)送發(fā)做出應(yīng)答反應(yīng),應(yīng)答方式為回復(fù)報文,內(nèi)容定義含5字節(jié),如表3所示。
表3
圖4 長報文發(fā)送流程圖
手機接收到北斗RDSS的短報文信息時,首先需要通過協(xié)議頭判斷該報文是否為拆分包報文,如果不是,則直接輸出到手機端顯示;當(dāng)收到拆分包報文時,APP軟件根據(jù)是否應(yīng)答的標(biāo)志位判斷是否給發(fā)送方進行應(yīng)答處理,接著等待下一條報文的接收,并每收到一幀數(shù)據(jù)后都需要判斷是否為結(jié)束幀,當(dāng)收到結(jié)束幀時,則給發(fā)送方發(fā)送應(yīng)答信號,然后將收到的所有該幀數(shù)據(jù)按照包數(shù)號的順序進行組包,丟棄重復(fù)的報文包后發(fā)送到手機頁面顯示。
選擇重傳和時序沖突的解決方法:為了確保拆分包后,接收端不會因為偶然的系統(tǒng)丟包,造成對整條信息的誤讀或誤解,需要建立選擇重傳機制。當(dāng)發(fā)送端發(fā)送一條需求應(yīng)答的報文包時,連續(xù)3分鐘內(nèi)未收到接收端發(fā)送的應(yīng)答包,則需要將該報數(shù)據(jù)再次進行發(fā)送,直到所有帶有應(yīng)答需求的報文包都收到應(yīng)答信息為止,則發(fā)送方向接收端設(shè)備發(fā)送結(jié)束通知包,并等待接收機對該包數(shù)據(jù)的應(yīng)答。
因為報文協(xié)議中,只對序號進行編碼,當(dāng)有兩組長報文同時需要發(fā)送時,需要第一組數(shù)據(jù)發(fā)送后,收到全部的回執(zhí)并且收到尾包數(shù)據(jù)的應(yīng)答后,才能就行下一包數(shù)據(jù)的拆包和發(fā)送。
接收的信息主要有主站發(fā)來的“通信信息”以及巡檢人員自身的位置信息及ic卡的信息。最終得到以下界面圖6所示:經(jīng)過現(xiàn)場測試,電力巡檢軟件的藍(lán)牙功能、長報文功能都符合設(shè)計預(yù)期目標(biāo)。終端長報文通信界面截圖如圖6所示。
圖5 長報文接收流程圖
圖6 長報文功能
本文提出了采用北斗衛(wèi)星導(dǎo)航系統(tǒng)中的短報文服務(wù)作為定位和通信手段來解決無移動網(wǎng)絡(luò)下電力巡檢的方法,并且結(jié)合高德地圖,實現(xiàn)位置信息在地圖上的顯示。本設(shè)計針對電力巡檢人員的實際需求,融合了藍(lán)牙通信、高德地圖、北斗長報文等功能與一體,基于安卓系統(tǒng)的APP開發(fā),并通過實際測試實現(xiàn)預(yù)期的功能,經(jīng)檢驗符合電力巡檢人員的功能需求,達到設(shè)計的預(yù)期結(jié)果。