CAN總線協(xié)議
CAN總線發(fā)展
控制器局域網(wǎng)CAN( Controller Area Network)屬于現(xiàn)場(chǎng)總線的范疇,是一種有效支持分布式控制系統(tǒng)的串行通信網(wǎng)絡(luò)。是由德國(guó)博世公司在20世紀(jì)80年代專門為汽車行業(yè)開發(fā)的一種串行通信總線。由于其高性能、高可靠性以及獨(dú)特的設(shè)計(jì)而越來越受到人們的重視,被廣泛應(yīng)用于諸多領(lǐng)域。而且能夠檢測(cè)出產(chǎn)生的任何錯(cuò)誤。當(dāng)信號(hào)傳輸距離達(dá)到10km時(shí),CAN仍可提供高達(dá)50kbit/s的數(shù)據(jù)傳輸速率。由于CAN總線具有很高的實(shí)時(shí)性能和應(yīng)用范圍,從位速率最高可達(dá)1Mbps的高速網(wǎng)絡(luò)到低成本多線路的50Kbps網(wǎng)絡(luò)都可以任意搭配。因此,CAN己經(jīng)在汽車業(yè)、航空業(yè)、工業(yè)控制、安全防護(hù)等領(lǐng)域中得到了廣泛應(yīng)用。 隨著CAN總線在各個(gè)行業(yè)和領(lǐng)域的廣泛應(yīng)用,對(duì)其的通信格式標(biāo)準(zhǔn)化也提出了更嚴(yán)格的要求。1991年CAN總線技術(shù)規(guī)范(Version2.0)制定并發(fā)布。該技術(shù)規(guī)范共包括A和B兩個(gè)部分。其中2.0A給出了CAN報(bào)文標(biāo)準(zhǔn)格式,而2.0B給出了標(biāo)準(zhǔn)的和擴(kuò)展的兩種格式。美國(guó)的汽車工程學(xué)會(huì)SAE在2000年提出了J1939協(xié)議,此后該協(xié)議成為了貨車和客車中控制器局域網(wǎng)的通用標(biāo)準(zhǔn)。
相關(guān)組織
依據(jù)國(guó)際標(biāo)準(zhǔn)化組織/開放系統(tǒng)互連(International Standardi-zation Organization/Open SystemInterconnection,ISO/OSI)參考模型,CAN的ISO/OSI參考模型的層結(jié)構(gòu)如圖7-6所示。
概念和特征
下面對(duì)CAN協(xié)議的媒體訪問控制子層的一些概念和特征做如下說明: (1)報(bào)文(Message)總線上的數(shù)據(jù)以不同報(bào)文格式發(fā)送,但長(zhǎng)度受到限制。當(dāng)總線空閑時(shí),任何一個(gè)網(wǎng)絡(luò)上的節(jié)點(diǎn)都可以發(fā)送報(bào)文。 (2)信息路由(Information Routing)在CAN中,節(jié)點(diǎn)不使用任何關(guān)于系統(tǒng)配置的報(bào)文,比如站地址,由接收節(jié)點(diǎn)根據(jù)報(bào)文本身特征判斷是否接收這幀信息。因此系統(tǒng)擴(kuò)展時(shí),不用對(duì)應(yīng)用層以及任何節(jié)點(diǎn)的軟件和硬件作改變,可以直接在CAN中增加節(jié)點(diǎn)。 (3)標(biāo)識(shí)符(Identifier) 要傳送的報(bào)文有特征標(biāo)識(shí)符(是數(shù)據(jù)幀和遠(yuǎn)程幀的一個(gè)域),它給出的不是目標(biāo)節(jié)點(diǎn)地址,而是這個(gè)報(bào)文本身的特征。信息以廣播方式在網(wǎng)絡(luò)上發(fā)送,所有節(jié)點(diǎn)都可以接收到。節(jié)點(diǎn)通過標(biāo)識(shí)符判定是否接收這幀信息。 (4)數(shù)據(jù)一致性應(yīng)確保報(bào)文在CAN里同時(shí)被所有節(jié)點(diǎn)接收或同時(shí)不接收,這是配合錯(cuò)誤處理和再同步功能實(shí)現(xiàn)的。 (5)位傳輸速率不同的CAN系統(tǒng)速度不同,但在一個(gè)給定的系統(tǒng)里,位傳輸速率是唯一的,并且是固定的。 (6)優(yōu)先權(quán) 由發(fā)送數(shù)據(jù)的報(bào)文中的標(biāo)識(shí)符決定報(bào)文占用總線的優(yōu)先權(quán)。標(biāo)識(shí)符越小,優(yōu)先權(quán)越高。 (7)遠(yuǎn)程數(shù)據(jù)請(qǐng)求(Remote Data Request) 通過發(fā)送遠(yuǎn)程幀,需要數(shù)據(jù)的節(jié)點(diǎn)請(qǐng)求另一節(jié)點(diǎn)發(fā)送相應(yīng)的數(shù)據(jù)?;貞?yīng)節(jié)點(diǎn)傳送的數(shù)據(jù)幀與請(qǐng)求數(shù)據(jù)的遠(yuǎn)程幀由相同的標(biāo)識(shí)符命名。 (8)仲裁(Arbitration) 只要總線空閑,任何節(jié)點(diǎn)都可以向總線發(fā)送報(bào)文。如果有兩個(gè)或兩個(gè)以上的節(jié)點(diǎn)同時(shí)發(fā)送報(bào)文,就會(huì)引起總線訪問碰撞。通過使用標(biāo)識(shí)符的逐位仲裁可以解決這個(gè)碰撞。仲裁的機(jī)制確保了報(bào)文和時(shí)間均不損失。當(dāng)具有相同標(biāo)識(shí)符的數(shù)據(jù)幀和遠(yuǎn)程幀同時(shí)發(fā)送時(shí),數(shù)據(jù)幀優(yōu)先于遠(yuǎn)程幀。在仲裁期間,每一個(gè)發(fā)送器都對(duì)發(fā)送位的電平與被監(jiān)控的總線電平進(jìn)行比較。如果電平相同,則這個(gè)單元可以繼續(xù)發(fā)送,如果發(fā)送的是“隱性”電平而監(jiān)視到的是“顯性”電平,那么這個(gè)單元就失去了仲裁,必須退出發(fā)送狀態(tài)。 (9)總線狀態(tài) 總線有“顯性”和“隱性”兩個(gè)狀態(tài),“顯性”對(duì)應(yīng)邏輯“0”,“隱性”對(duì)應(yīng)邏輯“1”?!帮@性”狀態(tài)和“隱性”狀態(tài)與為“顯性”狀態(tài),所以兩個(gè)節(jié)點(diǎn)同時(shí)分別發(fā)送“0”和“1”時(shí),總線上呈現(xiàn)“0”。CAN總線采用二進(jìn)制不歸零(NRZ)編碼方式,所以總線上不是“0”,就是“1”。但是CAN協(xié)議并沒有具體定義這兩種狀態(tài)的具體實(shí)現(xiàn)方式,如圖7-7所示。 (10)故障界定(Confinement) CAN節(jié)點(diǎn)能區(qū)分瞬時(shí)擾動(dòng)引起的故障和永久性故障。故障節(jié)點(diǎn)會(huì)被關(guān)閉。 (11)應(yīng)答接收節(jié)點(diǎn)對(duì)正確接收的報(bào)文給出應(yīng)答,對(duì)不一致報(bào)文進(jìn)行標(biāo)記。 (12)CAN通訊距離最大是10公里(設(shè)速率為5Kbps),或最大通信速率為1Mbps(設(shè)通信距離為40米)。 ?。?3)CAN總線上的節(jié)點(diǎn)數(shù)可達(dá)110個(gè)。通信介質(zhì)可在雙絞線,同軸電纜,光纖中選擇。 ?。?4)報(bào)文是短幀結(jié)構(gòu),短的傳送時(shí)間使其受干擾概率低,CAN有很好的效驗(yàn)機(jī)制,這些都保證了CAN通信的可靠性。
編輯本段2 CAN總線協(xié)議內(nèi)容
CAN總線的物理層是將ECU連接至總線的驅(qū)動(dòng)電路。ECU的總數(shù)將受限于總線上的電氣負(fù)荷。物理層定義了物理數(shù)據(jù)在總線上各節(jié)點(diǎn)間的傳輸過程,主要是連接介質(zhì)、線路電氣特性、數(shù)據(jù)的編碼/解碼、位定時(shí)和同步的實(shí)施標(biāo)準(zhǔn)。
總線競(jìng)爭(zhēng)的原則
BOSCH CAN基本上沒有對(duì)物理層進(jìn)行定義,但基于CAN的ISO標(biāo)準(zhǔn)對(duì)物理層進(jìn)行了定義。設(shè)計(jì)一個(gè)CAN系統(tǒng)時(shí),物理層具有很大的選擇余地,但必須保證CAN協(xié)議中媒體訪問層非破壞性位仲裁的要求,即出現(xiàn)總線競(jìng)爭(zhēng)時(shí),具有較高優(yōu)先權(quán)的報(bào)文獲取總線競(jìng)爭(zhēng)的原則,所以要求物理層必須支持CAN總線中隱性位和顯性位的狀態(tài)特征。在沒有發(fā)送顯性位時(shí),總線處于隱性狀態(tài),空閑時(shí),總線處于隱性狀態(tài);當(dāng)有一個(gè)或多個(gè)節(jié)點(diǎn)發(fā)送顯性位,顯性位覆蓋隱性位,使總線處于顯性狀態(tài)。 在此基礎(chǔ)上,物理層主要取決于傳輸速度的要求。從物理結(jié)構(gòu)上看,CAN節(jié)點(diǎn)的構(gòu)成如圖7-8所示。在CAN中,物理層從結(jié)構(gòu)上可分為三層:分別是物理信號(hào)層(Physical Layer Signaling,PLS)、物理介質(zhì)附件(Physical MediaAttachment,PMA)層和介質(zhì)從屬接口(Media Dependent:Inter-face,MDI)層。其中PLS連同數(shù)據(jù)鏈路層功能由CAN控制器完成,PMA層功能由CAN收發(fā)器完成,MDI層定義了電纜和連接器的特性。目前也有支持CAN的微處理器內(nèi)部集成了CAN控制器和收發(fā)器電路,如MC68HC908GZl6。PMA和MDI兩層有很多不同的國(guó)際或國(guó)家或行業(yè)標(biāo)準(zhǔn),也可自行定義,比較流行的是ISOll898定義的高速CAN發(fā)送/接收器標(biāo)準(zhǔn)。
節(jié)點(diǎn)數(shù)量
理論上,CAN總線上的節(jié)點(diǎn)數(shù)幾乎不受限制,可達(dá)到2000個(gè),實(shí)際上受電氣特性的限制,最多只能接100多個(gè)節(jié)點(diǎn)。
CAN的數(shù)據(jù)鏈路層
CAN的數(shù)據(jù)鏈路層是其核心內(nèi)容,其中邏輯鏈路控制(Logical Link control,LLC)完成過濾、過載通知和管理恢復(fù)等功能,媒體訪問控制(Medium Access control,MAC)子層完成數(shù)據(jù)打包/解包、幀編碼、媒體訪問管理、錯(cuò)誤檢測(cè)、錯(cuò)誤信令、應(yīng)答、串并轉(zhuǎn)換等功能。這些功能都是圍繞信息幀傳送過程展開的。
編輯本段3 CAN總線的報(bào)文傳輸和結(jié)構(gòu)
報(bào)文類型
在CAN2.0B的版本協(xié)議中有兩種不同的幀格式,不同之處為標(biāo)識(shí)符域的長(zhǎng)度不同,含有l(wèi)l位標(biāo)識(shí)符的幀稱之為標(biāo)準(zhǔn)幀,而含有29位標(biāo)識(shí)符的幀稱為擴(kuò)展幀。如CAN1.2版本協(xié)議所描述,兩個(gè)版本的標(biāo)準(zhǔn)數(shù)據(jù)幀格式和遠(yuǎn)程幀格式分別是等效的,而擴(kuò)展格式是CAN2.0B協(xié)議新增加的特性。為使控制器設(shè)計(jì)相對(duì)簡(jiǎn)單,并不要求執(zhí)行完全的擴(kuò)展格式,對(duì)于新型控制器而言,必須不加任何限制的支持標(biāo)準(zhǔn)格式。但無(wú)論是哪種幀格式,在報(bào)文傳輸時(shí)都有以下四種不同類型的幀:
幀類型
(1)數(shù)據(jù)幀(Data ) 數(shù)據(jù)幀將數(shù)據(jù)從發(fā)送器傳輸?shù)浇邮掌鳌? (2)遠(yuǎn)程幀(Remote ) 總線單元發(fā)出遠(yuǎn)程幀,請(qǐng)求發(fā)送具有同一標(biāo)識(shí)符的數(shù)據(jù)幀。 (3)錯(cuò)誤幀(Error ) 任何單元檢測(cè)到總線錯(cuò)誤就發(fā)出錯(cuò)誤幀。 (4)過載幀(Overload ) 過載幀用在相鄰數(shù)據(jù)幀或遠(yuǎn)程幀之間提供附加的延時(shí)。 數(shù)據(jù)幀或遠(yuǎn)程幀與前一個(gè)幀之間都會(huì)有一個(gè)隔離域,即幀間間隔。數(shù)據(jù)幀和遠(yuǎn)程幀可以使用標(biāo)準(zhǔn)幀及擴(kuò)展幀兩種格式。
編輯本段4 CAN總線應(yīng)用領(lǐng)域
CAN總線最初是德國(guó)BOSCH為汽車行業(yè)的監(jiān)測(cè),控制而設(shè)計(jì)的?,F(xiàn)已應(yīng)用到鐵路、交通、國(guó)防、工程、工業(yè)機(jī)械、紡織、農(nóng)用機(jī)械、數(shù)控、醫(yī)療器械機(jī)器人、樓宇、安防等方面。文章來源于:百度百科