歐陽(yáng)晨皓,黃永帥,劉冠蘭,2,史俊波,2
(1. 武漢大學(xué)測(cè)繪學(xué)院,湖北 武漢 430079; 2. 精密工程與工業(yè)測(cè)量國(guó)家測(cè)繪地理信息局重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430079)
水平位移形變監(jiān)測(cè)為工程安全提供依據(jù),是軌道交通工程中十分重要的一環(huán)。隨著移動(dòng)互聯(lián)技術(shù)和智能終端的發(fā)展及廣泛應(yīng)用,水平位移形變監(jiān)測(cè)正向高度自動(dòng)化方向發(fā)展[1]。在自動(dòng)化過(guò)程中,需考慮監(jiān)測(cè)的即時(shí)性和數(shù)據(jù)安全問(wèn)題。傳統(tǒng)水平位移監(jiān)測(cè)數(shù)據(jù)采集中,監(jiān)測(cè)結(jié)果反饋周期長(zhǎng),監(jiān)測(cè)即時(shí)性差;原始記錄、最終結(jié)果均需要經(jīng)過(guò)監(jiān)測(cè)人員干預(yù),數(shù)據(jù)記錄原始性、保密性、安全性差[2-6]。
針對(duì)上述問(wèn)題,本文基于軌道交通工程實(shí)際要求,開(kāi)發(fā)實(shí)現(xiàn)了一套基于A(yíng)ndroid設(shè)備的水平位移即時(shí)監(jiān)測(cè)終端軟件,利用Android設(shè)備的藍(lán)牙功能、網(wǎng)絡(luò)通信功能分別與測(cè)量?jī)x器、后臺(tái)服務(wù)器通信,實(shí)時(shí)獲取儀器測(cè)量信息及服務(wù)端測(cè)量信息,實(shí)時(shí)計(jì)算、預(yù)警,保證了監(jiān)測(cè)的即時(shí)性。軟件中嵌入DES(data encryption algorithm)對(duì)稱(chēng)加密算法[7-9],監(jiān)測(cè)人員無(wú)法干預(yù)監(jiān)測(cè)數(shù)據(jù)記錄、計(jì)算過(guò)程,從而保證了監(jiān)測(cè)過(guò)程中“數(shù)據(jù)不落地”,完善了安全機(jī)制。本文首先介紹軟件架構(gòu)、功能特性,然后描述Android設(shè)備與測(cè)量?jī)x器之間藍(lán)牙通信開(kāi)發(fā)及數(shù)據(jù)加密流程,最后詳細(xì)講述各模塊功能,給出相關(guān)結(jié)論。
監(jiān)測(cè)軟件終端依據(jù)數(shù)據(jù)通信鏈路不同分為兩部分,分別為Android設(shè)備與測(cè)量?jī)x器、Android設(shè)備與服務(wù)端通信鏈路。兩條通信鏈路協(xié)作使監(jiān)測(cè)具備即時(shí)性。軟件對(duì)監(jiān)測(cè)記錄、成果進(jìn)行加密,保證了數(shù)據(jù)安全。圖1為終端軟件框架。
為了克服人工記錄、計(jì)算測(cè)量?jī)x器數(shù)據(jù)導(dǎo)致的記錄準(zhǔn)確性、處理實(shí)時(shí)性差的問(wèn)題,同時(shí)考慮傳輸距離、硬件成本,軟件采用藍(lán)牙作為測(cè)量?jī)x器與Android設(shè)備的通信媒介。對(duì)于無(wú)內(nèi)置藍(lán)牙的測(cè)量?jī)x器,可借助儀器自帶的RS232數(shù)據(jù)接口,外接串口藍(lán)牙適配器。
Android設(shè)備通過(guò)藍(lán)牙向測(cè)量?jī)x器發(fā)送命令,獲取儀器信息、配置度盤(pán)、控制儀器觀(guān)測(cè),儀器解析命令后將請(qǐng)求的信息、配置結(jié)果、觀(guān)測(cè)結(jié)果返回給Android設(shè)備。獲得儀器觀(guān)測(cè)數(shù)據(jù)后,軟件將自動(dòng)記錄并實(shí)時(shí)計(jì)算觀(guān)測(cè)數(shù)據(jù),與測(cè)量規(guī)范比對(duì),若閉合差等檢核量超限將提示用戶(hù)重測(cè)測(cè)點(diǎn)/測(cè)回。最后,軟件將最終測(cè)量結(jié)果與往期數(shù)據(jù)比對(duì),若變形超過(guò)閾值,將立即預(yù)警提示用戶(hù)。監(jiān)測(cè)作業(yè)結(jié)束后,軟件將對(duì)原始記錄、結(jié)果進(jìn)行加密,將所有成果組織成報(bào)表。圖2為鏈路工作流程。
Android設(shè)備與服務(wù)端通過(guò)互聯(lián)網(wǎng)通信,數(shù)據(jù)交流遵循JSON(JavaScript object notation)格式。根據(jù)作業(yè)步驟,可將該通信鏈路的交互內(nèi)容分為兩種:一是在監(jiān)測(cè)準(zhǔn)備階段,軟件需要向服務(wù)器請(qǐng)求測(cè)站屬性信息,也可通過(guò)軟件在服務(wù)端新建測(cè)站信息,包括測(cè)站所屬線(xiàn)路、工點(diǎn)、測(cè)站名稱(chēng)、監(jiān)測(cè)點(diǎn)坐標(biāo)、監(jiān)測(cè)點(diǎn)變形閾值。二是在監(jiān)測(cè)完成階段,軟件將監(jiān)測(cè)獲取的原始記錄、計(jì)算結(jié)果、監(jiān)測(cè)點(diǎn)變形量發(fā)送給服務(wù)端,服務(wù)端獲取監(jiān)測(cè)結(jié)果后將其保存至數(shù)據(jù)庫(kù)。
另外軟件具備數(shù)據(jù)同步功能,可根據(jù)用戶(hù)給定的時(shí)間范圍,將對(duì)應(yīng)時(shí)段內(nèi)監(jiān)測(cè)記錄下載至Android設(shè)備,供用戶(hù)查看原始記錄、監(jiān)測(cè)點(diǎn)變形曲線(xiàn)等。圖3為鏈路工作流程。
為保證監(jiān)測(cè)數(shù)據(jù)不落地,首先利用藍(lán)牙通信將原始數(shù)據(jù)從全站儀串口傳輸至Android設(shè)備,而后在A(yíng)ndroid設(shè)備上利用“DES”算法對(duì)原始記錄、監(jiān)測(cè)成果進(jìn)行加密。該過(guò)程中,用戶(hù)無(wú)法對(duì)原始數(shù)據(jù)進(jìn)行編輯,保證了數(shù)據(jù)的原始性、準(zhǔn)確性、安全性。
藍(lán)牙短距離無(wú)線(xiàn)通信技術(shù)發(fā)展至今大致有5個(gè)版本,其中藍(lán)牙1.x~3.x為傳統(tǒng)藍(lán)牙(bluetooth BR/EDR),4.x~5.x為新一代的低功耗藍(lán)牙(bluetooth low energy)[10-11]。本文系統(tǒng)在開(kāi)發(fā)初期考慮較低版本,全站儀均需要外接串口藍(lán)牙適配器,而市面上帶RS232串口轉(zhuǎn)接頭的藍(lán)牙適配器產(chǎn)品使用的藍(lán)牙標(biāo)準(zhǔn)大多為傳統(tǒng)藍(lán)牙標(biāo)準(zhǔn);另外新一代測(cè)量機(jī)器人,其內(nèi)置藍(lán)牙標(biāo)準(zhǔn)大多也為傳統(tǒng)藍(lán)牙,因此本文系統(tǒng)采用了傳統(tǒng)藍(lán)牙標(biāo)準(zhǔn)。
軟件基于A(yíng)ndroid Studio 2.2平臺(tái)開(kāi)發(fā),使用的編程語(yǔ)言為JAVA。Android設(shè)備的傳統(tǒng)藍(lán)牙開(kāi)發(fā)分兩步:藍(lán)牙外設(shè)搜索、連接,數(shù)據(jù)傳輸[12]。圖4為Android藍(lán)牙開(kāi)發(fā)流程。
(1) Android藍(lán)牙外設(shè)搜索、連接。Android環(huán)境中的BluetoothAdapter類(lèi)庫(kù)包含了藍(lán)牙狀態(tài)查詢(xún)、掃描、連接等操作函數(shù)。利用startDiscovery函數(shù)開(kāi)始掃描藍(lán)牙外設(shè),該函數(shù)可獲取附件所有藍(lán)牙外設(shè)的MAC(介質(zhì)訪(fǎng)問(wèn)控制)地址、名稱(chēng)、RSSI(接收信號(hào)強(qiáng)度)等信息。搜索到目標(biāo)藍(lán)牙后,向目標(biāo)藍(lán)牙發(fā)起配對(duì)請(qǐng)求,完成配對(duì)。
配對(duì)完成后,即可令設(shè)備發(fā)起連接請(qǐng)求。Android設(shè)備與藍(lán)牙外設(shè)連接時(shí),需要對(duì)應(yīng)通用唯一識(shí)別碼(UUID)開(kāi)啟串行線(xiàn)性仿真協(xié)議(RFCOMM)信道,使用的函數(shù)為createRfcommSocketToService Record。信道開(kāi)啟成功后,即可利用BluetoothSocket對(duì)象進(jìn)行套接字通信。
(2) 藍(lán)牙數(shù)據(jù)傳輸。Android設(shè)備與外設(shè)藍(lán)牙連接完成后,即可利用getInputStream、getOutputStream函數(shù)從藍(lán)牙套接字對(duì)象獲取輸入、輸出流。開(kāi)啟數(shù)據(jù)監(jiān)聽(tīng)線(xiàn)程,利用輸入流獲取儀器端外設(shè)藍(lán)牙發(fā)來(lái)的數(shù)據(jù);當(dāng)Android設(shè)備向儀器發(fā)送命令時(shí),則利用輸出流發(fā)送數(shù)據(jù),這樣便實(shí)現(xiàn)了Android設(shè)備與測(cè)量?jī)x器雙向通信功能。
軟件兼容拓普康、徠卡兩種品牌全站儀。拓普康全站儀串口命令為SOKKIA/TOPCON格式,徠卡全站儀串口命令有GSI、GeoCOM兩種格式,使用的命令主要包括水平角置盤(pán)、開(kāi)始觀(guān)測(cè)、停止觀(guān)測(cè)、角度/斜距信息獲取[13-15]。
DES是一種可逆的對(duì)稱(chēng)分組加密算法,該算法在POS、ATM、IC卡等方面運(yùn)用廣泛。加密過(guò)程大致包含3步:初始置換、子密鑰生成、16輪迭代運(yùn)算及最終置換[7,16]。圖5為DES加密算法流程。
(1) 初始置換。置換的目的在于打亂原來(lái)64位明文、密鑰的順序,并依照初始置換表進(jìn)行排列。
(2) 子密鑰生成。將置換后始密鑰分為左右兩半KL0及KR0,分別對(duì)KL0和KR0進(jìn)行循環(huán)左移得到KL1和KR1,之后將得到的KL1和KR1合并再次按照新的置換表進(jìn)行排列得到Key1,作為下一輪迭代的輸入。按照上述方法迭代16次,即得到16個(gè)子密鑰。
(3) 16輪迭代運(yùn)算及最終置換。初始置換之后的明文分為左明文L0和右明文R0,長(zhǎng)度均為32位。首先“擴(kuò)展置換”將右明文擴(kuò)展為48位,“密鑰變換”將本輪迭代的子密鑰壓縮為48位后,令兩者進(jìn)行異或運(yùn)算,得到的運(yùn)算結(jié)果經(jīng)過(guò)“S盒置換”、“P盒置換”兩步得到新的32位變量,將該32位變量與左明文進(jìn)行異或運(yùn)算得到新的右明文R1,再將舊的右明文R0作為新的左明文L1,即得到新一輪迭代的輸入。按照上述過(guò)程進(jìn)行16輪迭代,最后一輪迭代生成的左右明文不交替。按照最終置換規(guī)則排列16輪迭代后的明文,即得到最終加密結(jié)果。DES解密與加密過(guò)程類(lèi)似,不同之處在于子密鑰使用順序相反。
軟件依據(jù)軌道交通工程施工現(xiàn)場(chǎng)水平位移監(jiān)測(cè)需求,共設(shè)計(jì)實(shí)現(xiàn)了7個(gè)功能模塊:用戶(hù)注冊(cè)/驗(yàn)證、測(cè)站管理、監(jiān)測(cè)任務(wù)新建/加載、數(shù)據(jù)采集/實(shí)時(shí)預(yù)警、成果報(bào)表、數(shù)據(jù)同步、數(shù)據(jù)恢復(fù)。圖6為軟件模塊功能示意圖。以下對(duì)關(guān)鍵模塊進(jìn)行展開(kāi)描述。
圖7為監(jiān)測(cè)數(shù)據(jù)采集及實(shí)時(shí)預(yù)警模塊操作界面。該模塊用戶(hù)通過(guò)點(diǎn)擊“獲取數(shù)據(jù)”即可向全站儀發(fā)出觀(guān)測(cè)命令,等待儀器觀(guān)測(cè)完成、反饋觀(guān)測(cè)數(shù)據(jù)后,軟件將立即進(jìn)行數(shù)據(jù)解析、顯示。一旦觀(guān)測(cè)數(shù)據(jù)累積到可以計(jì)算,軟件立即對(duì)可檢核的誤差指標(biāo)進(jìn)行計(jì)算,包括平距較差、半測(cè)回歸零差、一測(cè)回內(nèi)2c互差、同方向各測(cè)回較差等,一旦指標(biāo)超限,軟件立刻提示用戶(hù)重測(cè)或加測(cè)。每一測(cè)回完成后都將計(jì)算一次測(cè)點(diǎn)坐標(biāo),與上期坐標(biāo)對(duì)比,計(jì)算變形量、變形速率,若指標(biāo)超限,將立刻向用戶(hù)發(fā)出預(yù)警,幫助監(jiān)測(cè)人員排查問(wèn)題,排除安全隱患。考慮觀(guān)測(cè)人員在操作儀器時(shí)可能出現(xiàn)目標(biāo)對(duì)準(zhǔn)錯(cuò)位等失誤,軟件允許用戶(hù)對(duì)當(dāng)前測(cè)點(diǎn)、測(cè)回或全部觀(guān)測(cè)任務(wù)重新觀(guān)測(cè)。另外軟件允許用戶(hù)在該界面重新選擇使用的儀器、串口命令格式及重新連接藍(lán)牙。
圖8為成果報(bào)表功能模塊操作界面及成果報(bào)表展示效果。用戶(hù)完成監(jiān)測(cè)作業(yè)后即可在該模塊查看測(cè)站原始數(shù)據(jù)、計(jì)算結(jié)果、形變信息。在確認(rèn)記錄無(wú)誤后即可上傳至服務(wù)器,服務(wù)器在接收到記錄后立即對(duì)各測(cè)點(diǎn)信息進(jìn)行更新,對(duì)于水平位移超限的測(cè)點(diǎn)將立即在平臺(tái)風(fēng)險(xiǎn)系統(tǒng)發(fā)布預(yù)警信息,作業(yè)人員對(duì)預(yù)警點(diǎn)處理、反饋后再消除預(yù)警。該模塊使得監(jiān)測(cè)內(nèi)業(yè)實(shí)現(xiàn)電子化、自動(dòng)化,有效提高了作業(yè)效率。
圖9為數(shù)據(jù)同步模塊操作界面及歷史數(shù)據(jù)、變形曲線(xiàn)顯示效果。與任務(wù)新建模塊類(lèi)似,用戶(hù)從服務(wù)器獲取線(xiàn)路、工點(diǎn)信息后,軟件將自動(dòng)加載用戶(hù)選擇工點(diǎn)下的測(cè)站、測(cè)點(diǎn),用戶(hù)設(shè)置監(jiān)測(cè)開(kāi)始、截止日期后,即可從服務(wù)端同步到相應(yīng)時(shí)段內(nèi)的監(jiān)測(cè)記錄及成果。用戶(hù)選擇測(cè)站同步記錄后即可查看監(jiān)測(cè)原始記錄,選擇測(cè)點(diǎn)同步記錄后即可查看測(cè)點(diǎn)具體形變量及變形曲線(xiàn)。該模塊方便了監(jiān)測(cè)人員對(duì)施工現(xiàn)場(chǎng)監(jiān)測(cè)點(diǎn)形變信息進(jìn)行分析,另外也使得監(jiān)測(cè)人員以外用戶(hù)可快速調(diào)取施工現(xiàn)場(chǎng)形變信息,促進(jìn)參與工程施工的多方人員信息互通。
隨著移動(dòng)互聯(lián)技術(shù)和智能終端的發(fā)展及在工程中的廣泛應(yīng)用,軌道交通工程監(jiān)測(cè)作業(yè)正向全自動(dòng)化靠攏,在自動(dòng)化過(guò)程中,監(jiān)測(cè)的即時(shí)性和數(shù)據(jù)的安全性顯得更加重要。
針對(duì)監(jiān)測(cè)過(guò)程的即時(shí)性和數(shù)據(jù)的安全性,本文設(shè)計(jì)實(shí)現(xiàn)了一套基于A(yíng)ndroid設(shè)備的水平位移即時(shí)監(jiān)測(cè)終端軟件。測(cè)量人員在作業(yè)階段能夠?qū)崟r(shí)處理規(guī)范指標(biāo)超限問(wèn)題,及時(shí)排查、應(yīng)對(duì)儀器操作問(wèn)題,實(shí)時(shí)獲取預(yù)警信息。監(jiān)測(cè)數(shù)據(jù)全部實(shí)時(shí)記錄、計(jì)算并加密,保證了數(shù)據(jù)的原始性、準(zhǔn)確性。與服務(wù)端互聯(lián)方便了用戶(hù)及時(shí)對(duì)監(jiān)測(cè)點(diǎn)形變進(jìn)行分析,促進(jìn)了施工信息互通。軟件的預(yù)警機(jī)制聯(lián)合服務(wù)端的風(fēng)險(xiǎn)系統(tǒng)幫助監(jiān)測(cè)人員對(duì)事故預(yù)知,完善了施工安全機(jī)制。
目前本文水平位移監(jiān)測(cè)軟件已在某軌道交通工程中應(yīng)用,實(shí)際效果表明,該監(jiān)測(cè)終端軟件將施工現(xiàn)場(chǎng)測(cè)量?jī)x器觀(guān)測(cè)信息與服務(wù)端工程信息綜合在一起,提升了監(jiān)測(cè)作業(yè)效率,確保了監(jiān)測(cè)數(shù)據(jù)不落地,有效保證了監(jiān)測(cè)即時(shí)性和數(shù)據(jù)安全性。