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