基于vxworks的自治-遙控水下機器人半雙工通信軟件開發(fā)_第1頁
基于vxworks的自治-遙控水下機器人半雙工通信軟件開發(fā)_第2頁
基于vxworks的自治-遙控水下機器人半雙工通信軟件開發(fā)_第3頁
基于vxworks的自治-遙控水下機器人半雙工通信軟件開發(fā)_第4頁
基于vxworks的自治-遙控水下機器人半雙工通信軟件開發(fā)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于vxworks的自治-遙控水下機器人半雙工通信軟件開發(fā)

無人潛水器也被稱為水下機器人,它分為羅v承認逮捕(rov)和獨立水下機器人(auv)。ROV與水面母船用臍帶纜相連,臍帶纜既向下傳輸動力,又實時雙向傳輸控制信號(由母船至ROV)和采集數(shù)據(jù)(由ROV至母船)。而AUV與母船之間則沒有物理連接,完全依靠自身攜帶的動力以及機器的智能自主航行。自治-遙控水下機器人(ARV)的概念于2002年被提出,是一種新概念的水下機器人,它結(jié)合了AUV和ROV的特點。這種新型水下機器人具有兩種工作模式,既可以作為傳統(tǒng)的ROV使用又可作為AUV使用。目前,這種新型水下機器人的研究報道還很少,典型的有日本JEMSTEC公司研制的UROV水下機器人、美國WOODSHOLE海洋研究院研制的HROV水下機器人,國內(nèi)第一臺ARV是中科院沈陽自動化研究所研制的“SARV-A”水下機器人。2011年上海海事大學(xué)與中船702研究所合作,在已有“海箏一號”的基礎(chǔ)上,開發(fā)出“海箏二號”ARV水下機器人。本文重點介紹“海箏二號”通信系統(tǒng)的設(shè)計與研制。在已有VxWorks串口通信的研究中,大多數(shù)僅針對串口通信的基本配置實現(xiàn)其基本功能。而本文則在串口通信的基本使用方法之上,引入了互斥鎖機制,實現(xiàn)了半雙工通信。1數(shù)據(jù)傳輸電路考慮到ARV硬件系統(tǒng)的可靠性、實時性,采用VxWorks作為開發(fā)環(huán)境,數(shù)據(jù)傳輸采用RS-485串口通信方式。VxWorks是美國WindRiverSystem公司所推出的一個實時操作系統(tǒng),它支持幾乎所有現(xiàn)代市場上的嵌入式CPU,主要由以下部件組成。1內(nèi)核采用基于優(yōu)先級搶占方式,同時支持同優(yōu)先級任務(wù)間的分時間片調(diào)度。2i/o系統(tǒng)VxWorks提供了一個快速靈活的兼容ANSI的I/O系統(tǒng),包括UNIX標準的BasicI/O,BufferI/O以及POSIX標準的異步I/O。3這個系統(tǒng)是一個系統(tǒng)支持4種文件系統(tǒng):dosFs,rt11Fs,rawFs和tapeFs;支持在一個單獨VxWorks系統(tǒng)上同時并存幾個不同的文件系統(tǒng)。4網(wǎng)絡(luò)支持提供了對其他VxWorks系統(tǒng)和TCP/IP網(wǎng)絡(luò)系統(tǒng)的“透明”訪問。2rs-42接口電路設(shè)計ARV分為水面部分和水下部分,通過光纖進行通信,見圖1。ARV通過光端機來實現(xiàn)水面與水下的通信,主要配備了羅經(jīng)(附帶陀螺儀)、深度計等傳感器,以及水平推進器和垂直推進器控制系統(tǒng)。該ARV硬件系統(tǒng)采用基于PC/104平臺的嵌入式結(jié)構(gòu)設(shè)計,見圖2。嵌入式版提供了RS-232、RS-422、RS-485三種接口。RS-232雖然傳輸線少,配線簡單,但其最大傳輸距離短,與ARV的設(shè)計需要不符。RS-422能傳1200m,但只能采用四線制的全雙工通信。RS-485的傳輸距離也可達1200m,其可以采用四線制的全雙工通信,也能采用二線制的半雙工通信。考慮到ARV的實際設(shè)計需要,故采用RS-485二線制半雙工通信方式。為了實現(xiàn)可靠的長距離傳輸,采用光纖為傳播介質(zhì),在收發(fā)兩端各加一個光電轉(zhuǎn)換器,采用了傳播距離可達50km的單模光纖傳輸方式。整體硬件通信框圖見圖3。圖3中,水面控制臺與光端機A屬于水面部分,其與光端機A采用RS-485轉(zhuǎn)光纖連接。光端機A與光端機B通過單模光纖通信。光端機B及剩下的模塊屬于水下部分。光端機B與嵌入式板通過RS-485通信。嵌入式板則通過A/D、D/A、RS-232、模擬I/O、數(shù)字I/O分別與深度計、推進器、羅經(jīng)、監(jiān)測部件(如監(jiān)測電流、電壓的宇波模塊)、電源開關(guān)(包括ARV的供電總開關(guān)和推進器、LED燈等的開關(guān))等相連接。3些模塊的設(shè)計VxWorks支持多種啟動方式(軟盤啟動、U盤啟動、硬盤啟動、ROM啟動、網(wǎng)絡(luò)啟動)??紤]到程序需要不斷調(diào)試,故在開發(fā)過程中,采取FTP網(wǎng)絡(luò)啟動:以上位機作為服務(wù)器,嵌入式版作為客戶端,通過網(wǎng)線連接。具體細節(jié),見文獻。鑒于ARV的實時性、準確性要求,該嵌入式版中的核心控制軟件采用多線程、帶有緩沖存儲的架構(gòu),見圖4。圖4中,水面指水面控制臺,各部件指各設(shè)備(如羅經(jīng)、深度計、推進器等)。中間的ARV指嵌入式版,如圖2所示,ARV中的BufToArv和BufToSub分別指水面至ARV各部件的緩沖數(shù)據(jù)存儲區(qū)和ARV各部件至水面的緩沖數(shù)據(jù)存儲區(qū)。各箭頭指向是數(shù)據(jù)的流動方向。read、write分別指設(shè)備讀寫數(shù)據(jù)。recT和senT分別指接收和發(fā)送線程。pack和unpack分別指對數(shù)據(jù)按照協(xié)議進行打包和解包。操作系統(tǒng)主要有4種結(jié)構(gòu):模塊組合結(jié)構(gòu)、層次結(jié)構(gòu)、虛擬機結(jié)構(gòu)、客戶/服務(wù)器體系結(jié)構(gòu)??紤]到層次結(jié)構(gòu)的優(yōu)點,把整體局部化,各模塊之間的組織結(jié)構(gòu)和依賴關(guān)系清晰明了。鑒于開發(fā)ARV的系統(tǒng)復(fù)雜度,采取層次結(jié)構(gòu)即可。圖4可理解為圖5所示的層次結(jié)構(gòu)。圖5中,收發(fā)層對應(yīng)于圖4中的recT和SenT;讀寫層對應(yīng)于圖4中ARV與各部件之間的read和write。采用的收發(fā)格式協(xié)議見表1。其中,每個序號對應(yīng)1個字節(jié),每個bit對應(yīng)1位,bit0為最低位。水面計算機發(fā)送控制指令,以左尾推控制電壓,即第5、6個字節(jié)為例說明;ARV向水面計算機發(fā)送狀態(tài)信息,以航向角,即第9、10個字節(jié)為例說明。1控制器結(jié)構(gòu)分析推進器數(shù)據(jù)包括左主推、右主推、艏垂推、艉垂推控制電壓,輸入范圍為:-5V~+5V,程序?qū)⒃摂?shù)值除以5歸一化后,按以下協(xié)議解析。推進器數(shù)據(jù)幀格式通過兩位十六進制高低字節(jié)表示,bit15、bit7恒為零,bit14表示數(shù)據(jù)正負,0表示“+”,1表示“-”,其結(jié)構(gòu)見表2。表2中的高低字節(jié)數(shù)據(jù)是已經(jīng)歸一化以后的數(shù)據(jù),表中的數(shù)據(jù)轉(zhuǎn)換成十進制數(shù)是以-1~1來代表電機的驅(qū)動數(shù)據(jù),到下位機上時將其映射成0~4095,最后再將其轉(zhuǎn)換成-5~5V的點擊驅(qū)動電壓來控制推進器。推進器電壓可通過式(1)求得。|VPropeller|=∑i=813(value(i)*2i?13)+∑i=06(value(i)*2i?12)(1)|VΡropeller|=∑i=813(value(i)*2i-13)+∑i=06(value(i)*2i-12)(1)式中:value(i)=0或1,當value(14)=1時,VPropeller<0,當value(14)=0時,VPropeller>0。2其他位數(shù)據(jù)格式所謂羅經(jīng)數(shù)據(jù)即角度數(shù)據(jù),主要包括接收協(xié)議上的航向角、橫搖角、縱傾角等數(shù)據(jù)。范圍為0°~360°,精確到小數(shù)點后一位。以兩位高低字節(jié)十六進制數(shù)表示,程序?qū)南挛粰C接收到的十六進制數(shù)據(jù)格式轉(zhuǎn)換成0~360°的角度數(shù)據(jù)的格式,bit15、bit7、bit4恒為零,其他位數(shù)據(jù)格式見表3。表3中的數(shù)據(jù)是羅經(jīng)采集數(shù)據(jù)所編的協(xié)議,高字節(jié)是代表角度0~360°整數(shù)部分拆成的二進制表示,低字節(jié)所表示的是小數(shù)點后面一位的數(shù)據(jù),由于此數(shù)據(jù)只需要小數(shù)點后面一位就行了,所以只需用4位數(shù)字來組合即可。此外,與推進器數(shù)據(jù)類似,羅經(jīng)數(shù)據(jù)通過2進制求10進制數(shù)據(jù)可由式(2)求出。Datacompass=∑i=814(value(i)*2i?8)+∑i=78(value(i)*2i+2)+110*∑i=03(value(i)*2i)(2)Datacompass=∑i=814(value(i)*2i-8)+∑i=78(value(i)*2i+2)+110*∑i=03(value(i)*2i)(2)式中:value(i)=0或1。4rs-843常用的并發(fā)癥機制由于二線制的RS-485只能實現(xiàn)半雙工通信,故必須采用一種方式來實現(xiàn)對RS-485硬件的共享。常見的并發(fā)機制有鎖、信號量、消息隊列、管道等??紤]到RS-485在同一時間只能讀或者寫,即讀和寫不能同時發(fā)生,故采用互斥鎖來實現(xiàn)半雙工通信。4.1rs-843信號量控制函數(shù)在編程中,引入對象互斥鎖的概念,是為了保證共享數(shù)據(jù)操作的完整性(原子性)。每個對象都對應(yīng)于一個可稱為“互斥鎖”的標記,這個標記用來保證任一時刻,只能有一個線程占用該對象。VxWorks對于任務(wù)間的同步與通信提供了很好的支持。比如,VxWorks中有內(nèi)置的數(shù)據(jù)結(jié)構(gòu)SEM_ID,并提供了諸如semBCreate()、semMCreate()、semCCreate()、semDelete()、semTake()、semGive()、semFlush()信號量控制函數(shù),函數(shù)具體說明,請參閱文獻。為了實現(xiàn)RS-485的半雙工通信,在程序進行初始化的時候,創(chuàng)建一個SEM_IDsemMutex對象作為互斥信號量,并且調(diào)用semBCreate(SEM_Q_PRIORITY,SEM_FULL)對其進行初始化。之后,當讀寫(收發(fā))線程需要獨占RS-485硬件資源時,調(diào)用semTake(semMutex,WAIT_FOREVER)獲取該信號量;當讀寫(收發(fā))線程完成工作后,調(diào)用semGive(semMutex)釋放該信號量。讀寫(收發(fā))線程的流程圖,見圖6。(注意:這里所說的讀寫線程指的是圖5中水面與ARV之間的線程,而不是圖5中ARV與各部件之間的線程)。圖7中,左邊為發(fā)送(寫)線程,左邊為接收(讀)線程。打開讀文件,即以讀的方式打開文件(RS485串口);打開寫文件,即以寫的方式打開文件(RS485)。其中,需要特別說明的是,右邊讀進程中的讀文件采用的是阻塞方法,因為是半雙工通信,寫進程在讀進程完成前,不會占用其資源。4.2半雙工通信現(xiàn)狀及問題本程序采用的協(xié)議頭為“A”、“R”、“V”,發(fā)送線程每幀的長度相同。測試時,連接嵌入式版的顯示屏,見圖6,上位機啟動串口調(diào)試器。本程序的測試結(jié)果見表4。由表4可知,當發(fā)送周期為100ms,發(fā)送第20幀數(shù)據(jù)包的時候,程序就會接收到錯誤信息;當發(fā)送周期為180ms時,不會接收到錯誤信息,但是1501個數(shù)據(jù)包,會丟失1個。通信調(diào)試過程中遇到如下問題。1)讀串口開始及結(jié)束,當打開讀文件后,采用循環(huán)等待的接收方式,直到連續(xù)接收到協(xié)議頭“A”、“R”、“V”時,則認為串口接收開始并啟動計數(shù)器。當計數(shù)器值達到接收幀的長度時,關(guān)閉讀文件。2)通信數(shù)據(jù)的校驗,通過每幀的最后一個字節(jié)累加和進行校驗,校驗錯誤,則丟棄數(shù)據(jù)幀。3)任何設(shè)備,其中斷數(shù)量都是有限的,當多個設(shè)備使用同一個中斷向量時,就會產(chǎn)生中斷沖突。本文通過半雙工通信,使用二線制的RS-485通信僅占用一個中斷向量即可以完成接收和發(fā)送工作。在研發(fā)此ARV的過程中,因為硬件默認設(shè)置中,8個串口本身都采用了中斷5,所以產(chǎn)生了沖突。解決方法為,屏蔽掉未使用的串口中斷7;把羅經(jīng)使用的RS-232串口改為中斷7,問題得到解決。通信測試結(jié)果說明,采用半雙工通信時,當周期=180ms時,收發(fā)數(shù)據(jù)較準確;當周期=200ms時,收發(fā)數(shù)據(jù)更準確;當周期≤150ms時,收發(fā)數(shù)據(jù)出錯比較頻繁。故在ARV的實際開發(fā)中,采用周期為200ms

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論