一文讀懂can總線的特點(diǎn)和優(yōu)缺點(diǎn)
什么是CAN總線
CAN是控制器局域網(wǎng)絡(luò)(ControllerAreaNetwork,CAN)的簡(jiǎn)稱,是由以研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國(guó)BOSCH公司開(kāi)發(fā)的,并最終成為國(guó)際標(biāo)準(zhǔn)(ISO11898),是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。在北美和西歐,CAN總線協(xié)議已經(jīng)成為汽車計(jì)算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線,并且擁有以CAN為底層協(xié)議專為大型貨車和重工機(jī)械車輛設(shè)計(jì)的J1939協(xié)議。
CAN總線的特點(diǎn)
(1)它是一種多主總線,即每個(gè)節(jié)點(diǎn)機(jī)均可成為主機(jī),且節(jié)點(diǎn)機(jī)之間也可進(jìn)行通信。
(2)通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維,通信速率可達(dá)1mb/s。
(3)can總線通信接口中集成了can協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對(duì)通信數(shù)據(jù)的成幀處理,包括位填充、數(shù)據(jù)塊編碼、循環(huán)冗余校驗(yàn)、優(yōu)先級(jí)判別等項(xiàng)工作。
(4)can協(xié)議的一個(gè)最大特點(diǎn)是廢除了傳統(tǒng)的站地址編碼,雨代之以對(duì)通信數(shù)據(jù)塊進(jìn)行編碼。采用這種方法的優(yōu)點(diǎn)是可使網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制,數(shù)據(jù)塊的標(biāo)識(shí)碼可由11位或29位二進(jìn)制數(shù)組成,因此可以定義211或229個(gè)不同的數(shù)據(jù)塊,這種數(shù)據(jù)塊編碼方式,還可使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),這一點(diǎn)在分步式控制中非常重要。
(5)數(shù)據(jù)段長(zhǎng)度最多為8個(gè)字節(jié),可滿足通常工業(yè)領(lǐng)域中控制命令、工作狀態(tài)及測(cè)試數(shù)據(jù)的一般要求。同時(shí),8個(gè)字節(jié)不會(huì)占用總線時(shí)間過(guò)長(zhǎng),從而倮證了通信的實(shí)時(shí)性。
(6)can協(xié)議采用crc檢驗(yàn)并可提供相應(yīng)的錯(cuò)誤處理功能,保證了數(shù)據(jù)通信的可靠性。can總線所具有的卓越性能、極高的可靠性和獨(dú)特設(shè)計(jì),特別適合工業(yè)設(shè)各測(cè)控單元互連。因此備受工業(yè)界的重視,并已公認(rèn)為最有前途的現(xiàn)場(chǎng)總線之一。
CAN總線的工作原理
CAN總線使用串行數(shù)據(jù)傳輸方式,可以1Mb/s的速率在40m的雙絞線上運(yùn)行,也可以使用光纜連接,而且在這種總線上總線協(xié)議支持多主控制器。CAN與I2C總線的許多細(xì)節(jié)很類似,但也有一些明顯的區(qū)別。
當(dāng)CAN總線上的一個(gè)節(jié)點(diǎn)(站)發(fā)送數(shù)據(jù)時(shí),它以報(bào)文形式廣播給網(wǎng)絡(luò)中所有節(jié)點(diǎn)。對(duì)每個(gè)節(jié)點(diǎn)來(lái)說(shuō),無(wú)論數(shù)據(jù)是否是發(fā)給自己的,都對(duì)其進(jìn)行接收。每組報(bào)文開(kāi)頭的11位字符為標(biāo)識(shí)符,定義了報(bào)文的優(yōu)先級(jí),這種報(bào)文格式稱為面向內(nèi)容的編址方案。在同一系統(tǒng)中標(biāo)識(shí)符是唯一的,不可能有兩個(gè)站發(fā)送具有相同標(biāo)識(shí)符的報(bào)文。當(dāng)幾個(gè)站同時(shí)競(jìng)爭(zhēng)總線讀取時(shí),這種配置十分重要。
當(dāng)一個(gè)站要向其它站發(fā)送數(shù)據(jù)時(shí),該站的CPU將要發(fā)送的數(shù)據(jù)和自己的標(biāo)識(shí)符傳送給本站的CAN芯片,并處于準(zhǔn)備狀態(tài);當(dāng)它收到總線分配時(shí),轉(zhuǎn)為發(fā)送報(bào)文狀態(tài)。CAN芯片將數(shù)據(jù)根據(jù)協(xié)議組織成一定的報(bào)文格式發(fā)出,這時(shí)網(wǎng)上的其它站處于接收狀態(tài)。每個(gè)處于接收狀態(tài)的站對(duì)接收到的報(bào)文進(jìn)行檢測(cè),判斷這些報(bào)文是否是發(fā)給自己的,以確定是否接收它。
由于CAN總線是一種面向內(nèi)容的編址方案,因此很容易建立高水準(zhǔn)的控制系統(tǒng)并靈活地進(jìn)行配置。我們可以很容易地在CAN總線中加進(jìn)一些新站而無(wú)需在硬件或軟件上進(jìn)行修改。當(dāng)所提供的新站是純數(shù)據(jù)接收設(shè)備時(shí),數(shù)據(jù)傳輸協(xié)議不要求獨(dú)立的部分有物理目的地址。它允許分布過(guò)程同步化,即總線上控制器需要測(cè)量數(shù)據(jù)時(shí),可由網(wǎng)上獲得,而無(wú)須每個(gè)控制器都有自己獨(dú)立的傳感器。
CAN總線的優(yōu)點(diǎn)
● 具有實(shí)時(shí)性強(qiáng)、傳輸距離較遠(yuǎn)、抗電磁干擾能力強(qiáng)、成本低等優(yōu)點(diǎn);
● 采用雙線串行通信方式,檢錯(cuò)能力強(qiáng),可在高噪聲干擾環(huán)境中工作;
● 具有優(yōu)先權(quán)和仲裁功能,多個(gè)控制模塊通過(guò)CAN 控制器掛到CAN-bus 上,形成多主機(jī)局部網(wǎng)絡(luò);
● 可根據(jù)報(bào)文的ID決定接收或屏蔽該報(bào)文;
● 可靠的錯(cuò)誤處理和檢錯(cuò)機(jī)制;
● 發(fā)送的信息遭到破壞后,可自動(dòng)重發(fā);
● 節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下具有自動(dòng)退出總線的功能;
● 報(bào)文不包含源地址或目標(biāo)地址,僅用標(biāo)志符來(lái)指示功能信息、優(yōu)先級(jí)信息。
CAN總線缺點(diǎn)
1)不一致性
CAN總線中有一個(gè)著名的Last-But-One-Bit 錯(cuò)誤。CAN總線2 OA在信息認(rèn)證(MessageValidaTIon)中規(guī)定: 發(fā)送器驗(yàn)錯(cuò)的范圍可覆蓋到幀結(jié)束,如果發(fā)現(xiàn)錯(cuò)誤,以后就按優(yōu)先權(quán)和狀態(tài)的規(guī)定重發(fā); 接 器驗(yàn)錯(cuò)的范圍覆蓋到幀結(jié)束的前一位。因此,如果由于空間干擾、電 源波動(dòng)等原因,對(duì)于幀的倒數(shù)第二位,一部分節(jié)點(diǎn)A認(rèn)為無(wú)錯(cuò),一 部分節(jié)點(diǎn)B 認(rèn)為有錯(cuò),即出現(xiàn)了所謂的ByzanTIne 錯(cuò)誤。這時(shí),根 EOF 應(yīng)該是7 個(gè)隱性位,節(jié)點(diǎn)B 認(rèn)為這是一種形式錯(cuò)誤,所以就會(huì)啟動(dòng)錯(cuò)誤幀,通知發(fā)送器重發(fā),同時(shí)丟棄收到的幀。而認(rèn)為設(shè)錯(cuò)的節(jié)點(diǎn)A 由于只查到倒數(shù)第二位,因此就會(huì)接收此幀。如果在發(fā)送器例行的下一次發(fā)送前B 通知的重發(fā)成功,A就會(huì)收到重復(fù)幀; 如果重發(fā)不成功,B 就丟了一幀。在轉(zhuǎn)向和制動(dòng)系統(tǒng)中,4 個(gè)輪子對(duì)命令的不同理解,可能造成性能的下降或其他更嚴(yán)重的后果。
2)不可預(yù)測(cè)性
CAN總線將節(jié)點(diǎn)狀態(tài)分為ErrorAcTIve、Error Passive 和Bus Off 三種,這三種狀態(tài)在一定條件下可以互相轉(zhuǎn)換。不同狀態(tài)中節(jié)點(diǎn)的發(fā)送有不同的延遲。最高優(yōu)先權(quán)的信息發(fā)送延遲有幾種可能: 當(dāng)節(jié)點(diǎn)狀態(tài)為ErrorAcTIve 時(shí),若總線空閑,則立即發(fā)送; 當(dāng)節(jié)點(diǎn)狀態(tài)為ErorActive時(shí),如果其它幀正在發(fā)送,則需等正在發(fā)送的報(bào)文結(jié)束后,再過(guò)3 位后發(fā)送; 當(dāng)節(jié)點(diǎn)狀態(tài)為ErrorPassive 時(shí),它有一個(gè)出錯(cuò)重發(fā)的要求,若沒(méi)有其它幀要發(fā)送,等3 位傳送(Intemission)和8 位掛起傳送(Suspend Transmission)后重發(fā); 當(dāng)節(jié)點(diǎn)狀態(tài)為Error Passive時(shí),若總線空閑,出錯(cuò)后等別的信息發(fā)送完后再發(fā),等待時(shí)間與其它幀的長(zhǎng)度有關(guān); 當(dāng)節(jié)點(diǎn)狀態(tài)為Bus Off 時(shí),需等狀態(tài)恢復(fù)到ErrorPassive 或ErrorActive 再發(fā)。
當(dāng)確認(rèn)某節(jié)點(diǎn)的狀態(tài)時(shí),還有幾個(gè)因素需要考慮: 首先,節(jié)點(diǎn)由最高優(yōu)先權(quán)的信息和其他信息共用,因此,其他信息在傳送過(guò)程中出現(xiàn)的錯(cuò)誤也會(huì)影響到節(jié)點(diǎn)狀態(tài); 其次,進(jìn)入ErrorPassive 或BusOff 狀態(tài)的條件是發(fā)送錯(cuò)誤計(jì)數(shù)器與/或接收錯(cuò)誤計(jì)數(shù)器的值,由于CAN 的原子廣播特點(diǎn),其它節(jié)點(diǎn)的發(fā)送錯(cuò)誤或接收錯(cuò)誤會(huì)開(kāi)啟一個(gè)錯(cuò)誤幀,從而影響到該節(jié)點(diǎn)的接收錯(cuò)誤計(jì)數(shù)器的值,進(jìn)而影響節(jié)點(diǎn)狀態(tài)。
對(duì)于優(yōu)先權(quán)較低的信息來(lái)說(shuō),發(fā)送時(shí)間的離散程度更大。在反饋控制系統(tǒng)中,采樣調(diào)節(jié)周期的大范圍抖動(dòng)相當(dāng)于信號(hào)延遲后的變化,它有可能使系統(tǒng)性能下降或不穩(wěn)定。在與安全相關(guān)的開(kāi)環(huán)系統(tǒng)中,抖動(dòng)可能造成動(dòng)作順序的混亂。
3)信道出錯(cuò)堵塞
節(jié)點(diǎn)有可能受干擾或其它原因暫時(shí)或永久失效,出錯(cuò)的主機(jī)會(huì)命令CAN 收發(fā)器不斷發(fā)送消息,即所謂的Babbling ldiot 錯(cuò)誤。由于該信息的格式等均合法,因此CAN 沒(méi)有相應(yīng)的機(jī)制來(lái)處理這種情況。根據(jù)CAN 的優(yōu)先權(quán)機(jī)制,比它優(yōu)先權(quán)低的信息就被暫時(shí)或永久堵塞。由于CAN總線存在上述幾種根本的缺陷,因此,在更為嚴(yán)格的控制系統(tǒng)中,它將會(huì)造成巨大的風(fēng)險(xiǎn),無(wú)法滿足安全、環(huán)保、節(jié)能的要求。CAN 的事件觸發(fā)協(xié)議特點(diǎn)限制了ECU 的應(yīng)用、開(kāi)發(fā)與生產(chǎn),不僅用過(guò)的ECU 難于重用,而且還不利于改善和開(kāi)發(fā)新的ECU。
CAN總線的應(yīng)用
現(xiàn)在CAN的高性能和可靠性已被認(rèn)同,并被廣泛地應(yīng)用于工業(yè)自動(dòng)化、船舶、醫(yī)療設(shè)備、工業(yè)設(shè)備等方面,現(xiàn)場(chǎng)總線是當(dāng)今自動(dòng)化領(lǐng)域技術(shù)發(fā)展的熱點(diǎn)之一、被譽(yù)為自動(dòng)化領(lǐng)域的計(jì)算機(jī)局域網(wǎng)。它的出現(xiàn)為分布式控制系統(tǒng)實(shí)現(xiàn)各節(jié)點(diǎn)之間實(shí)時(shí)、可靠的數(shù)據(jù)通信提供了強(qiáng)有力的技術(shù)支持。
CAN總線在工控領(lǐng)域主要使用低速-容錯(cuò)CAN即ISO11898-3標(biāo)準(zhǔn),在汽車領(lǐng)域常使用500Kbps的高速CAN。
某進(jìn)口車型擁有,車身、舒適、多媒體等多個(gè)控制網(wǎng)絡(luò),其中車身控制使用CAN網(wǎng)絡(luò),舒適使用LIN網(wǎng)絡(luò),多媒體使用MOST網(wǎng)絡(luò),以CAN網(wǎng)為主網(wǎng),控制發(fā)動(dòng)機(jī)、變速箱、ABS等車身安全模塊,并將轉(zhuǎn)速、車速、油溫等共享至全車,實(shí)現(xiàn)汽車智能化控制,如高速時(shí)自動(dòng)鎖閉車門,安全氣囊彈出時(shí),自動(dòng)開(kāi)啟車門等功能。
CAN系統(tǒng)又分為高速和低速,高速CAN系統(tǒng)采用硬線是動(dòng)力型,速度:500kbps,控制ECU、ABS等;低速CAN是舒適型,速度:125Kbps,主要控制儀表、防盜等。
某醫(yī)院現(xiàn)有5臺(tái)16T/H XXXX燃?xì)忮仩t,向洗衣房、制劑室、供應(yīng)室、生活用水、暖氣等設(shè)施提供5kg/cm2的蒸汽,全年耗用天然氣1200萬(wàn)m3,耗用20萬(wàn)噸自來(lái)水。醫(yī)院采用接力式方式供熱,對(duì)熱網(wǎng)進(jìn)行地域性管理,分四大供熱區(qū)。其中冬季暖氣的用氣量很大,據(jù)此設(shè)計(jì)了基于CAN現(xiàn)場(chǎng)總線的分布式鍋爐蒸汽熱網(wǎng)智能監(jiān)控系統(tǒng)?,F(xiàn)場(chǎng)應(yīng)用表明:該樓宇自動(dòng)化系統(tǒng)具有抗干擾能力強(qiáng),現(xiàn)場(chǎng)組態(tài)容易,網(wǎng)絡(luò)化程度高,人機(jī)界面友好等特點(diǎn)。