<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 基于CAN總線(xiàn)的水下機器人執行節點(diǎn)設計與實(shí)現

基于CAN總線(xiàn)的水下機器人執行節點(diǎn)設計與實(shí)現

作者: 時(shí)間:2009-09-08 來(lái)源:網(wǎng)絡(luò ) 收藏

在設計一個(gè)基于的通信系統時(shí),確定標識符的分配非常重要,它關(guān)系到通訊網(wǎng)絡(luò )結構的合理性和傳輸效率的高低,是制定應用層協(xié)議的一個(gè)重要研究?jì)热?。本文?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/CAN">CAN2.0標準幀格式的基礎上,根據控制系統的需求特點(diǎn)制定了一個(gè)多幀傳輸的應用層協(xié)議。協(xié)議中將11位信息標識符按表1進(jìn)行分配。

標識符ID28-ID25定義為源地址,ID24-ID21定義為目的地址,這樣節點(diǎn)可以按優(yōu)先權高低由低向高分配地址,保證競爭中優(yōu)先權高的節點(diǎn)能先占用。相同目的/源地址的幀還可以通過(guò)標識符ID20-ID19來(lái)調整優(yōu)先權,ID18的值用來(lái)區分多幀傳輸中起始幀(1)/普通幀(0)。

在標識符分配中,一般保留一個(gè)地址作為數據廣播,另外不使用地址15,以避免標識符前7位全為隱性位(邏輯1)。因此協(xié)議可以滿(mǎn)足不多于14個(gè)節點(diǎn)的需求。


表1 CAN幀信息和標識碼定義

一般CAN的應用層協(xié)議習慣將流長(cháng)度、多幀索引等信息放在數據場(chǎng)中,但這樣每一幀都浪費了若干個(gè)字節。因此本文將多幀傳輸的相關(guān)信息作為起始幀發(fā)出,而有效數據作為普通幀隨后發(fā)出。起始幀的數據域結構見(jiàn)表2,傳輸號為本次多幀傳輸的序號,流長(cháng)度為本次數據傳輸的字節數。


表2 起始幀(ID18=1)的數據域

普通幀的數據域對用戶(hù)是透明的,可以根據需要任意安排使用。

總線(xiàn)上傳輸的信息可分為以下三類(lèi):(1)傳感器節點(diǎn)數據傳輸命令,傳送為保證機器人正常運動(dòng)所需要的傳感器信息,包括航行傳感器和任務(wù)傳感器等。(2)航跡控制命令。上述兩類(lèi)命令按照一定時(shí)鐘節拍發(fā)送到總線(xiàn)上,一般發(fā)送航跡命令的節拍要比發(fā)送傳感器數據的節拍慢。(3)特殊命令,例如出現緊急情況需要上浮等,此種命令是不定時(shí)發(fā)送的,發(fā)送的頻率也不是均勻的。

根據以上通信特點(diǎn),在滿(mǎn)足功能要求的條件下,為了簡(jiǎn)潔,協(xié)議規定命令均不超過(guò)8個(gè)字節,并使用2個(gè)字節來(lái)為命令編碼。節點(diǎn)間一次可能傳輸一個(gè)或多個(gè)命令。在本文制定的應用層協(xié)議中,命令通過(guò)普通幀傳輸。

表3列舉了普通幀的數據域結構,每個(gè)普通幀包含一個(gè)命令,其數據域前兩個(gè)字節為命令編碼,第三個(gè)字節存放本條命令的參數個(gè)數,后面為若干個(gè)參數的內容。


表3 普通幀(ID18=0)的數據域

CAN程序設計
CAN軟件設計主要包括初始化函數、接收處理函數、發(fā)送處理函數、中斷處理函數等。

CAN通信的初始化工作主要包括操作模式設定、驗收濾波器設置、總線(xiàn)定時(shí)、管腳配置和中斷設置等幾項工作。需要注意總線(xiàn)上各節點(diǎn)的波特率必須一致,另外P1.0(RXDC)和P1.1(TXDC)必須設置為準雙向模式。

CAN接收程序流程見(jiàn)圖4。中斷函數中負責接收CAN信息,并將對每個(gè)任務(wù)的描述及其所包含的命令插入隊列;而主循環(huán)中將各任務(wù)包含的命令從隊列取出,并且根據命令執行相應的運算或操作。使用隊列的好處是在執行命令的同時(shí)中斷函數還可以接收新的命令,避免了同時(shí)讀寫(xiě)通信緩沖區造成的沖突。

CAN的發(fā)送程序采用查詢(xún)方式,因為CAN總線(xiàn)本身提供了比較好的總線(xiàn)仲裁、錯誤檢測、錯誤標定和故障界定功能,發(fā)送程序的設計比較簡(jiǎn)單,這里不再過(guò)多贅述。


圖4 CAN接收處理程序

試驗與結論

執行節點(diǎn)的工作對象為小型自治測量型,低阻力流線(xiàn)型殼體,水中配成中性浮力,由一個(gè)三葉螺旋槳提供推力,水平舵和垂直舵各一對來(lái)控制航向與姿態(tài),技術(shù)指標見(jiàn)表4。

機器人先后完成了水上拖纜航行和無(wú)纜自治航行。試驗證明,本節點(diǎn)完全滿(mǎn)足自治水下機器人航行控制性能的高要求,并且具有實(shí)時(shí)性高、可靠性強、使用方便等優(yōu)點(diǎn)。在今后的工作中,還可以對執行節點(diǎn)做進(jìn)一步的改進(jìn),如更換高性能的微控制器,進(jìn)一步提高節點(diǎn)的處理速度;采用嵌入式操作系統來(lái)提高節點(diǎn)的實(shí)時(shí)處理能力,從而使節點(diǎn)具備更高性能。

表4 水下機器人技術(shù)指標

伺服電機相關(guān)文章:伺服電機工作原理



上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>