朱國力,聶冬冬
(華中科技大學 機械科學與工程學院,湖北 武漢 430074)
近年來隨著智能手機、智能平板的興起,移動通信工具的操作系統(tǒng)平臺趨于統(tǒng)一,其計算能力不斷提升,通信功能不斷增強,這使得利用手機與工業(yè)設備進行便捷的無線通信成為可能。如果能將工業(yè)現(xiàn)場施工人員的智能手機與所操作的工業(yè)設備相結合,則可以在不增加現(xiàn)場設備投資的情況下,在工業(yè)現(xiàn)場實現(xiàn)對設備進行監(jiān)控,并在設備發(fā)生故障時及時報警且通過移動通信網(wǎng)絡將監(jiān)控數(shù)據(jù)傳回遠程數(shù)據(jù)中心。在隧道掘進過程中,需要一套穩(wěn)定可靠的姿態(tài)測量系統(tǒng)來指導隧道的掘進方向,本文主要討論隧道掘進的作業(yè)現(xiàn)場中,移動通信工具在輔助隧道掘進系統(tǒng)進行有效的調(diào)試、監(jiān)控、遠程診斷過程中發(fā)揮的作用。
該測量系統(tǒng)中,上位機為運行Windows操作系統(tǒng)的工控機,安置在操作室中;下位機為安裝固定在掘進機器盾體上的嚴格密封的精密測量激光標靶,其中運算控制單元為運行嵌入式Linux系統(tǒng)的ARM板,上位機與下位機通過線纜連接進行通信。
由于上位機與下位機之間距離較遠,它們之間的通信主要是傳達測量命令與回送測量結果,因此為了實現(xiàn)與測量系統(tǒng)的核心——激光標靶進行便捷的監(jiān)控調(diào)試以及更多的數(shù)據(jù)交互,需要一種可以近距離地與激光標靶進行數(shù)據(jù)無線通信的設備。
Android[1]是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要用于移動設備,如智能手機和平板電腦。由于Android豐富的硬件占有率以及系統(tǒng)平臺的開放性和統(tǒng)一性,APP開發(fā)速度快成本低,因此Android智能手機非常適合作為本測量系統(tǒng)中手持設備的載體。在掘進機器運行時測量控制人員可以通過手上的智能手機實時地查看到掘進機器的姿態(tài);當發(fā)生故障時可以及時對故障進行有效定位,并將記錄數(shù)據(jù)保存下來及時通過手機網(wǎng)絡傳給遠程數(shù)據(jù)中心。調(diào)試人員也可以通過智能手機獲得更大的權限,對標靶的各種數(shù)據(jù)進行查看、修改、采集等。測量系統(tǒng)中各終端之間的通信如圖1所示。
圖1 測量系統(tǒng)中各終端之間的通信
隨著移動信息科技的高速發(fā)展和互聯(lián)網(wǎng)大潮的來臨,相繼誕生了眾多的短距離無線通信協(xié)議和標準,有廣泛使用的無線局域網(wǎng)802.11x(Wifi)、藍牙通信(Bluetooth)、紅外數(shù)據(jù)通信(IrDa)以及一些在特定領域具有很強發(fā)展?jié)摿Φ男录夹g,如zigBee、UWB、NFC等。常用無線通信協(xié)議在傳輸速度、通信距離、安全性和功耗方面的比較見表1。
表1 常用無線通信協(xié)議比較
目前安卓智能手機和平板一般都支持藍牙和無線局域網(wǎng)兩種無線通信方式,最新出的部分設備支持NFC,基于該解決方案的實用性,本無線通信協(xié)議應該在藍牙與無線局域網(wǎng)二者中選擇其一。
藍牙與無線局域網(wǎng)是兩種完全不同的無線通信方式。藍牙技術實現(xiàn)的是點對點網(wǎng)絡,不需要固定的基礎設施和接入點就能臨時快速自動組成移動網(wǎng)絡。網(wǎng)路中任何節(jié)點都具有報文轉(zhuǎn)發(fā)能力,節(jié)點間的通信允許經(jīng)過多個中間節(jié)點的轉(zhuǎn)發(fā)到達目的節(jié)點,節(jié)點可以隨時進出網(wǎng)絡,具有很強的移動性。而無線局域網(wǎng)協(xié)議應用于組件相對固定的無線局域網(wǎng)絡,其對網(wǎng)路基礎設施的要求較高,終端出入無線網(wǎng)路都有一定的網(wǎng)路開銷,但是其網(wǎng)絡覆蓋距離長、速度快。此外這兩種無線通信技術在通信的安全性、可靠性和功耗成本等方面也有不同。
(1)可靠性:藍牙通信數(shù)據(jù)包小,調(diào)頻快,通信持續(xù)時間短,增強了信號傳輸?shù)姆€(wěn)定性和抗干擾能力。另外,藍牙技術還可以對信號進行錯誤校正,進一步增強了信號的可靠性。而無線局域網(wǎng)調(diào)頻慢,數(shù)據(jù)包大,傳輸時間長,容易受到外來信號的干擾,因此藍牙比無線局域網(wǎng)穩(wěn)定性更好。
(2)安全性:藍牙技術的認證與加密服務由連接層提供,認證采用口令—應答方式,其基帶部分從物理層為用戶提供保護盒信息保密機制;而無線局域網(wǎng)采用WEP加密,WEP存在諸多漏洞,其安全效能不足,極易遭到破解或者攔截,因此藍牙相對更為安全。
(3)功耗與成本:無線局域網(wǎng)的射頻和基帶協(xié)議較為復雜,實現(xiàn)成本高,而藍牙芯片價格則更加低廉。無線局域網(wǎng)的硬件功耗相對較高,散熱和硬件體積決定需要較大的容納空間,而藍牙模塊則可以內(nèi)置到電子設備,甚至集成到電子主板上。另外,藍牙無數(shù)據(jù)傳輸時能以極低的功耗待機,遠遠低于無線局域網(wǎng)功耗。
本測量系統(tǒng)中與無線終端的通信需要具有較高的安全性和穩(wěn)定性,傳輸時間短,功耗低,數(shù)據(jù)分組透明,但對數(shù)據(jù)的傳輸速率和無線網(wǎng)覆蓋范圍要求不高。所以藍牙技術更加適合本測量系統(tǒng)中的通信。
在選定藍牙無線通信技術后,需要進一步考慮怎么在激光標靶和Android手機之間建立可靠的藍牙連接。激光標靶中的處理器硬件平臺是定制的工業(yè)級Arm開發(fā)板,操作系統(tǒng)平臺是裁剪過的微型Linux,該硬件平臺有RJ45網(wǎng)口、RS232/TTL串口、USB主從口與外界通信。由于該開發(fā)板無板載無線通信接口,也沒有相應的無線模塊供直接選用,而重新定制一塊開發(fā)板無論對于開發(fā)難度還是經(jīng)濟成本都較大,所以需要在現(xiàn)有接口基礎上進行模塊轉(zhuǎn)接以實現(xiàn)藍牙通信[2]。選配適當?shù)乃{牙模塊,利用板載的串口實現(xiàn)藍牙通信,而手機端則使用 Android(2.0以上)BluetoothSocket創(chuàng)建一個SPP(UUID:00001101-0000-1000-8000-00805F9B34FB)服務,以實現(xiàn)虛擬的藍牙串口,從而可以與板載藍牙模塊實現(xiàn)基于藍牙傳輸?shù)拇谕ㄐ拧?/p>
藍牙模塊選擇嵌入式藍牙串口模塊HC-06,工作在自動連接模式下,作為從機等待主機的搜索連接,自動根據(jù)事先設定的參數(shù)進行響應。本系統(tǒng)采用CSR主流藍牙芯片,藍牙V2.0協(xié)議標準,具有良好的兼容性,內(nèi)置藍牙天線,發(fā)射功率為Class2,靈敏度可達-80dBm,兼容RS232和TTL的三線串口電平,其有效通信距離達到10m,建立連接后可以無障礙全雙工使用,支持豐富的AT指令對其參數(shù)進行設置,易于實現(xiàn)權限控制,且體積小巧,貼片工藝良好,可以輕易植入到測量系統(tǒng)的標靶中。
通信模型如圖2所示,HC-06模塊與測量設備開發(fā)板通過RS232連接,從板載電源取電,通過其藍牙芯片,將RS232信號電平轉(zhuǎn)換成藍牙無線信號。Andriod手機的藍牙硬件與 HC-06配對,通過Andriod提供的SPP服務,客戶端軟件能很好地利用藍牙硬件與測量設備進行應用層的通信[3,4]。
客戶端軟件為使用JAVA編寫的基于Android系統(tǒng)的APK程序,它能與藍牙模塊建立可靠的連接,能提供良好的命令發(fā)送與信息顯示窗口、自定義的命令按鈕以及數(shù)據(jù)保存?zhèn)浞莨δ堋?/p>
在通信建立過程中,Android手機客戶端程序主動搜索并連接SPP(Serial Port Protocol)協(xié)議設備——HC-06藍牙模塊。通信連接建立流程如下:
(1)使用RegisterReceiver方法注冊一個BroadcastReceiver來接收系統(tǒng)和應用中的廣播,獲取藍牙狀態(tài),搜索SPP設備。
(2)使用BlueAdatper進行SPP設備搜索。
(3)BroadcastReceiver的 OnReceiveSPPData()方法獲取已經(jīng)存入到搜索列表中藍牙設備的信息(MAC,名稱RSSI等)。
(4)將設備的 MAC地址作為唯一主鍵,建立BluetoothDevice對象。
(5)由BluetoothDevice對象衍生出Bluetooth-Socket接口,通過SOCKET來讀寫創(chuàng)建的虛擬設備。
(6)安卓操作系統(tǒng)非常完善地支持SPP服務(UUID:00001101-0000-1000-8000-00805F9B34FB),使 用 createRfcommSocketToServiceRecord()方法將BluetoothSocket連接到SPP服務,并在BluetoothSocket啟用SPP服務。
(7)啟動SPP服務成功后進行連接,并捕獲和處理異常。
圖2 通信模型
藍牙通信過程中的狀態(tài)主要有未連接狀態(tài)、連接中狀態(tài)、活躍狀態(tài)和低耗能狀態(tài)。在藍牙通信建立連接后,會在活躍狀態(tài)和低耗能狀態(tài)之間互相轉(zhuǎn)換,當有數(shù)據(jù)傳輸時,手機藍牙設備馬上建立數(shù)據(jù)通道傳輸數(shù)據(jù);若長時間沒有數(shù)據(jù)流傳輸時,則會自動進入通信保持狀態(tài)。如手機藍牙設備離開通信覆蓋區(qū)域或者藍牙通信關閉時,則藍牙模塊會自動斷開連接并進入待機狀態(tài)等待下次重新連接。狀態(tài)轉(zhuǎn)換如圖3所示。
圖3 狀態(tài)轉(zhuǎn)換
在Connect Success之后,就可以使用Bluetooth-Socket的getInputStream()方法讀取藍牙設備數(shù)據(jù),使用getOutputStream()方法向藍牙設備發(fā)送數(shù)據(jù),以實現(xiàn)與藍牙串口模塊的發(fā)送與接收。為了在一個獨立線程中實現(xiàn)良好的讀寫操作,對藍牙設備循環(huán)讀取串口緩沖區(qū),接收數(shù)據(jù),并顯示在接收控件中。在發(fā)送命令時,通過getInputStream()寫串口發(fā)送命令。
駐留程序是在嵌入式Linux中的一段C語言編寫代碼,為保證其獨立性與響應的實時性,采用獨立進程或者線程實現(xiàn)。駐留程序需要和測量程序進行大量的數(shù)據(jù)共享,所以駐留程序作為測量程序中獨立調(diào)度的線程,同時又能與其共享數(shù)據(jù),是一種很好的解決辦法。
駐留程序的基本功能包括權限控制、指令檢查、指令響應、報告結果和報告異常等。手機客戶端通過指令對測量設備端進行查詢設置等操作,測量設備端循環(huán)監(jiān)測設備狀態(tài),一旦發(fā)現(xiàn)有異常便主動向手機端報告。這種主從的通信結構可以很好地實現(xiàn)所需的功能,且結構簡單、實現(xiàn)容易。駐留程序運行流程如圖4所示。駐留程序隨主程序啟動后自行完成初始化,然后循環(huán)對藍牙設備所對應的串口進行讀取,一旦讀取到數(shù)據(jù)則檢測數(shù)據(jù)是否為合法的可執(zhí)行命令,同時核對當前登錄的用戶是否具有執(zhí)行該命令的權限,如果都通過,則進入命令執(zhí)行階段。相應的命令主要有以下幾類:權限申請(用戶登錄)、狀態(tài)讀取、參數(shù)設置、回傳數(shù)據(jù)和執(zhí)行系統(tǒng)命令。根據(jù)命令不同,對執(zhí)行結果的處理也不同,執(zhí)行完成之后進入一段0.2s的休眠和系統(tǒng)狀態(tài)自動檢測過程,如果發(fā)現(xiàn)有異常,則主動報告給手機端,接著又開始循環(huán)讀取串口數(shù)據(jù)。
圖4 駐留程序運行流程
本文所討論的利用現(xiàn)已普及到Andriod手機和工業(yè)設備,可進行穩(wěn)定可靠的藍牙無線通信進而對其進行調(diào)試監(jiān)控,非常適用于隧道掘進等這種空間狹小、線纜繁多且無法連接互聯(lián)網(wǎng)絡的地下作業(yè)現(xiàn)場。該方法已經(jīng)在實驗和實踐中得到了很好的檢驗,可以在不增加設備成本的前提下,使設備的監(jiān)控調(diào)試變得更加輕松便捷,且具備豐富的拓展性,具有一定的實踐意義。
[1] 張元亮.Andriod開發(fā)應用實戰(zhàn)詳解[M].北京:中國鐵道出版社,2011.
[2] 李鑫.基于ARM、藍牙通信的心電采集系統(tǒng)的設計[D].西安:西北工業(yè)大學,2007:48-50.
[3] 彭述清,王恩永,苗愛敏.基于藍牙技術和GSM網(wǎng)的遠程數(shù)據(jù)采集[J].信息技術,200(5):7-9.
[4] 周明發(fā),王治森,董伯麟.無線通信在機器人及數(shù)控機床中的應用[J].制造業(yè)自動化,2006(9):58-64.