• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于VxWorks的自治-遙控水下機(jī)器人半雙工通信設(shè)計(jì)和實(shí)現(xiàn)

    2013-06-12 06:54:40朱大奇
    船海工程 2013年3期
    關(guān)鍵詞:光端機(jī)羅經(jīng)推進(jìn)器

    白 樺,史 進(jìn),朱大奇

    (上海海事大學(xué) 水下機(jī)器人與智能系統(tǒng)實(shí)驗(yàn)室,上海201306)

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

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

    1 Works系統(tǒng)介紹

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

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

    1)內(nèi)核。采用基于優(yōu)先級(jí)搶占方式,同時(shí)支持同優(yōu)先級(jí)任務(wù)間的分時(shí)間片調(diào)度。

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

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

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

    2 硬件架構(gòu)

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

    圖1 ARV硬件架構(gòu)

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

    圖2 ARV嵌入式版

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

    圖3 ARV硬件通信框圖

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

    3 軟件構(gòu)架

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

    鑒于ARV的實(shí)時(shí)性、準(zhǔn)確性要求,該嵌入式版中的核心控制軟件采用多線程、帶有緩沖存儲(chǔ)的架構(gòu),見圖4。

    圖4 ARV軟件架構(gòu)圖

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

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

    圖5 ARV軟件層次結(jié)構(gòu)

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

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

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

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

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

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

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

    式中:value(i)=0或1,當(dāng)value(14)=1時(shí),

    2)羅經(jīng)數(shù)據(jù)格式。所謂羅經(jīng)數(shù)據(jù)即角度數(shù)據(jù),主要包括接收協(xié)議上的航向角、橫搖角、縱傾角等數(shù)據(jù)。范圍為0°~360°,精確到小數(shù)點(diǎn)后一位。以兩位高低字節(jié)十六進(jìn)制數(shù)表示,程序?qū)南挛粰C(jī)接收到的十六進(jìn)制數(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ù)部分拆成的二進(jìn)制表示,低字節(jié)所表示的是小數(shù)點(diǎn)后面一位的數(shù)據(jù),由于此數(shù)據(jù)只需要小數(shù)點(diǎn)后面一位就行了,所以只需用4位數(shù)字來組合即可。

    此外,與推進(jìn)器數(shù)據(jù)類似,羅經(jīng)數(shù)據(jù)通過2進(jìn)制求10進(jìn)制數(shù)據(jù)可由式(2)求出。

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

    表2 推進(jìn)器數(shù)據(jù)格式

    表3 羅經(jīng)數(shù)據(jù)格式

    4 半雙工通信實(shí)現(xiàn)

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

    4.1 串口通信

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

    VxWorks對(duì)于任務(wù)間的同步與通信提供了很好的支持。比如,VxWorks中有內(nèi)置的數(shù)據(jù)結(jié)構(gòu)SEM_ID,并提供了諸如semBCreate()、semMCreate()、semCCreate()、semDelete()、semTake()、semGive()、semFlush()信號(hào)量控制函數(shù),函數(shù)具體說明,請(qǐng)參閱文獻(xiàn)[10]。

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

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

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

    圖7 互斥鎖機(jī)制

    4.2 通信測(cè)試

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

    本程序的測(cè)試結(jié)果見表4。

    表4 ARV半雙工通信測(cè)試結(jié)果

    由表4可知,當(dāng)發(fā)送周期為100 ms,發(fā)送第20幀數(shù)據(jù)包的時(shí)候,程序就會(huì)接收到錯(cuò)誤信息;當(dāng)發(fā)送周期為180 ms時(shí),不會(huì)接收到錯(cuò)誤信息,但是1 501個(gè)數(shù)據(jù)包,會(huì)丟失1個(gè)。通信調(diào)試過程中遇到如下問題。

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

    2)通信數(shù)據(jù)的校驗(yàn),通過每幀的最后一個(gè)字節(jié)累加和進(jìn)行校驗(yàn),校驗(yàn)錯(cuò)誤,則丟棄數(shù)據(jù)幀。

    3)任何設(shè)備,其中斷數(shù)量都是有限的,當(dāng)多個(gè)設(shè)備使用同一個(gè)中斷向量時(shí),就會(huì)產(chǎn)生中斷沖突。本文通過半雙工通信,使用二線制的RS-485通信僅占用一個(gè)中斷向量即可以完成接收和發(fā)送工作。在研發(fā)此ARV的過程中,因?yàn)橛布J(rèn)設(shè)置中,8個(gè)串口本身都采用了中斷5,所以產(chǎn)生了沖突。解決方法為,屏蔽掉未使用的串口中斷7;把羅經(jīng)使用的RS-232串口改為中斷7,問題得到解決。

    通信測(cè)試結(jié)果說明,采用半雙工通信時(shí),當(dāng)周期=180 ms時(shí),收發(fā)數(shù)據(jù)較準(zhǔn)確;當(dāng)周期=200 ms時(shí),收發(fā)數(shù)據(jù)更準(zhǔn)確;當(dāng)周期≤150 ms時(shí),收發(fā)數(shù)據(jù)出錯(cuò)比較頻繁。故在ARV的實(shí)際開發(fā)中,采用周期為200 ms。

    5 結(jié)束語

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

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

    [2]劉芙蓉,陳 輝.自主式水下潛器研究開發(fā)綜述[J].艦船科學(xué)技術(shù),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實(shí)時(shí)操作系統(tǒng)的串口通信程序設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006,22(5):98-100.

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

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

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

    猜你喜歡
    光端機(jī)羅經(jīng)推進(jìn)器
    基于CFD扇翼推進(jìn)器敞水性能預(yù)報(bào)分析
    磁羅經(jīng)北極高緯海區(qū)航向誤差分析與補(bǔ)償
    船海工程(2021年1期)2021-03-02 05:32:02
    船上磁羅經(jīng)自差表相關(guān)要求
    中國船檢(2020年10期)2020-11-07 09:56:38
    淺談野戰(zhàn)光端機(jī)應(yīng)用及改進(jìn)意見
    新生代(2018年20期)2018-11-13 21:01:21
    發(fā)揮考核“指揮棒”“推進(jìn)器”作用
    隨機(jī)游走對(duì)羅經(jīng)方位對(duì)準(zhǔn)的精度影響分析
    粒子群算法優(yōu)化的捷聯(lián)羅經(jīng)初始對(duì)準(zhǔn)方法
    光端機(jī)的創(chuàng)新發(fā)展與應(yīng)用
    讓黨建成為信仰播種機(jī)和工作推進(jìn)器
    高速公路多功能復(fù)用光端機(jī)的升級(jí)改造
    吉木萨尔县| 会泽县| 达拉特旗| 承德市| 旬邑县| 台中市| 石楼县| 咸阳市| 金昌市| 桐城市| 永登县| 新津县| 遵义县| 普陀区| 山阳县| 禹州市| 荥经县| 文水县| 枝江市| 鲁甸县| 铜山县| 张掖市| 昔阳县| 东海县| 沙坪坝区| 姚安县| 双鸭山市| 辰溪县| 天全县| 昭通市| 台江县| 福州市| 务川| 弋阳县| 石河子市| 星子县| 泸西县| 鄂托克前旗| 普格县| 容城县| 建湖县|