馬 驥,李一平,李 碩
1 概述
以往的水下機器人控制系統,特別是自治水下機器人控制系統,多采用集中式控制方式來(lái)實(shí)現機器人的控制,即由主控計算機實(shí)現對所有傳感器和設備的數據采集及控制,因而主控計算機的任務(wù)繁重,效率也低。一旦主控計算機出現故障,整個(gè)控制系統將會(huì )癱瘓,系統的可靠性低;由于主控計算機的數據采集通道以及水密電纜的芯數是有限的,很難隨意的增加設備或傳感器,因此系統的可擴展性差。隨著(zhù)電子技術(shù)、傳感器技術(shù)、通訊技術(shù)的發(fā)展,水下機器人能搭載的傳感器越來(lái)越多,完成的使命也日趨復雜,傳統的集中式控制方法無(wú)法滿(mǎn)足水下機器人控制系統發(fā)展的需求。
針對控制系統研究及其它關(guān)鍵技術(shù)研究工作,新近筆者完成了水下機器人試驗平臺的研制工作。試驗平臺具有開(kāi)放式的架構,可任意增加或減少所攜帶的傳感器和設備,進(jìn)行各種關(guān)鍵技術(shù)研究。其控制系統采用基于RS-485總線(xiàn)的分布式水下機器人控制系統,系統實(shí)現了模塊化、靈活性和開(kāi)放性。
采用總線(xiàn)形式的分布式控制方法具有模塊化、可擴展性強、組態(tài)靈活、可靠性高等優(yōu)點(diǎn)。在水下機器人控制系統中引入分布式控制還有如下特點(diǎn):
可以將主控計算機的一部分任務(wù)分散到各個(gè)網(wǎng)絡(luò )節點(diǎn)來(lái)實(shí)現,主控計算機任務(wù)減輕;
一旦主控計算機出現故障,故障應急節點(diǎn)可以直接對機器人進(jìn)行控制,使其浮出水面,這樣就極大的提高了水下機器人的安全性;
各節點(diǎn)間的信息交換是直接進(jìn)行的,無(wú)須通過(guò)主控計算機這道瓶頸,大大提高了信息交互的效率,而且也提高了系統的可靠性;
增減傳感器或設備節點(diǎn)時(shí),只須將其接入總線(xiàn)網(wǎng)絡(luò )中,無(wú)須對主控計算機硬件進(jìn)行更改;
采用總線(xiàn)網(wǎng)絡(luò )形式后每個(gè)節點(diǎn)的連線(xiàn)只有電源線(xiàn)和數據線(xiàn),大大減少了水密電纜的數量和芯數,也大大減少了水密接插頭漏水和線(xiàn)路故障的概率。
當前控制總線(xiàn)技術(shù)的發(fā)展速度很快,種類(lèi)亦很多,應用較廣的有:RS-485總線(xiàn)、CAN總線(xiàn)、FF總線(xiàn)、Profibus總線(xiàn)、LONWORKS總線(xiàn)等。由這些總線(xiàn)組成的控制網(wǎng)絡(luò )各有特色。RS-485總線(xiàn)具有結構簡(jiǎn)單、組網(wǎng)容易、造價(jià)低廉等優(yōu)點(diǎn),已經(jīng)在工業(yè)控制中得到了廣泛應用,也適用于組成水下機器人分布式控制系統。
2 基于RS-485總線(xiàn)的水下機器人控制系統結構
圖1為水下機器人試驗平臺控制系統結構框圖??刂葡到y由若干功能節點(diǎn)組成,每個(gè)功能節點(diǎn)都具有RS-485接口,這些節點(diǎn)連接在一起構成了試驗平臺的RS-485網(wǎng)絡(luò )。
圖1 水下機器人試驗平臺控制系統結構
試驗平臺的RS-485網(wǎng)絡(luò )由一個(gè)主控節點(diǎn)和多個(gè)分節點(diǎn)組成。主控節點(diǎn)采用體積小、功耗低的PC/104總線(xiàn)計算機,主要完成水下機器人的運動(dòng)控制、路徑規劃、使命執行、數據記錄等任務(wù)。而RS-485網(wǎng)絡(luò )的各分節點(diǎn)主要完成數據采集、設備控制、電機驅動(dòng)、硬件故障檢測、漏水檢測等任務(wù),每個(gè)分節點(diǎn)的控制都是由AT90系列單片機(AVR單片機)來(lái)實(shí)現的,具有體積小、功耗低、靈活方便、系統易擴展等優(yōu)點(diǎn),每個(gè)節點(diǎn)在RS-485網(wǎng)絡(luò )上都有一個(gè)唯一的地址供識別。RS-485網(wǎng)絡(luò )的最大節點(diǎn)數為128,對水下機器人的控制系統來(lái)說(shuō)是足夠的。
3 RS-485網(wǎng)絡(luò )的硬件組成
水下機器人RS-485網(wǎng)絡(luò )的硬件主要由主節點(diǎn)(自動(dòng)駕駛計算機)和各個(gè)分節點(diǎn)(AVR單片機節點(diǎn))組成。
主節點(diǎn)由自動(dòng)駕駛計算機和RS-485網(wǎng)卡組成。其結構如圖2所示。
圖2 主節點(diǎn)結構
RS-485網(wǎng)卡的主要功能為:
實(shí)現RS-232與RS-485之間的硬件電平轉換;
實(shí)現自動(dòng)駕駛計算機串口低波特率(33.6Kbps)與RS-485網(wǎng)絡(luò )高波特率(250Kbps)的轉換;
具有發(fā)送和接收9位地址字節能力;
具有線(xiàn)路偵聽(tīng)和自動(dòng)避障功能,并通過(guò)握手信號與自動(dòng)駕駛計算機接口。
圖3 電機控制節點(diǎn)硬件原理框圖
RS-485網(wǎng)絡(luò )分節點(diǎn)的硬件主要由AVR單片機、RS-485驅動(dòng)以及外圍控制電路等組成。圖3是電機控制節點(diǎn)的硬件原理框圖。圖中的AVR單片機需要控制多個(gè)電機的啟停及運轉,并檢測電機電流、電壓以及密封艙的溫度、漏水等信號,這些信息通過(guò)RS-485網(wǎng)絡(luò )與自動(dòng)駕駛計算機節點(diǎn)進(jìn)行交互。
4 RS-485網(wǎng)絡(luò )通訊協(xié)議
RS-485分布式數據采集和控制網(wǎng)絡(luò )與其他計算機網(wǎng)絡(luò )相似,采用分層結構設計,以降低軟件設計的復雜程度,使其可讀性和可維護性更強。其底層協(xié)議是為更高層協(xié)議提供特定的服務(wù),而屏蔽其服務(wù)的實(shí)現細節。根據OSI的7層標準網(wǎng)絡(luò )體系結構模型,結合水下機器人數據采集與控制網(wǎng)絡(luò )中數據量小、實(shí)時(shí)性強的特點(diǎn),采用其結構模型中的3層:物理層、數據鏈路層和應用層。
(1) 物理層采用RS-485的電氣特性,利用平衡差分信號來(lái)傳輸數據。
(2) 數據鏈路層接受應用層來(lái)的數據,并進(jìn)行處理打包,產(chǎn)生校驗碼,按一定格式組成數據幀進(jìn)行傳輸;同時(shí),接收來(lái)自底層的數據,對數據進(jìn)行校驗、解包,轉化成應用層能夠識別的數據。
數據鏈路層所傳輸的幀格式為:
目的地址表示由哪個(gè)節點(diǎn)來(lái)接收此幀數據,可以由一個(gè)節點(diǎn)接收,也可以由若干個(gè)節點(diǎn)同時(shí)接收;源地址指明了此幀數據的來(lái)源;信息長(cháng)度是本幀信息的字節數;信息類(lèi)型指明了本幀信息的用途,是命令還是信息、是否需要返回響應數據等;信息0~信息n是具體的數據,采用二進(jìn)制碼形式,1路模擬量占用2個(gè)字節,8路開(kāi)關(guān)量占用1個(gè)字節;數據幀的最后字節為校驗和。
目的地址字節的數據長(cháng)度為9位,而其余字節的數據長(cháng)度為8位,這樣分節點(diǎn)只有在接收到符合自己地址的信息后才接收數據,從而避免了AVR單片機串口接收數據時(shí)造成的頻繁中斷。
例如電機控制節點(diǎn)的信息幀內容有:打開(kāi)/關(guān)閉電機、各個(gè)電機的輸入給定值、電機運行狀態(tài)、電機故障狀態(tài)、漏水檢測狀態(tài)、電機電流、PWM艙溫度、電機工作電壓等。
(3) 應用層接收數據鏈路層送來(lái)的數據,同時(shí)向數據鏈路層發(fā)送數據。在主計算機節點(diǎn)的QNX實(shí)時(shí)操作系統中封裝了應用層的庫函數接口,這樣上層程序可以直接操作底層的設備,而不必關(guān)心具體的硬件細節以及通訊協(xié)議。例如想獲得當前羅盤(pán)數據,只需調用函數get_tcm2_compass()即可。
5 RS-485網(wǎng)絡(luò )通訊方式
水下機器人試驗平臺的RS-485網(wǎng)絡(luò )采用主節點(diǎn)輪巡和分節點(diǎn)自主發(fā)送相結合的方式,具有通訊線(xiàn)路偵聽(tīng)、自動(dòng)避障等功能。
各分節點(diǎn)在正常時(shí)采用觸發(fā)機制的通訊方式,即主節點(diǎn)向分節點(diǎn)發(fā)出命令,分節點(diǎn)根據命令進(jìn)行響應,這樣主節點(diǎn)可以方便的調度對各分節點(diǎn)進(jìn)行采樣的周期以及是否對某一暫時(shí)不使用的節點(diǎn)進(jìn)行采樣,避免幾個(gè)節點(diǎn)同時(shí)向網(wǎng)絡(luò )發(fā)送數據造成網(wǎng)絡(luò )阻塞和非實(shí)時(shí)性,這樣可以精確的保證通信的實(shí)時(shí)性并且提高了效率。
為了保證水下機器人的安全,網(wǎng)絡(luò )中的各分節點(diǎn)應具有自主發(fā)送功能,即在水下密封艙漏水、電壓異常、密封艙溫度壓力異常等緊急情況下,應及時(shí)向主節點(diǎn)報告;另外,兩個(gè)分節點(diǎn)之間如果要進(jìn)行信息交換,可以通過(guò)線(xiàn)路偵聽(tīng),待線(xiàn)路空閑時(shí)再傳送數據,跳過(guò)了主控計算機這道瓶頸;當主控計算機死機或故障時(shí),具有應急功能的分節點(diǎn)可以與電機驅動(dòng)節點(diǎn)直接通信,控制機器人的上浮運動(dòng),待機器人浮出水面后,無(wú)線(xiàn)電模塊直接接收GPS模塊的位置信息并向母船發(fā)送。要實(shí)現上述功能,主節點(diǎn)和各分節點(diǎn)RS-485接口電路應具有通訊線(xiàn)路偵聽(tīng)和自動(dòng)避障功能,具體實(shí)現方法:某節點(diǎn)在發(fā)送數據前首先檢測RS-485網(wǎng)絡(luò )上是否有數據,如果檢測到網(wǎng)絡(luò )上沒(méi)有數據時(shí),先發(fā)送一個(gè)地址字節,同時(shí)檢查其接收的字節與發(fā)送的字節是否一致,如一致則繼續發(fā)送,如不一致,說(shuō)明其它節點(diǎn)也在發(fā)送數據,造成了數據沖突,這時(shí)可以停止發(fā)送,延時(shí)隨機的一小段時(shí)間再進(jìn)行上述的步驟,實(shí)際應用表明,當RS-485網(wǎng)絡(luò )的波特率為250Kbps時(shí),網(wǎng)絡(luò )運行順暢,未出現過(guò)網(wǎng)絡(luò )阻塞現象。
6 應用效果
本文所述的基于RS-485網(wǎng)絡(luò )的分布式水下機器人控制系統,在試驗平臺上實(shí)現并已投入使用,經(jīng)水池試驗應用,證明所設計的水下機器人RS-485網(wǎng)絡(luò )性能穩定、工作可靠、指令響應速度快,在故障、漏水等應急情況下能迅速采取措施,浮出水面并發(fā)送位置信息,完全滿(mǎn)足水下機器人自治航行的實(shí)時(shí)性和高可靠性要求。
參考文獻:
[1] 陽(yáng)憲惠. 現場(chǎng)總線(xiàn)技術(shù)及其應用[M]. 北京: 清華大學(xué)出版社, 1999.