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