国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于VxWorks的自治-遙控水下機器人半雙工通信設計和實現

2013-06-12 06:54朱大奇
船海工程 2013年3期
關鍵詞:推進器線程串口

白 樺,史 進,朱大奇

(上海海事大學 水下機器人與智能系統(tǒng)實驗室,上海201306)

無人潛水器又稱水下機器人,它又分為有纜遙控潛水器(remotely operated vehicle,ROV)和自治水下機器人(autonomous underwater vehicle,AUV)。ROV與水面母船用臍帶纜相連,臍帶纜既向下傳輸動力,又實時雙向傳輸控制信號(由母船至ROV)和采集數據(由ROV至母船)。而AUV與母船之間則沒有物理連接,完全依靠自身攜帶的動力以及機器的智能自主航行[1-2]。

自治-遙控水下機器人(ARV)的概念于2002年被提出,是一種新概念的水下機器人,它結合了AUV和ROV的特點。這種新型水下機器人具有兩種工作模式,既可以作為傳統(tǒng)的ROV使用又可作為AUV使用。目前,這種新型水下機器人的研究報道還很少,典型的有日本JEMSTEC公司研制的UROV[3-4]水下機器人、美國WOODSHOLE海洋研究院研制的HROV[5]水下機器人,國內第一臺ARV是中科院沈陽自動化研究所研制的“SARV-A”水下機器人[6-7]。2011年上海海事大學與中船702研究所合作,在已有“海箏一號”的基礎上,開發(fā)出“海箏二號”ARV水下機器人。本文重點介紹“海箏二號”通信系統(tǒng)的設計與研制。在已有VxWorks串口通信的研究中[8-9],大多數僅針對串口通信的基本配置實現其基本功能。而本文則在串口通信的基本使用方法之上,引入了互斥鎖機制,實現了半雙工通信。

1 Works系統(tǒng)介紹

考慮到ARV硬件系統(tǒng)的可靠性、實時性,采用VxWorks作為開發(fā)環(huán)境,數據傳輸采用RS-485串口通信方式。

VxWorks是美國Wind River System公司所推出的一個實時操作系統(tǒng),它支持幾乎所有現代市場上的嵌入式CPU,主要由以下部件組成。

1)內核。采用基于優(yōu)先級搶占方式,同時支持同優(yōu)先級任務間的分時間片調度。

2)I/O系統(tǒng)。VxWorks提供了一個快速靈活的兼容ANSI的I/O系統(tǒng),包括UNIX標準的Basic I/O,Buffer I/O以及POSIX標準的異步I/O。

3)文件系統(tǒng)。支持4種文件系統(tǒng):dosFs,rt11Fs,rawFs和tapeFs;支持在一個單獨VxWorks系統(tǒng)上同時并存幾個不同的文件系統(tǒng)。

4)網絡支持。提供了對其他VxWorks系統(tǒng)和TCP/IP網絡系統(tǒng)的“透明”訪問。

2 硬件架構

ARV分為水面部分和水下部分,通過光纖進行通信,見圖1。

圖1 ARV硬件架構

ARV通過光端機來實現水面與水下的通信,主要配備了羅經(附帶陀螺儀)、深度計等傳感器,以及水平推進器和垂直推進器控制系統(tǒng)。該ARV硬件系統(tǒng)采用基于PC/104平臺的嵌入式結構設計,見圖2。

圖2 ARV嵌入式版

嵌入式版提供了RS-232、RS-422、RS-485三種接口。RS-232雖然傳輸線少,配線簡單,但其最大傳輸距離短,與ARV的設計需要不符。RS-422能傳1 200 m,但只能采用四線制的全雙工通信。RS-485的傳輸距離也可達1 200 m,其可以采用四線制的全雙工通信,也能采用二線制的半雙工通信。考慮到ARV的實際設計需要,故采用RS-485二線制半雙工通信方式。為了實現可靠的長距離傳輸,采用光纖為傳播介質,在收發(fā)兩端各加一個光電轉換器,采用了傳播距離可達50 km的單模光纖傳輸方式。整體硬件通信框圖見圖3。

