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