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