一、什么是CAN協(xié)議
電子計算機網(wǎng)絡(luò)用電子語言來說話,各電控單元必須使用和解讀相同的電子語言,這種語言稱“協(xié)議”,汽車電腦網(wǎng)絡(luò)常見的傳輸協(xié)議有數(shù)種。寶來車裝用博世公司產(chǎn)品,數(shù)據(jù)總線采用CAN協(xié)議,這個協(xié)議是由福特、Internet與博世公司共同開發(fā)的高速汽車通信協(xié)議。CAN是Controller Area Network(控制單元區(qū)域網(wǎng)絡(luò))的縮寫,意思是控制單元通過網(wǎng)絡(luò)交換數(shù)據(jù)。
二、CAN數(shù)據(jù)傳輸系統(tǒng)的優(yōu)點
數(shù)據(jù)總線與其他部件組合在一起就成為數(shù)據(jù)傳輸系統(tǒng),CAN數(shù)據(jù)傳輸系統(tǒng)的優(yōu)點是:
①將傳感器信號線減至最少,使更多的傳感器信號進行高速數(shù)據(jù)傳遞。 ②電控單元和電控單元插腳最小化應(yīng)用,節(jié)省電控單元的有限空間。 ③如果系統(tǒng)需要增加新的功能,僅需軟件升級即可。 ④各電控單元的監(jiān)測對所連接的CAN總線進行實時監(jiān)測,如出現(xiàn)故障該電控單元會存儲故障碼。
?、軨AN數(shù)據(jù)總線符合國際標準,以便于一輛車上不同廠家的電控單元間進行數(shù)據(jù)交換。
三、CAN數(shù)據(jù)格式
1.名詞
1)顯性和隱性
顯性-0 隱性-1(diff=0)
2)數(shù)據(jù)幀、遠程幀、錯誤幀、過載幀、幀間隔
數(shù)據(jù)幀:用于發(fā)送節(jié)點向接收節(jié)點傳送數(shù)據(jù)的幀
遠程幀:用于接收節(jié)點向具有相同ID的發(fā)送節(jié)點請求數(shù)據(jù)的幀
錯誤幀:用于當(dāng)檢測出錯誤時向其他節(jié)點通知錯誤的幀
過載幀:用于接收節(jié)點通知其尚未做好接受準備的幀
幀間隔:用于將數(shù)據(jù)幀及遠程幀與前面的幀分離開來的幀
3)遠程數(shù)據(jù)請求
通過發(fā)送遠程幀,一個需要數(shù)據(jù)的的節(jié)點可以請求另一個節(jié)點發(fā)送相應(yīng)的數(shù)據(jù)幀,稱為遠程數(shù)據(jù)請求。數(shù)據(jù)幀和相應(yīng)的遠程幀具有相同的標識符。
2.CAN標準幀與CAN擴展幀格式
數(shù)據(jù)幀和遠程幀都可以使用標準幀格式或者擴展幀格式。
RTR:遠程發(fā)送請求位,數(shù)據(jù)幀中為顯性,遠程幀中為隱性。
SRR:替代遠程請求位(在擴展格式中在RTR位置,所以得此名),隱性位。此位可判斷出標準幀優(yōu)先于擴展幀。
IDE:標識符擴展位,標準幀-顯性,擴展幀-隱性,表示該幀為標準幀還是擴展幀。
R1、R0:保留位。
DLC:數(shù)據(jù)長度代碼,如下圖所示,包括下圖中的DLC3、DLC2、DLC1、DLC0:
CRC段:由CAN控制器自動填充。
CRC分隔符:隱性位。
ACK段:2位,由CAN控制器自動填充。包括應(yīng)答位和應(yīng)答界定位。應(yīng)答界定位緊鄰幀結(jié)束。在應(yīng)答域中,發(fā)送器發(fā)出兩個隱性位,當(dāng)接收器正確的接收到有效的報文,該接收器就會在應(yīng)答位期間,用一顯性位填充應(yīng)答位作為回應(yīng),而應(yīng)答界定位一直保持為隱性。
幀結(jié)束:由7個隱性位組成,由CAN控制器自動填充。兩種幀格式可出現(xiàn)在同一總線上
3.數(shù)據(jù)幀
SOF幀開始:數(shù)據(jù)幀開始的段
仲裁段:該幀優(yōu)先級的段
控制段:數(shù)據(jù)的字節(jié)數(shù)以及保留位的段
數(shù)據(jù)段:數(shù)據(jù)的內(nèi)容,0~8個字節(jié)
CRC段:檢查幀的傳輸錯誤的段
ACK段:確認正常接收的段
幀結(jié)束:數(shù)據(jù)幀結(jié)束的段
4.遠程幀
通過發(fā)送遠程幀,作為數(shù)據(jù)接收器的節(jié)點可以發(fā)起各自數(shù)據(jù)源的數(shù)據(jù)傳送請求,即向數(shù)據(jù)發(fā)送器請求發(fā)送具有相同ID的數(shù)據(jù)幀。
遠程幀由幀起始、仲裁段、控制段、CRC段、ACK段和幀結(jié)束組成。
遠程幀沒有數(shù)據(jù)段。
5.錯誤幀
出錯標志有兩種:主動(積極)錯誤標志和被動(消極)錯誤標志。
主動(積極)錯誤標志:6個連續(xù)的顯行位組成。
被動(消極)錯誤標志:6個連續(xù)的隱性位組成,有可能被其他節(jié)點的顯行位覆蓋。
一個錯誤積極節(jié)點如果檢測到一個錯誤條件,會發(fā)送一個積極錯誤標志進行標識。這一錯誤標志違反了正常的位填充規(guī)則(適用于從幀起始到CRC界定符之間的所有場)或破壞了應(yīng)答場和幀結(jié)束場的固定格式,結(jié)果是引起其他節(jié)點檢測到新的錯誤條件并各自開始發(fā)送錯誤標志,因此,這個在總線上可被檢測到的顯性位序列是各個節(jié)點發(fā)出的不同錯誤標志疊加的結(jié)果。該序列的總長度在6~12位之間變化。
一個消極錯誤節(jié)點如果檢測到一個錯誤條件,會試圖發(fā)送一個消極錯誤標志進行指示。這個消極錯誤節(jié)點會一直等待6個具有相同極性的連續(xù)位,等待從消極錯誤標志的起始開始,當(dāng)檢測到6個相同極性的連續(xù)位時,消極錯誤標志發(fā)送即完成。
錯誤界定符由8個隱性位組成,錯誤標志發(fā)出以后,每個節(jié)點都發(fā)出隱性位,并一直監(jiān)視總線直到檢測出隱性位,隨后開始發(fā)送剩余的7個隱性位。
CAN提供了檢測下列錯誤類型機制:
1)應(yīng)答錯誤
2)填充錯誤
3)CRC錯誤
4)格式錯誤
6.過載幀
存在3中過載條件,引起過載標志的發(fā)送。
1)接收器要求延遲下一次數(shù)據(jù)幀或遠程幀的到達。
2)在幀間隔間歇場的第一和第二位檢測到顯性位。
3)如果一個CAN節(jié)點在錯誤界定符或過載界定符的第8位(最后一位)采樣到一個顯性位,則節(jié)點會發(fā)送一個過載幀(而不是錯誤幀)。錯誤計數(shù)器不會增加。
最多可產(chǎn)生2個過載幀來延遲下一數(shù)據(jù)幀或遠程幀。
過載標志由6個顯性位組成,其全部形式與積極錯誤標志一樣。過載標志破壞了幀間隔間歇場的固定形式,結(jié)果其他節(jié)點也檢測到一個過載條件,并各自開始發(fā)送過載幀。如果在幀間隔間歇場的第3位期間檢測到一個顯性位,則該位將解釋為幀起始。
注意:1)CAN總線的錯誤幀、過載幀怎么發(fā)出,是硬件自己完成,還是要軟件實現(xiàn)?
答: 當(dāng)然是由硬件自動發(fā)出,不需要軟件參與。
7.幀間隔
幀間隔用于分割數(shù)據(jù)幀和遠程幀的幀。
數(shù)據(jù)幀和遠程幀可通過插入幀間隔將本幀與前面的任何幀(數(shù)據(jù)幀、遠程幀、錯誤幀、過載幀)分開。過載幀和錯誤幀之前沒有幀間隔,多個過載幀之間也不是通過幀間隔分開的。
幀間隔包括間歇場、總線空閑場以及可能的暫停發(fā)送域。只有剛發(fā)送出去前一報文的錯誤消極節(jié)點才需要暫停發(fā)送場。
非錯誤消極節(jié)點或者作為前一報文接收器的節(jié)點的幀間隔如圖。
作為前一報文發(fā)送器的錯誤消極節(jié)點的幀間隔如圖。
間歇場包括3個隱性位。間歇場期間,所有節(jié)點均不允許發(fā)送數(shù)據(jù)幀或者遠程幀,他唯一的作用是標識一個過載條件。
注意,如果一個正準備發(fā)送報文的CAN節(jié)點在間歇場的第三位檢測到一個顯性位,他將認為這是一個幀的開始,并且在下一位時間,從報文的標識符的第一位開始發(fā)送報文,而不再發(fā)送一個幀起始位,同時也不會成為報文接收器。
總線空閑周期為任意長度。在此期間,總線空閑,任何需要發(fā)送報文的節(jié)點都可以訪問總線。
一個因其他報文正在發(fā)送而被掛起的報文,將在間歇場后的第一位開始發(fā)送。此時檢測到的總線上一個顯性位將被解釋為一個幀起始。
暫停發(fā)送場是指錯誤消極節(jié)點發(fā)送一個報文以后,在開始發(fā)送下一個報文或者認可總線處于空閑之前,在間歇場后發(fā)出的8個隱性位。如果在此期間一次由其他節(jié)點引起的傳送開始了,則該節(jié)點將成為報文接收器。
四、CAN數(shù)據(jù)傳輸系統(tǒng)構(gòu)成及過程
(1)CAN數(shù)據(jù)傳輸系統(tǒng)構(gòu)成
CAN數(shù)據(jù)傳輸系統(tǒng)中每塊電腦的內(nèi)部增加了一個CAN控制器,一個CAN收發(fā)器;每塊電腦外部連接了兩條CAN數(shù)據(jù)總線。在系統(tǒng)中作為終端的兩塊電腦,其內(nèi)部還裝有一個數(shù)據(jù)傳遞終端(有時數(shù)據(jù)傳遞終端安裝在電腦外部)。
(2)各部件功能
?、貱AN控制器作用是接收控制單元中微處理器發(fā)出的數(shù)據(jù),處理數(shù)據(jù)并傳給CAN收發(fā)器。同時CAN控制器也接收收發(fā)器收到的數(shù)據(jù),處理數(shù)據(jù)并傳給微處理器。
?、贑AN收發(fā)器 是一個發(fā)送器和接收器的組合,它將CAN控制器提供的數(shù)據(jù)轉(zhuǎn)化成電信號并通過數(shù)據(jù)總線發(fā)送出去,同時,它也接收總線數(shù)據(jù),并將數(shù)據(jù)傳到CAN控制器。
?、蹟?shù)據(jù)傳遞終端 實際是一個電阻器,作用是避免數(shù)據(jù)傳輸終了反射回來,產(chǎn)生反射波而使數(shù)據(jù)遭到破壞。
④CAN數(shù)據(jù)總線 用以傳輸數(shù)據(jù)的雙向數(shù)據(jù)線,分為CAN高位(CAN-high)和低位(CAN—low)數(shù)據(jù)線。數(shù)據(jù)沒有指定接收器,數(shù)據(jù)通過數(shù)據(jù)總線發(fā)送給各控制單元,各控制單元接收后進行計算。為了防止外界電磁波干擾和向外輻射,CAN總線采用兩條線纏繞在一起,兩條線上的電位是相反的,如果一條線的電壓是5V,另一條線就是0V,兩條線的電壓和總等于常值。通過該種辦法,CAN總線得到保護而免受外界電磁場干擾,同時CAN總線向外輻射也保持中性,即無輻射。
?。?)數(shù)據(jù)傳遞過程
例如:發(fā)動機電腦向某電腦CAN收發(fā)器發(fā)送數(shù)據(jù),該電腦CAN收發(fā)器接收到由發(fā)動機電腦傳來的數(shù)據(jù),轉(zhuǎn)換信號并發(fā)給本電腦的控制器。CAN數(shù)據(jù)傳輸系統(tǒng)的其他電腦收發(fā)器均接收到此數(shù)據(jù),但是要檢查判斷此數(shù)據(jù)是否是所需要的數(shù)據(jù),如果不是將忽略掉。
評論