圖3 ARV硬件通信框圖

圖3 中,水面控制臺與光端機A屬于水面部分,其與光端機A采用RS-485轉光纖連接。光端機A與光端機B通過單模光纖通信。光端機B及剩下的模塊屬于水下部分。光端機B與嵌入式板通過RS-485通信。嵌入式板則通過A/D、D/A、RS-232、模擬I/O、數字I/O分別與深度計、推進器、羅經、監(jiān)測部件(如監(jiān)測電流、電壓的宇波模塊)、電源開關(包括ARV的供電總開關和推進器、LED燈等的開關)等相連接。

3 軟件構架

VxWorks支持多種啟動方式(軟盤啟動、U盤啟動、硬盤啟動、ROM啟動、網絡啟動)。考慮到程序需要不斷調試,故在開發(fā)過程中,采取FTP網絡啟動:以上位機作為服務器,嵌入式版作為客戶端,通過網線連接。具體細節(jié),見文獻[10]。

鑒于ARV的實時性、準確性要求,該嵌入式版中的核心控制軟件采用多線程、帶有緩沖存儲的架構,見圖4。

圖4 ARV軟件架構圖

圖4 中,水面指水面控制臺,各部件指各設備(如羅經、深度計、推進器等)。中間的ARV指嵌入式版,如圖2所示,ARV中的BufToArv和BufToSub分別指水面至ARV各部件的緩沖數據存儲區(qū)和ARV各部件至水面的緩沖數據存儲區(qū)。各箭頭指向是數據的流動方向。read、write分別指設備讀寫數據。recT和senT分別指接收和發(fā)送線程。pack和unpack分別指對數據按照協(xié)議進行打包和解包。

操作系統(tǒng)主要有4種結構:模塊組合結構、層次結構、虛擬機結構、客戶/服務器體系結構[11]。考慮到層次結構的優(yōu)點,把整體局部化,各模塊之間的組織結構和依賴關系清晰明了。鑒于開發(fā)ARV的系統(tǒng)復雜度,采取層次結構即可。圖4可理解為圖5所示的層次結構。

圖5 ARV軟件層次結構

圖5中,收發(fā)層對應于圖4中的recT和SenT;讀寫層對應于圖4中ARV與各部件之間的read和write。采用的收發(fā)格式協(xié)議見表1。

表1 ARV收發(fā)協(xié)議格式

其中,每個序號對應1個字節(jié),每個bit對應1位,bit 0為最低位。水面計算機發(fā)送控制指令,以左尾推控制電壓,即第5、6個字節(jié)為例說明;ARV向水面計算機發(fā)送狀態(tài)信息,以航向角,即第9、10個字節(jié)為例說明。

1)推進器數據格式。推進器數據包括左主推、右主推、艏垂推、艉垂推控制電壓,輸入范圍為:-5 V~+5 V,程序將該數值除以5歸一化后,按以下協(xié)議解析。

推進器數據幀格式通過兩位十六進制高低字節(jié)表示,bit15、bit7恒為零,bit14表示數據正負,0表示“+”,1表示“-”,其結構見表2。

表2中的高低字節(jié)數據是已經歸一化以后的數據,表中的數據轉換成十進制數是以-1~1來代表電機的驅動數據,到下位機上時將其映射成0~4 095,最后再將其轉換成-5~5 V的點擊驅動電壓來控制推進器。

推進器電壓可通過式(1)求得。

式中:value(i)=0或1,當value(14)=1時,

2)羅經數據格式。所謂羅經數據即角度數據,主要包括接收協(xié)議上的航向角、橫搖角、縱傾角等數據。范圍為0°~360°,精確到小數點后一位。以兩位高低字節(jié)十六進制數表示,程序將從下位機接收到的十六進制數據格式轉換成0~360°的角度數據的格式,bit15、bit7、bit4恒為零,其他位數據格式見表3。

