<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è) > 嵌入式系統 > 設計應用 > 一種CAN總線(xiàn)高層通信協(xié)議的設計與實(shí)現

一種CAN總線(xiàn)高層通信協(xié)議的設計與實(shí)現

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

1 引言

本文引用地址:http://dyxdggzs.com/article/201609/303364.htm

can全稱(chēng)為controller area network,即控制器局域網(wǎng),由德國bosch公司最先提出,是國際上應用最廣泛的現場(chǎng)總線(xiàn)之一。最初can 被設計作為汽車(chē)環(huán)境中的通訊,在汽車(chē)電子控制裝置之間交換信息形成汽車(chē)電子控制網(wǎng)絡(luò )。由于其卓越的性能、極高的可靠性和低廉的價(jià)格現已廣泛應用于工業(yè)現場(chǎng)控制、醫療儀器等眾多領(lǐng)域[1][2]。

can協(xié)議是建立在osi 7層開(kāi)放互連參考模型基礎之上的。但can協(xié)議只定義了模型的最下面兩層:數據鏈路層和物理層,僅保證了節點(diǎn)間無(wú)差錯的數據傳輸。can的應用層協(xié)議必須 由can 用戶(hù)自行定義,或采用一些國際組織制訂的標準協(xié)議。應用最為廣泛的是devicenet和canopen,分別廣泛應用于過(guò)程控制和機電控制領(lǐng)域。但此類(lèi)協(xié)議一般結構比較復雜,更適合復雜大型系統的應用。筆者在研制一種基于can總線(xiàn)的分布式高頻開(kāi)關(guān)電源充電機系統的過(guò)程中設計了一種適合于小型控制系統的 can總線(xiàn)通信協(xié)議。

2 can的特點(diǎn)[3]

can 是一種多主方式的串行通訊總線(xiàn),基本設計規范要求有高的位速率、抗電磁干擾性,而且要能夠檢測出總線(xiàn)的任何錯誤。當信號傳輸距離達10km時(shí),can仍可 提供高達50kbps 的數據傳輸速率。

can具有十分優(yōu)越的特點(diǎn):

(1) 較低的成本與極高的總線(xiàn)利用率;

(2) 數據傳輸距離可長(cháng)達10km,傳輸速率可高達1mbps[7];

(3) 可靠的錯誤處理和檢錯機制,發(fā)送的信息遭到破壞后可自動(dòng)重發(fā);

(4) 節點(diǎn)在錯誤嚴重的情況下具有自動(dòng)退出總線(xiàn)的功能;

(5) 報文不包含源地址或目標地址,僅用標志符來(lái)指示功能信息和優(yōu)先級信息。

3 can的技術(shù)規范

(1) 幀類(lèi)型

在can總線(xiàn)中,有四種不同的幀類(lèi)型[4][5]:

·數據幀(data frame) 數據幀帶有應用數據;

· 遠程幀(remote frame) 通過(guò)發(fā)送遠程幀可以向網(wǎng)絡(luò )請求數據,啟動(dòng)其他資源節點(diǎn)傳送他們各自的數據,遠程幀包含6個(gè)不同的位域:幀起始、仲裁域、控制域、crc域、應答域、幀結尾。仲裁域中的rtr位的隱極性表示為遠程幀;

·錯誤幀(error frame)錯誤幀能夠報告每個(gè)節點(diǎn)的出錯,由兩個(gè)不同的域組成,第一個(gè)域是不同站提供的錯誤標志的疊加,第二個(gè)域是錯誤界定符;

·過(guò)載幀 (overload frame)如果節點(diǎn)的接收尚未準備好就會(huì )傳送過(guò)載幀,由兩個(gè)不同的域組成,第一個(gè)域是過(guò)載標志,第二個(gè)域是過(guò)載界定符。

(2) 數據幀結構

數據幀由以下7個(gè)不同的位域(bit field)組成:幀起始、仲裁域、控制域、數據域、crc域、應答域、幀結尾。其標準幀結構如表1所示:

表1 數據幀的結構[4]

·幀起始:標志幀的開(kāi)始,它由單個(gè)顯性位構成,在總線(xiàn)空閑時(shí)發(fā)送,在總線(xiàn)上產(chǎn)生同步作用。

·仲裁域: 由11位標識符(id10-id0)和遠程發(fā)送請求位(rtr)組成,rtr位為顯性表示該幀為數據幀,隱性表示該幀為遠程幀;標識符由高至低按次序發(fā)送,且前7位 (id10-id4)不能全為顯性位。標識符id用來(lái)描述數據的含義而不用于通信尋址,can總線(xiàn)的幀是沒(méi)有尋址功能的。標識符還用于決定報文的優(yōu)先權,id值越低優(yōu)先權越高,在競爭總線(xiàn)時(shí),優(yōu)先權高的報文優(yōu)先發(fā)送,優(yōu)先權低報文退出總線(xiàn)競爭。can總線(xiàn)競爭的算法效率很高,是一種非破壞性競爭。

