文章內(nèi)容:
什么是CAN總線
CAN總線的工作原理
CAN總線幀組成
CAN總線結(jié)構(gòu)
CAN總線協(xié)議結(jié)構(gòu)
CAN總線解析的實測案例
什么是CAN總線
控制器局域網(wǎng)總線(CAN,Controller Area Network)是一種用于實時應(yīng)用的串行通訊協(xié)議總線,它可以使用雙絞線來傳輸信號,是世界上應(yīng)用最廣泛的現(xiàn)場總線之一。CAN協(xié)議用于汽車中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束。
汽車CAN總線由CAN控制器、CAN收發(fā)器、數(shù)據(jù)傳輸線、數(shù)據(jù)傳輸終端等組成。CB311的ECU(發(fā)動機控制單元)、TCU(變速器控制單元)、FEPS(無鑰匙進入和無鑰匙啟動系統(tǒng))、組合儀表四個電控單元通過CAN總線連接,CAN控制器、CAN收發(fā)器均集成在電控單元中。CAN總線的結(jié)構(gòu)如圖1所示。
圖1 CAN總線的總體結(jié)構(gòu)
CAN協(xié)議的特性包括完整性的串行數(shù)據(jù)通訊、提供實時支持、傳輸速率高達1Mb/s、同時具有11位的尋址以及檢錯能力。
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)上獲得,而無須每個控制器都有自己獨立的傳感器。
現(xiàn)代汽車的電控單元主要有主控制器、發(fā)動機控制系統(tǒng)、懸架控制系統(tǒng)、制動防抱死控制系統(tǒng)(ABS牽引力控制系統(tǒng)、ASR控制系統(tǒng)、儀表管理系統(tǒng)、故障診斷系統(tǒng)、中央門鎖系統(tǒng)、座椅調(diào)節(jié)系統(tǒng)等)。
所有這些子控制系統(tǒng)連接起來構(gòu)成1個實時控制系統(tǒng),即:指令發(fā)出去之后,必須保證在一定時間內(nèi)得到響應(yīng),否則,就有可能發(fā)生重大事故。這就要求汽車上的cAN通信網(wǎng)絡(luò)有較高的波特率設(shè)置。另外,汽車在實際運行過程中,眾多節(jié)點之間需要進行大量的實時數(shù)據(jù)交換。若整個汽車的所有節(jié)點都掛在1個CAN網(wǎng)絡(luò)上,眾多節(jié)點cAN總線進行通信,信息管理配置稍有不當,就很容易出現(xiàn)總線負荷過大,導(dǎo)致系統(tǒng)實時響應(yīng)速度下降。
這在實時系統(tǒng)中是不允許的,因此在對汽車上各節(jié)點的實性進行了分析之后,根據(jù)各節(jié)點對實時性的要求,設(shè)計了高、中、低速3個速率不同的CAN通信網(wǎng)絡(luò),將實時性要求嚴格的節(jié)點組成高速CAN通信網(wǎng)絡(luò),將其它實時性要求相對較低的節(jié)點組成中速CAN通信網(wǎng)絡(luò),將剩下實時性要求不是很嚴格的節(jié)點組成低速CAN通信網(wǎng)絡(luò)。并架設(shè)網(wǎng)關(guān)將這3個速率不同的3個通信網(wǎng)絡(luò)連接起來,實現(xiàn)全部節(jié)點之間的數(shù)據(jù)共享。
CAN總線幀組成
CAN總線信號就是CAN總線中傳輸?shù)膸?,CAN總線中的幀類型分為5種,分別是數(shù)據(jù)幀、遠程幀、錯誤幀、過載幀、幀間隔。
1.數(shù)據(jù)幀:用于發(fā)送節(jié)點向接收節(jié)點傳送數(shù)據(jù)的幀。
2.遠程幀:用于接收節(jié)點向具有相同ID的發(fā)送節(jié)點傳送數(shù)據(jù)的幀。
3.錯誤幀:用于當檢測出錯誤時向其他節(jié)點通知錯誤的幀。
4.過載幀:用于接收節(jié)點通知其尚未做好準備的幀。
5.幀間隔:用于將數(shù)據(jù)幀及遠程幀與前面的幀分隔開來。
標準幀和擴展幀:
數(shù)據(jù)幀和遠程幀都可以使用標準幀格式或者擴展幀格式
RTR:遠程發(fā)送請求位,數(shù)據(jù)幀為顯性,遠程幀為隱性。
SRR:代替遠程請求位(在擴展格式中在RTR位置,所以得此名),該位為隱性位。在這個地方占個位以保持標準幀和擴展幀IDE對齊,便可以判斷標準幀優(yōu)先于擴展幀。
IDE:標識符擴展位,標準幀為顯性,擴展幀為隱性。
R0、R1:保留位。
DLC:數(shù)據(jù)長度位。
CRC:校驗位。
CRC分隔符:隱性位
ACK:應(yīng)答位和應(yīng)答界定位。在應(yīng)答域中,發(fā)送器發(fā)出兩個隱性位。接收器接收到報文后,在應(yīng)答位期間,用顯性位填充應(yīng)答位作為回應(yīng),應(yīng)答界定則為保持隱性。
幀結(jié)束:由7個隱性位組成。
數(shù)據(jù)幀:
SOF幀起始:數(shù)據(jù)幀開始的段。
仲裁場:該幀優(yōu)先級的段。
控制場:數(shù)據(jù)的字節(jié)數(shù)以及保留位。
數(shù)據(jù)場:數(shù)據(jù)內(nèi)容。
CRC場:校驗數(shù)據(jù)。
應(yīng)答場:確認正常接收的段。
幀結(jié)尾:數(shù)據(jù)幀結(jié)束的段。
遠程幀:
通過發(fā)送遠程幀,作為數(shù)據(jù)接收器的節(jié)點可以發(fā)起各自數(shù)據(jù)源的數(shù)據(jù)傳送請求,即向數(shù)據(jù)發(fā)送器請求發(fā)送具有相同ID的數(shù)據(jù)幀。遠程幀沒有數(shù)據(jù)段。
錯誤幀:
錯誤類型:應(yīng)答錯誤,填充錯誤,CRC錯誤,格式錯誤
錯誤幀由錯誤標志的疊加和結(jié)束符組成。錯誤標志有主動(積極)錯誤標志和被動(消極)錯誤標志。主動(積極)錯誤標志為6個顯性位,被動(消極)錯誤標志為6個隱性位。
錯誤積極節(jié)點:如果檢測到一個錯誤條件,就會發(fā)送積極錯誤標志。這將引起其它節(jié)點檢測到填充錯誤,并開始發(fā)送錯誤標志。因此錯誤標志疊加在6~12位之間。節(jié)點發(fā)送完錯誤標志之后就發(fā)送一個隱性位,并監(jiān)控總線,直到總線上出現(xiàn)一個隱性位,然后再發(fā)送7個隱性位。這樣一個錯誤幀就發(fā)送完畢了。
消極錯誤節(jié)點:如果檢測到一個錯誤條件,會試圖發(fā)送一個消極錯誤標志進行指示。這個消極錯誤節(jié)點會一直等待6個具有相同極性的連續(xù)位,等待從消極錯誤標志起始開始,當檢測到6個相同極性的連續(xù)位時,消極錯誤標志發(fā)送完成。
過載幀:
過載條件:接收器要求延遲下一次數(shù)據(jù)幀或遠程幀的到達;在幀間隔間歇場的第一位和第二位檢測到顯性位;如果CAN節(jié)點在錯誤界定符或過載界定符的第8位采樣到一個顯性位,則節(jié)點會發(fā)送一個過載幀,錯誤計數(shù)器不會增加。
幀間空間:
?
數(shù)據(jù)幀和遠程幀的前面必然有幀間空間。對于主動錯誤節(jié)點和被動錯誤節(jié)點,幀間空間的結(jié)構(gòu)稍有不同。對于主動錯誤節(jié)點,幀空間由3個顯性位的間歇字段和總線空閑組成。在間歇字段不允許發(fā)送數(shù)據(jù)幀和遠程幀。總線空閑的長度任意,當有顯性位時就被認為是幀起始。被動錯誤標志除了上邊兩部分外,在間歇字段后還有8個顯性位的掛起傳輸。在掛起傳輸階段被動錯誤節(jié)點不可以發(fā)送數(shù)據(jù)幀與遠程幀。
CAN總線結(jié)構(gòu)
下圖中,左邊是高速CAN總線的拓撲結(jié)構(gòu),右邊是低速CAN總線的拓撲結(jié)構(gòu)。
如圖中所示,CAN總線包括CAN_H 和 CAN_L 兩根線。節(jié)點通過CAN控制器和CAN收發(fā)器連接到CAN總線上。
CAN總線協(xié)議結(jié)構(gòu)
CAN標準分為底層標準(物理層和數(shù)據(jù)鏈路層)和上層標準(應(yīng)用層)兩大類。CAN底層標準主要是ISO 11898系列的國際標準,也就是說不同廠商在CAN總線的物理層和數(shù)據(jù)鏈路層定義基本相同;而上層標準,不同應(yīng)用領(lǐng)域或制造商會有不同的做法,所以在這一塊沒有統(tǒng)一的國際標準。
根據(jù)OSI參照機型,定義數(shù)據(jù)鏈路層與物理層。
OSI規(guī)格化以外,SAE J2284, J2411等規(guī)格也有類似分層。
CAN總線解析的實測案例
汽車控制系統(tǒng)測試案例
ECU(Electronic Control Unit)電子控制單元,又稱“行車電腦”、“車載電腦”等。從用途上講則是汽車專用微機控制器。它和普通的電腦一樣,由微處理器(MCU)、存儲器(ROM、RAM)、輸入/輸出接口(I/O)、模數(shù)轉(zhuǎn)換器(A/D)以及整流、驅(qū)動等大規(guī)模集成電路組成。用一句簡單的話來形容“ECU就是汽車的大腦”。為保證車輛運行通暢,在汽車的開發(fā)與檢測中,一般需要進行以下項目的測試:
? 多路ECU控制信號的時序關(guān)系? 多路轉(zhuǎn)速、噴油脈沖、曲軸轉(zhuǎn)角等傳感器信號? 進行CAN總線的解碼分析
審核編輯:湯梓紅
?
評論