控制器局域網(wǎng) (CAN) 總線由博世于 20 世紀(jì) 80 年代開發(fā),是工業(yè)和汽車應(yīng)用中常用的通信協(xié)議。它的開發(fā)是為了改善電子控制單元 (ECU) 之間的數(shù)據(jù)交換,從而提高車輛的系統(tǒng)效率。1993 年,CAN 被納入工業(yè)和汽車應(yīng)用中作為國際標(biāo)準(zhǔn)通信系統(tǒng) ISO 11898。
它是一種基于消息的協(xié)議,最初設(shè)計(jì)用于汽車內(nèi)的多路電線以節(jié)省銅纜,但它也用于許多其他環(huán)境。
它是一種通信方法,允許車輛系統(tǒng)和設(shè)備相互通信,從汽車的立體聲音響到 ABS 系統(tǒng)。CAN 總線是對等 ECU 和其他設(shè)備之間交換指令的媒介。
CAN總線基本原理
控制器局域網(wǎng) (CAN) 總線按照分散式網(wǎng)絡(luò)原理運(yùn)行,網(wǎng)絡(luò)上的所有節(jié)點(diǎn)(或設(shè)備)傳輸數(shù)據(jù)的能力都是平等的。這與中央主設(shè)備控制通信的傳統(tǒng)網(wǎng)絡(luò)模型不同。
CAN總線數(shù)據(jù)傳輸
在CAN網(wǎng)絡(luò)中,任何節(jié)點(diǎn)都可以在總線空閑時(shí)傳輸數(shù)據(jù)。該數(shù)據(jù)以幀的形式發(fā)送,其中包含正在傳輸?shù)男畔⒁约坝糜阱e誤檢查和識別的附加數(shù)據(jù)。
CAN 總線按照“廣播”原理運(yùn)行,這意味著所有節(jié)點(diǎn)都會接收所有傳輸。然后每個(gè)節(jié)點(diǎn)根據(jù) CAN 幀中的標(biāo)識符決定是忽略數(shù)據(jù)還是接受數(shù)據(jù)。該標(biāo)識符不是源地址或目標(biāo)地址,而是指示消息內(nèi)容的標(biāo)簽。這意味著多個(gè)節(jié)點(diǎn)可以接收和處理相同的消息,這在多個(gè)系統(tǒng)可能需要相同數(shù)據(jù)的汽車應(yīng)用中特別有用。這也意味著特定節(jié)點(diǎn)無法根據(jù)其地址向特定節(jié)點(diǎn)發(fā)送消息。
CAN總線系統(tǒng)中的數(shù)據(jù)傳輸基于差分兩線接口(取代復(fù)雜的線束和連接器),從而增強(qiáng)了車輛電噪聲環(huán)境中的抗噪聲能力。CAN-高 (CANH) 和 CAN-低 (CANL) 兩條線攜帶互補(bǔ)信號。當(dāng)節(jié)點(diǎn)傳輸顯性 (0) 信號時(shí),CAN-High 的電壓電平高于 CAN-Low。相反,當(dāng)傳輸隱性 (1) 信號時(shí),CAN-High 和 CAN-Low 都處于相同的電壓電平。
數(shù)據(jù)以幀的形式傳輸,幀由多個(gè)字段組成。其中最重要的是標(biāo)識符字段和數(shù)據(jù)字段。標(biāo)識符字段包含消息的標(biāo)識符,接收節(jié)點(diǎn)使用該標(biāo)識符來確定是否接受該消息。數(shù)據(jù)字段包含正在傳輸?shù)膶?shí)際數(shù)據(jù),在標(biāo)準(zhǔn) CAN 中最多可達(dá) 8 個(gè)字節(jié),在 CAN FD(靈活數(shù)據(jù)速率)中最多可達(dá) 64 個(gè)字節(jié)。
CAN 總線中的數(shù)據(jù)傳輸受帶沖突檢測的載波偵聽多路訪問 (CSMA/CD)原理的控制。這意味著每個(gè)節(jié)點(diǎn)都會監(jiān)視總線(載波偵聽)并在總線空閑時(shí)進(jìn)行傳輸(多路訪問)。如果兩個(gè)節(jié)點(diǎn)同時(shí)傳輸(沖突),則標(biāo)識符值較低的節(jié)點(diǎn)繼續(xù)傳輸,而另一個(gè)節(jié)點(diǎn)停止傳輸。這是因?yàn)轱@性位會覆蓋總線上的隱性位,并且較低的標(biāo)識符(較低的數(shù)值)在 CAN 幀的開頭具有更多的顯性位。這種機(jī)制確保首先傳輸最高優(yōu)先級的消息(具有較低標(biāo)識符的消息)。
控制器局域網(wǎng)總線(CAN,Controller Area Network)是一種用于實(shí)時(shí)應(yīng)用的串行通訊協(xié)議總線,它可以使用雙絞線來傳輸信號,是世界上應(yīng)用最廣泛的現(xiàn)場總線之一。CAN協(xié)議用于汽車中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束。該協(xié)議的健壯性使其用途延伸到其他自動化和工業(yè)應(yīng)用。CAN協(xié)議的特性包括完整性的串行數(shù)據(jù)通訊、提供實(shí)時(shí)支持、傳輸速率高達(dá)1Mb/s、同時(shí)具有11位的尋址以及檢錯能力。
控制器局域網(wǎng)CAN( Controller Area Network)屬于現(xiàn)場總線的范疇,是一種有效支持分布式控制系統(tǒng)的串行通信網(wǎng)絡(luò)。是由德國博世公司在20世紀(jì)80年代專門為汽車行業(yè)開發(fā)的一種串行通信總線。由于其高性能、高可靠性以及獨(dú)特的設(shè)計(jì)而越來越受到人們的重視,被廣泛應(yīng)用于諸多領(lǐng)域。而且能夠檢測出產(chǎn)生的任何錯誤。當(dāng)信號傳輸距離達(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)用,對其的通信格式標(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ò)展的兩種格式。美國的汽車工程學(xué)會SAE在2000年提出了J1939協(xié)議,此后該協(xié)議成為了貨車和客車中控制器局域網(wǎng)的通用標(biāo)準(zhǔn)。CAN總線技術(shù)也在不斷發(fā)展。傳統(tǒng)的CAN是基于事件觸發(fā)的,信息傳輸時(shí)間的不確定性和優(yōu)先級反轉(zhuǎn)是它固有的缺陷。當(dāng)總線上傳輸消息密度較小時(shí),這些缺陷對系統(tǒng)的實(shí)時(shí)性影響較小;但隨著在總線上傳輸消息密度的增加,系統(tǒng)實(shí)時(shí)性能會急劇下降。為了滿足汽車控制對實(shí)時(shí)性和傳輸消息密度不斷增長的需要,改善CAN總線的實(shí)時(shí)性能非常必要。
于是,傳統(tǒng)CAN與時(shí)間觸發(fā)機(jī)制相結(jié)合產(chǎn)生了TTCAN(Time-Triggered CAN),ISO11898-4己包含了TTCAN。 TTCAN總線和傳統(tǒng)CAN總線系統(tǒng)的區(qū)別是:總線上不同的消息定義了不同的時(shí)間槽(Timer Slot)。
簡單來說CAN總線就如兩根黃線,通信的原理就好比開一個(gè)電話會議,大家都同時(shí)撥進(jìn)來,然后有各種不同的狀態(tài),比如:一個(gè)人說話,其他人聽;或者多個(gè)人同時(shí)想發(fā)言,但也會讓其中一個(gè)人先說,其他人聽;還有一個(gè)人要求另一個(gè)人來說;還有些掉線了,卡頓了等等。
為了確保每次電話會議針對上述情況正確有效地進(jìn)行,我們需要一些每個(gè)人都應(yīng)該遵守的規(guī)則或協(xié)議。CAN總線通信與這種電話會議形式既有相似之處,也有不同之處。那究竟什么是CAN總線通信?
CAN總線架構(gòu)簡介
CAN總線是一種用于不同控制單元之間數(shù)據(jù)傳輸?shù)膶?dǎo)線。CAN總線協(xié)議是ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議,由兩個(gè)系列組成:ISO-11898和ISO-11519。其定義有:
ISO-11898 定義了通信速率為 125 Kbps ~1Mbps 的高速 CAN 通信標(biāo)準(zhǔn),屬于閉環(huán)總線,傳輸速率可達(dá)1Mbps,總線長度≤ 40米。
ISO11519 定義了通信速率為 10~125 Kbps 的低速 CAN 通信標(biāo)準(zhǔn),屬于開環(huán)總線,傳輸速率為40kbps時(shí),總線長度可達(dá)1000米。
CAN的應(yīng)用
CAN總線會有終端電阻,一般來說都是120歐姆,實(shí)際上在設(shè)計(jì)的時(shí)候,也是兩個(gè)60歐姆的電阻串起來的,而總線上一般有兩個(gè)120歐姆的節(jié)點(diǎn)。終端電阻的作用有三個(gè):
①提高干擾防護(hù)能力,快速消除高頻低能量信號。
②確??偩€快速進(jìn)入隱藏狀態(tài),這樣寄生電容器的能量可以更快地耗散。
③通過將它們放置在總線兩端以減少反射能量來提高信號質(zhì)量。
電信號的傳輸是通過區(qū)分高電壓和低電壓來進(jìn)行的,就像CAN通信一樣。CAN總線的兩條信號線是CAN高(CAN_H)和CAN低(CAN_L)。關(guān)于CAN的邏輯0和邏輯1以及CAN總線的顯式和隱式方面,編制了以下圖表,以使每個(gè)人都能清楚地理解。
注1:在實(shí)際開發(fā)中,兩條線路的電壓都以默認(rèn)值波動,這也是使用差動傳輸減少誤差和噪聲干擾的優(yōu)點(diǎn);
注2:CAN總線采用“線路和”規(guī)則進(jìn)行總線套利,即如果同時(shí)發(fā)送多個(gè)CAN信號,有些發(fā)送1,有些發(fā)送0,只要有0,則當(dāng)前總線為0(1&0=0)。因此,總線上的顯式平面由邏輯“0”表示,而隱式平面則由邏輯“1”表示;
雖然差分信號有較好的抗干擾能力,但是長距離信號傳輸時(shí),我們通常會采用雙絞線進(jìn)行數(shù)據(jù)傳輸,以此來從物理上減弱噪聲對信號傳輸過程中的耦合。