· 控制域:為數據長(cháng)度碼 (dlc3-dlc0),表示數據域中數據的字節數,不得超過(guò)8。

·數據域:由被發(fā)送數據組成,數目與控制域中設定的字節 數相等,第一個(gè)字節的最高位首先被發(fā)送。其長(cháng)度在標準幀中不超過(guò)8個(gè)字節。

·crc域:包括crc(循環(huán)冗余碼校驗)序列(15位)和crc界定 符(1個(gè)隱性位),用于幀校驗。

l應答域:由應答間隙和應答界定符組成,共兩位;發(fā)送站發(fā)送兩個(gè)隱性位,接收站在應答間隙中發(fā)送顯性位。應答界定符必須是隱性位。

·幀結束:由7位隱性位組成。

4 自訂can協(xié)議

can的協(xié)議也可理解為應用層協(xié)議,是一種在現有的底層協(xié)議(物理層和數據鏈路層)之上實(shí)現的協(xié)議。由于充電機系統的結構比較簡(jiǎn)單,網(wǎng)絡(luò )規模也比較 小。因此我們自行制訂了一種簡(jiǎn)單而有效的高層通信協(xié)議。

技術(shù)規范can2.0a規定標準的數據幀有11位標識符,用戶(hù)可以自行規定其含義,將所需要的信息包含在內。在充電機系統中,每一個(gè)節點(diǎn)都有一個(gè)唯一的地址,地址碼和模塊一一對應,通過(guò)撥碼開(kāi)關(guān)設定,總線(xiàn)上數據的傳送也是根據地址進(jìn)行的。由于本系統規模較小,節點(diǎn)數少于32個(gè),因此為每個(gè)模塊分配一個(gè)5位 的地址碼,同一系統中地址碼不得重復,系統初始化時(shí)由外部引腳讀入。將標識符id9-id5定義為源地址,id4-id0定義為目的地址,本協(xié)議中從模塊 的目的地址全填0,表示數據是廣播數據,所有節點(diǎn)都可接收,主模塊中目的地址根據要進(jìn)行通信目的模塊的地址確定。本通信協(xié)議的數據幀格式詳見(jiàn)表2。

表2 數據幀格式

理論上源地址和目的地址的范圍都是0~31,但由于can協(xié)議中規定標識符前7位不能全為顯性位,所以源地址不能為31,這時(shí)實(shí)際節點(diǎn)只有31 個(gè) (0~30)。因此每個(gè)系統所含的模塊不超過(guò)31個(gè)。所以源地址和目的地址的范圍縮減到0~30。同時(shí)上位監控機也要占用一個(gè)地址,因此系統中的電源模塊 不超過(guò)30個(gè),設計時(shí)根據節點(diǎn)的優(yōu)先權高低從小到大分配節點(diǎn)地址。id10位定義為主模塊識別碼,該位主模塊為隱性位,從模塊為顯性位,以保證主模塊通信優(yōu)先。模塊的地址碼決定發(fā)送數據的優(yōu)先級。主模塊向總線(xiàn)發(fā)送的數據有兩種:一種是目的地址全部填0的廣播數據;另一種是包含特定目的地址的非廣播數據。

協(xié)議中一幀數據最多能傳送8個(gè)字節,對于充電機控制系統來(lái)說(shuō)已經(jīng)足夠用了,本系統只用到其中的前5個(gè)字節,其余3個(gè)節字可用于以后的擴展使用,因此未定義 多幀傳輸方式。

從模塊以廣播形式向總線(xiàn)發(fā)送數據,同時(shí)回收自己發(fā)送的數據,若檢測到所發(fā)送與所收到的數據不符,則立即重新發(fā)送上一幀數據。從模塊發(fā)送信息的順序由主模塊的發(fā)出的指令決定,以免在總線(xiàn)通信繁忙時(shí)優(yōu)先級較低的模塊始終得不到總線(xiàn)通信權。指令的發(fā)送順序按照各從模塊的地址順序進(jìn)行,即地址較低的從模塊首先獲得 指令,得以發(fā)送自己的地址碼和電流、溫度采樣值。如發(fā)生沖突,則由can控制器自動(dòng)根據模塊的優(yōu)先級調整發(fā)送順序,在can的底層協(xié)議中有完善的優(yōu)先級仲裁算法,因此應用層協(xié)議不必考慮此類(lèi)問(wè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>