CAN是控制器局域網(wǎng)絡(luò)(Controller Area Network, CAN)的簡稱,是由研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國BOSCH公司開發(fā)了的,并最終成為國際標(biāo)準(zhǔn)(ISO11898)。是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。 在北美和西歐,CAN總線協(xié)議已經(jīng)成為汽車計(jì)算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線,并且擁有以CAN為底層協(xié)議專為大型貨車和重工機(jī)械車輛設(shè)計(jì)的J1939協(xié)議。近年來,其所具有的高可靠性和良好的錯誤檢測能力受到重視,被廣泛應(yīng)用于汽車計(jì)算機(jī)控制系統(tǒng)和環(huán)境溫度惡劣、電磁輻射強(qiáng)和振動大的工業(yè)環(huán)境。CAN總線原理
CAN總線以廣播的方式從一個節(jié)點(diǎn)向另一個節(jié)點(diǎn)發(fā)送數(shù)據(jù),當(dāng)一個節(jié)點(diǎn)發(fā)送數(shù)據(jù)時,該節(jié)點(diǎn)的CPU把將要發(fā)送的數(shù)據(jù)和標(biāo)識符發(fā)送給本節(jié)點(diǎn)的CAN芯片,并使其進(jìn)入準(zhǔn)備狀態(tài);一旦該CAN芯片收到總線分配,就變?yōu)榘l(fā)送報(bào)文狀態(tài),該CAN芯片將要發(fā)送的數(shù)據(jù)組成規(guī)定的報(bào)文格式發(fā)出。此時,網(wǎng)絡(luò)中其他的節(jié)點(diǎn)都處于接收狀態(tài),所有節(jié)點(diǎn)都要先對其進(jìn)行接收,通過檢測來判斷該報(bào)文是否是發(fā)給自己的。
由于CAN總線是面向內(nèi)容的編址方案,因此容易構(gòu)建控制系統(tǒng)對其靈活地進(jìn)行配置,使其可以在不修改軟硬件的情況下向CAN總線中加入新節(jié)點(diǎn)。
CAN總線特點(diǎn)
(1)多主機(jī)方式工作:網(wǎng)絡(luò)上任意節(jié)點(diǎn)可在任意時刻其他節(jié)點(diǎn)發(fā)送數(shù)據(jù),通信方式靈活;
?。?)網(wǎng)絡(luò)上每個節(jié)點(diǎn)都有不同的優(yōu)先級,可以滿足實(shí)時性的要求;
?。?)采用非破壞性仲裁總線結(jié)構(gòu),當(dāng)兩個節(jié)點(diǎn)同時向網(wǎng)絡(luò)上傳送信息時,優(yōu)先級高的優(yōu)先傳送;
?。?)傳送方式有點(diǎn)對點(diǎn)、點(diǎn)對多點(diǎn)、點(diǎn)對全局廣播三種;
?。?)通信距離可達(dá)6km;通信速率可達(dá)1MB/s;節(jié)點(diǎn)數(shù)可達(dá)110個;
?。?)采用的是短幀結(jié)構(gòu),每幀有8個有效字節(jié);
?。?)具有可靠的檢錯機(jī)制,使得數(shù)據(jù)的出錯率極低;
?。?)當(dāng)發(fā)送的信息遭到破壞后,可自動重發(fā);
?。?)節(jié)點(diǎn)在嚴(yán)重錯誤時,會自動切斷與總線聯(lián)系,以免影響總線上其他操作;
三、CAN總線與485總線區(qū)別比較
現(xiàn)在的總線格式很多,CAN相對于其他的總線有什么特點(diǎn)???有什么特別的優(yōu)勢,讓我們必須選擇這種總線呢?這個問題問的好,所以我想與其它總線做一下比較,首先呢,就比較一下大家耳熟能詳?shù)?85總線吧。其實(shí)485總線與232差不多,它們只定義了物理層,規(guī)定了電平標(biāo)準(zhǔn)。下面我們進(jìn)行詳細(xì)的對比。
1)CAN控制器工作于多主方式,網(wǎng)絡(luò)中的各節(jié)點(diǎn)都可根據(jù)總線訪問優(yōu)先權(quán)(取決于報(bào)文標(biāo)識符)采用無損結(jié)構(gòu)的逐位仲裁方式競爭向總線發(fā)送數(shù)據(jù),且CAN協(xié)議廢除了站地址編碼,而代之以對通信數(shù)據(jù)進(jìn)行編碼,這可使不同的節(jié)點(diǎn)同時接收到相同的數(shù)據(jù),這些特點(diǎn)使得CAN總線構(gòu)成的網(wǎng)絡(luò)各節(jié)點(diǎn)之間的數(shù)據(jù)通信實(shí)時性強(qiáng),并且容易構(gòu)成冗余結(jié)構(gòu),提高系統(tǒng)的可靠性和系統(tǒng)的靈活性。而利用RS-485只能構(gòu)成主從式結(jié)構(gòu)系統(tǒng),通信方式也只能以主站輪詢的方式進(jìn)行,系統(tǒng)的實(shí)時性、可靠性較差。
2)CAN總線通過CAN控制器接口芯片82C250的兩個輸出端CANH和CANL與物理總線相連,而CANH端的狀態(tài)只能是高電平或懸浮狀態(tài),CANL端只能是低電平或懸浮狀態(tài)。這就保證不會出現(xiàn)像在RS-485網(wǎng)絡(luò)中,當(dāng)系統(tǒng)有錯誤,出現(xiàn)多節(jié)點(diǎn)同時向總線發(fā)送數(shù)據(jù)時,導(dǎo)致總線呈現(xiàn)短路,從而損壞某些節(jié)點(diǎn)的現(xiàn)象。而且CAN節(jié)點(diǎn)在錯誤嚴(yán)重的情況下具有自動關(guān)閉輸出功能,以使總線上其他節(jié)點(diǎn)的操作不受影響,從而保證不會出現(xiàn)象在網(wǎng)絡(luò)中,因個別節(jié)點(diǎn)出現(xiàn)問題,使得總線處于“死鎖”狀態(tài)。
3)CAN具有完善的通信協(xié)議,可由CAN控制器芯片及其接口芯片來實(shí)現(xiàn),從而大大降低了系統(tǒng)的開發(fā)難度,縮短了開發(fā)周期,這些是只僅僅有電氣協(xié)議的RS-485所無法比擬的。
CAN總線與485總線對比表