表3中的數據是羅經采集數據所編的協(xié)議,高字節(jié)是代表角度0~360°整數部分拆成的二進制表示,低字節(jié)所表示的是小數點后面一位的數據,由于此數據只需要小數點后面一位就行了,所以只需用4位數字來組合即可。

此外,與推進器數據類似,羅經數據通過2進制求10進制數據可由式(2)求出。

式中:value(i)=0或1。

表2 推進器數據格式

表3 羅經數據格式

4 半雙工通信實現

由于二線制的RS-485只能實現半雙工通信,故必須采用一種方式來實現對RS-485硬件的共享。常見的并發(fā)機制有鎖、信號量、消息隊列、管道等。考慮到RS-485在同一時間只能讀或者寫,即讀和寫不能同時發(fā)生,故采用互斥鎖來實現半雙工通信。

4.1 串口通信

在編程中,引入對象互斥鎖的概念,是為了保證共享數據操作的完整性(原子性)。每個對象都對應于一個可稱為“互斥鎖”的標記,這個標記用來保證任一時刻,只能有一個線程占用該對象。

VxWorks對于任務間的同步與通信提供了很好的支持。比如,VxWorks中有內置的數據結構SEM_ID,并提供了諸如semBCreate()、semMCreate()、semCCreate()、semDelete()、semTake()、semGive()、semFlush()信號量控制函數,函數具體說明,請參閱文獻[10]。

為了實現RS-485的半雙工通信,在程序進行初始化的時候,創(chuàng)建一個SEM_ID semMutex對象作為互斥信號量,并且調用semBCreate(SEM_Q_PRIORITY,SEM_FULL)對其進行初始化。之后,當讀寫(收發(fā))線程需要獨占RS-485硬件資源時,調用semTake(semMutex,WAIT_FOREVER)獲取該信號量;當讀寫(收發(fā))線程完成工作后,調用semGive(semMutex)釋放該信號量。讀寫(收發(fā))線程的流程圖,見圖6。(注意:這里所說的讀寫線程指的是圖5中水面與ARV之間的線程,而不是圖5中ARV與各部件之間的線程)。

圖6 ARV嵌入式版連接屏幕顯示

圖7 中,左邊為發(fā)送(寫)線程,左邊為接收(讀)線程。打開讀文件,即以讀的方式打開文件(RS485串口);打開寫文件,即以寫的方式打開文件(RS485)。其中,需要特別說明的是,右邊讀進程中的讀文件采用的是阻塞方法,因為是半雙工通信,寫進程在讀進程完成前,不會占用其資源。

圖7 互斥鎖機制

4.2 通信測試

本程序采用的協(xié)議頭為“A”、“R”、“V”,發(fā)送線程每幀的長度相同。測試時,連接嵌入式版的顯示屏,見圖6,上位機啟動串口調試器。

本程序的測試結果見表4。

表4 ARV半雙工通信測試結果

由表4可知,當發(fā)送周期為100 ms,發(fā)送第20幀數據包的時候,程序就會接收到錯誤信息;當發(fā)送周期為180 ms時,不會接收到錯誤信息,但是1 501個數據包,會丟失1個。通信調試過程中遇到如下問題。

1)讀串口開始及結束,當打開讀文件后,采用循環(huán)等待的接收方式,直到連續(xù)接收到協(xié)議頭“A”、“R”、“V”時,則認為串口接收開始并啟動計數器。當計數器值達到接收幀的長度時,關閉讀文件。

2)通信數據的校驗,通過每幀的最后一個字節(jié)累加和進行校驗,校驗錯誤,則丟棄數據幀。

3)任何設備,其中斷數量都是有限的,當多個設備使用同一個中斷向量時,就會產生中斷沖突。本文通過半雙工通信,使用二線制的RS-485通信僅占用一個中斷向量即可以完成接收和發(fā)送工作。在研發(fā)此ARV的過程中,因為硬件默認設置中,8個串口本身都采用了中斷5,所以產生了沖突。解決方法為,屏蔽掉未使用的串口中斷7;把羅經使用的RS-232串口改為中斷7,問題得到解決。

通信測試結果說明,采用半雙工通信時,當周期=180 ms時,收發(fā)數據較準確;當周期=200 ms時,收發(fā)數據更準確;當周期≤150 ms時,收發(fā)數據出錯比較頻繁。故在ARV的實際開發(fā)中,采用周期為200 ms。

5 結束語

本文介紹了上海海事大學與中船702研究所合作開發(fā)的ARV的系統(tǒng)組成及通信技術。分別從ARV的硬件架構、控制軟件的軟件架構,半雙工通信的實現以及軟件測試結果進行了詳述。從測試結果不難看出,當控制程序周期在200 ms左右時,嵌入式版能較好地收發(fā)數據,符合ARV操控的實時性要求。其中基于互斥鎖機制實現的半雙工通信算法,對其他水下機器人開發(fā)均有參考價值。目前的ARV系統(tǒng)主要是一基本功能平臺,下一步將進行水下狀態(tài)控制開發(fā)、水下安全避障與軌跡跟蹤控制研究等。

[1]馮正平.國外自治水下機器人發(fā)展現狀綜述[J].魚雷技術,2005,13(1):5-9.

[2]劉芙蓉,陳 輝.自主式水下潛器研究開發(fā)綜述[J].艦船科學技術,2008,30(5):21-23.

[3]MURASHIMA T,AOKI T,TSUKIOKA S,et al.Thin cable system for ROV and AUV in JAMSTEC[C]∥Proceedings of IEEE/MTS OCEANS2003,September 13-19,San Diego,CA,1999:2695-2700.

[4]AOKI T,TSUKIOKA S,HATTORI M,et al.Development of expendable optical fiber cable ROV”UROV”[C]∥OCEANS92,1992:813-818.

[5]BOWEN A D,YOERGER D R,WHITCOMB L L,et al.Exploring the deepest depths:preliminary design of a novel light-tethered hybrid ROV for global science in extreme environments[J].Marine Technology Society Journal,2004,38(2):92-101.

[6]LI Yiping,LI Shuo,ZHANG Aiqun.Recent research and development of ARV in SIA[C]∥Sixth International Symposium on Underwater Technology UT2009,Wuxi,China,April 2009:87-90.

[7]WUBaoju,LI Shuo,ZENGJunbao,et al.ARV navigation and control system at arctic research[C]∥OCEANS 2009,MTS/IEEE Biloxi-Marine Technology for Our Future:Global and Local Challenges,Shenyang,Chinese,2009:1-6.

[8]張 軍.基于Vxworks實時操作系統(tǒng)的串口通信程序設計與實現[J].微計算機信息,2006,22(5):98-100.

[9]王立新,馬勝賢.實時操作系統(tǒng)VxWorks下多串口通訊設計[J].信息技術,2010,34(8):73-79.

[10]張 楊,于銀濤.VxWorks內核、設備驅動與BSP開發(fā)詳解[M].2版.北京:人民郵電出版社,2011.

[11]尤晉元,史美林.Windows操作系統(tǒng)原理[M].北京:機械工業(yè)出版社,2001.

猜你喜歡
推進器線程串口
ROV平導管推進器水動力性能模擬研究
實時操作系統(tǒng)mbedOS 互斥量調度機制剖析
基于NPORT的地面綜合氣象觀測系統(tǒng)通信測試方法及故障處理
基于CFD扇翼推進器敞水性能預報分析
基于EM9000工控板高性能雙串口通信模型設計與實現
基于國產化環(huán)境的線程池模型研究與實現
發(fā)揮考核“指揮棒”“推進器”作用
船舶電子設備串口數據的軟件共享方法
計算機中的多線程問題
瓦錫蘭推出全新一代推進器產品系列