- 汽車車載網(wǎng)絡(luò)技術(shù)詳解(第3版)
- 劉春暉 劉光曉主編
- 4359字
- 2020-08-07 16:31:03
第二節(jié) CAN總線系統(tǒng)元件功能和數(shù)據(jù)傳輸過程
一、CAN總線系統(tǒng)元件的功能
如圖2-14所示,CAN總線系統(tǒng)元件主要由K線、控制單元、CAN構(gòu)件、收發(fā)器等組成。

圖2-14 CAN總線系統(tǒng)元件
1.K線
K線用于在CAN總線系統(tǒng)自診斷時連接汽車故障檢測儀(如VAS5051),屬于診斷用的通信線。
2.控制單元
控制單元接收來自傳感器的信號,將其處理后再發(fā)送到執(zhí)行元件上。控制單元中的微控制器上帶有輸入輸出存儲器和程序存儲器。
定期查詢控制單元接收到的傳感器值(如發(fā)動機轉(zhuǎn)速或冷卻液溫度)并按順序存入輸入存儲器。微控制器按事先編制好的程序來處理輸入值,處理后的結(jié)果存入相應(yīng)的輸出存儲器內(nèi),然后到達各個執(zhí)行元件。為了能夠處理CAN信息,各控制單元內(nèi)還有一個CAN存儲區(qū),用于容納接收到的和要發(fā)送的信息。
3.CAN構(gòu)件
CAN構(gòu)件用于數(shù)據(jù)交換,它分為兩個區(qū):一個是接收區(qū),一個是發(fā)送區(qū)。CAN構(gòu)件通過接收郵箱或發(fā)送郵箱與控制單元相連,其工作過程與郵局收發(fā)郵件的過程非常相似。CAN構(gòu)件一般集成在控制單元的微控制器芯片內(nèi)。
4.收發(fā)器
收發(fā)器就是一個發(fā)送-接收放大器,在接收數(shù)據(jù)時,收發(fā)器把CAN構(gòu)件連續(xù)的比特流(亦稱邏輯電平)轉(zhuǎn)換成電壓值(線路傳輸電平);當發(fā)送數(shù)據(jù)時,收發(fā)器把電壓值(線路傳輸電平)轉(zhuǎn)換成連續(xù)的比特流。線路傳輸電平非常適合在銅質(zhì)導(dǎo)線上進行數(shù)據(jù)傳輸。收發(fā)器通過TX線(發(fā)送線)或RX線(接收線)與CAN構(gòu)件相連。RX線通過一個放大器直接與CAN總線相連,并總是在監(jiān)聽總線信號。
(1)收發(fā)器的特點 如圖2-15所示,收發(fā)器的TX線始終與總線耦合,兩者的耦合過程是通過一個開關(guān)電路來實現(xiàn)的。收發(fā)器內(nèi)晶體管的狀態(tài)與總線電平之間的對應(yīng)關(guān)系見表2-5。

圖2-15 收發(fā)器的TX線與總線的耦合
表2-5 收發(fā)器內(nèi)晶體管的狀態(tài)與總線電平之間的對應(yīng)關(guān)系

(2)多個收發(fā)器與總線導(dǎo)線的耦合 當有多個收發(fā)器與總線導(dǎo)線耦合時,總線的電平狀態(tài)將取決于各個收發(fā)器開關(guān)狀態(tài)的邏輯組合。下面以3個收發(fā)器接到一根總線導(dǎo)線上(圖2-16)的情況為例加以說明。

圖2-16 3個收發(fā)器接到一根總線導(dǎo)線上
在圖2-16中,收發(fā)器A和收發(fā)器B的開關(guān)呈斷開狀態(tài),收發(fā)器C的開關(guān)呈閉合狀態(tài)。開關(guān)斷開表示1(無源),開關(guān)閉合表示0(有源)。
由圖2-16不難看出,如果某一開關(guān)已閉合,電阻上就有電流流過,于是總線導(dǎo)線上的電壓就為0V;如果所有開關(guān)均未閉合,那么電阻上就沒有電流流過,電阻上就沒有壓降,于是總線導(dǎo)線上的電壓就為5V。
3個收發(fā)器開關(guān)的狀態(tài)與總線電平的邏輯關(guān)系見表2-6。
表2-6 3個收發(fā)器開關(guān)的狀態(tài)與總線電平的邏輯關(guān)系

如果總線處于狀態(tài)1(無源),那么該狀態(tài)可以由某一個控制單元使用狀態(tài)0(有源)來改寫。一般將無源的總線電平稱為隱性的,有源的總線電平稱為顯性的。
其意義體現(xiàn)在:
1)發(fā)送傳輸錯誤信號時(錯誤幀故障信息)。
2)沖突識別時(如果幾個控制單元想同時發(fā)送信息)。
二、CAN總線的數(shù)據(jù)傳輸過程
以發(fā)動機轉(zhuǎn)速信息的傳輸過程為例,介紹CAN總線上的數(shù)據(jù)傳輸過程。從發(fā)動機轉(zhuǎn)速信號獲取、接收、傳輸,直到在發(fā)動機轉(zhuǎn)速表上顯示出來,從這一完整的數(shù)據(jù)傳輸過程中,可以清楚地看出數(shù)據(jù)傳輸?shù)臅r間順序以及CAN構(gòu)件與控制單元之間的配合關(guān)系。
1.信息格式的轉(zhuǎn)換
首先是發(fā)動機控制單元的傳感器接收到發(fā)動機轉(zhuǎn)速信息(轉(zhuǎn)速值)。該值以固定的周期(循環(huán)往復(fù)地)到達微控制器的輸入存儲器內(nèi)。
由于瞬時轉(zhuǎn)速值不僅用于發(fā)動機運轉(zhuǎn)控制、變速器換檔控制,還用于其他控制單元(如組合儀表),故該值通過CAN總線來傳輸,以實現(xiàn)信息共享。于是轉(zhuǎn)速值就被復(fù)制到發(fā)動機控制單元的發(fā)送存儲器內(nèi)。該信息從發(fā)送存儲器進入CAN構(gòu)件的發(fā)送郵箱內(nèi)。
如果發(fā)送郵箱內(nèi)有一個發(fā)動機轉(zhuǎn)速實時值,那么該值會由發(fā)送特征位顯示出來。將發(fā)送任務(wù)委托給CAN構(gòu)件,發(fā)動機控制單元就完成數(shù)據(jù)傳輸任務(wù)。
如圖2-17所示,發(fā)動機轉(zhuǎn)速值按協(xié)議被轉(zhuǎn)換成標準的CAN信息格式。
在本例中,狀態(tài)區(qū)(標識符)=發(fā)動機1,數(shù)據(jù)區(qū)(信息內(nèi)容)=發(fā)動機轉(zhuǎn)速值(即發(fā)動機轉(zhuǎn)速為×××r/min)。當然,CAN總線上傳輸?shù)臄?shù)據(jù)也可以是其他信息(如節(jié)氣門開度、冷卻液溫度、發(fā)動機轉(zhuǎn)矩等),具體內(nèi)容取決于系統(tǒng)軟件的設(shè)定。

圖2-17 發(fā)動機轉(zhuǎn)速值按協(xié)議被轉(zhuǎn)換成標準的CAN信息格式
2.請求發(fā)送信息——總線狀態(tài)查詢
如果發(fā)送郵箱內(nèi)有一個發(fā)動機轉(zhuǎn)速實時值,那么該值會由發(fā)送特征位顯示出來——請求發(fā)送信息,相當于學(xué)生舉手向老師示意,申請發(fā)言。
只有總線處于空閑狀態(tài)時,控制單元才能向總線發(fā)送信息。如圖2-18所示,CAN構(gòu)件通過RX線來檢查總線是否有源(是否正在交換其他信息),必要時會等待,直至總線空閑下來為止。

圖2-18 總線狀態(tài)查詢
如果在某一時間段內(nèi),總線電平一直為1(總線一直處于無源狀態(tài)),則說明總線處于空閑狀態(tài)。
3.發(fā)送信息
如圖2-19所示,如果總線空閑下來,發(fā)動機信息就會被發(fā)送出去。
4.接收過程
如圖2-20所示,連接在CAN總線上的所有控制單元都接收發(fā)動機控制單元發(fā)送的信息,該信息通過RX線到達CAN構(gòu)件各自的接收區(qū)。
接收過程分兩步,首先檢查信息是否正確(在監(jiān)控層),然后檢查信息是否可用(在接收層)。
(1)檢查信息是否正確(在監(jiān)控層)接收器接收發(fā)動機的所有信息,并且在相應(yīng)的監(jiān)控層檢查這些信息是否正確。這樣就可以識別出在某種情況下某一控制單元上出現(xiàn)的局部故障。按照CAN總線的信息廣播原理,連接在CAN總線上的所有控制單元都接收發(fā)動機控制單元發(fā)送的信息。數(shù)據(jù)傳輸是否正確,可以通過監(jiān)控層內(nèi)的CRC校驗和數(shù)來進行校驗。CRC校驗即為循環(huán)冗余碼校驗(Cycling Redundancy Check, CRC)。

圖2-19 信息發(fā)送過程

圖2-20 信息接收過程
在發(fā)送每個信息時,所有數(shù)據(jù)位會產(chǎn)生并傳遞一個16位的校驗和數(shù),接收器按同樣的規(guī)則從所有已經(jīng)接收到的數(shù)據(jù)位中計算出校驗和數(shù),隨后系統(tǒng)將接收到的校驗和數(shù)與計算出的實際校驗和數(shù)進行比較。如果兩個校驗和數(shù)相等,確認無數(shù)據(jù)傳輸錯誤,那么連接在CAN總線上的所有控制單元都會給發(fā)射器一個確認回答(亦稱應(yīng)答,見圖2-21),這個回答就是所謂的“信息收到符號”(acknowledge, Ack),它位于校驗和數(shù)之后。

圖2-21 確認信息已經(jīng)接收
如圖2-22所示,經(jīng)監(jiān)控層監(jiān)控、確認無誤后,已接收到的正確信息會到達相關(guān)CAN構(gòu)件的接收區(qū)。
(2)檢查信息是否可用(在接收層)CAN構(gòu)件的接收層判斷該信息是否可用。如果該信息對本控制單元來說是有用的,則舉起接收旗,予以放行(圖2-23),該信息就會進入相應(yīng)的接收郵箱;如果該信息對本控制單元來說是無用的,則可以拒絕接收。

圖2-22 監(jiān)控層對信息進行監(jiān)控

圖2-23 接收層判斷信息是否可用
在圖2-20中,連接在CAN總線上的組合儀表根據(jù)升起的“接收旗”就會知道,現(xiàn)在有一個信息(發(fā)動機轉(zhuǎn)速)在排隊等待處理。組合儀表調(diào)出該信息并將相應(yīng)的值復(fù)制到它的輸入存儲器內(nèi)。通過CAN總線進行的數(shù)據(jù)傳輸(發(fā)送和接收信息)過程至此結(jié)束。
在組合儀表內(nèi)部,發(fā)動機轉(zhuǎn)速信息經(jīng)微控制器處理后到達執(zhí)行元件并最后到達發(fā)動機轉(zhuǎn)速表,顯示出發(fā)動機轉(zhuǎn)速的具體數(shù)值。
上述數(shù)據(jù)傳輸過程按設(shè)定好的循環(huán)時間(如10ms)在CAN總線上周而復(fù)始地重復(fù)進行。
5.沖突仲裁
如果多個控制單元同時發(fā)送信息,那么數(shù)據(jù)總線上就必然會發(fā)生數(shù)據(jù)沖突。為了避免發(fā)生這種情況,CAN總線具有沖突仲裁機制。按照信息的重要程度分配優(yōu)先權(quán),緊急的信息(如事關(guān)汽車被動安全、汽車穩(wěn)定性控制的信息)優(yōu)先權(quán)高,不是特別緊急的信息(如車窗玻璃升降、車門鎖止等)優(yōu)先權(quán)低,確保優(yōu)先權(quán)高的信息能夠優(yōu)先發(fā)送。
1)每個控制單元在發(fā)送信息時通過發(fā)送標識符來標識信息類別,信息優(yōu)先權(quán)包含在標識符中。
2)所有控制單元都通過各自的RX線來跟蹤總線上的一舉一動并獲知總線狀態(tài)。
3)每個控制單元的發(fā)射器都將TX線和RX線的狀態(tài)一位一位地進行比較(它們可以不一致)。
4)數(shù)據(jù)傳輸總線的調(diào)整規(guī)則:用標識符中位于前部的“0”的個數(shù)代表信息的重要程度,“0”的位數(shù)越多越優(yōu)先,從而保證按重要程度的順序來發(fā)送信息。越早出現(xiàn)“1”的控制單元,越早退出發(fā)送狀態(tài)而轉(zhuǎn)為接收狀態(tài)。基于安全考慮,涉及安全系統(tǒng)的數(shù)據(jù)優(yōu)先發(fā)送。
例如,由ABS/EDL電控單元提供的數(shù)據(jù)比自動變速器控制單元提供的數(shù)據(jù)(駕駛舒適)更重要,因此具有優(yōu)先權(quán)。數(shù)據(jù)列的狀態(tài)域是由11位組成的編碼,其數(shù)據(jù)的組合形式?jīng)Q定了數(shù)據(jù)的優(yōu)先權(quán),如圖2-24所示。3個控制單元同時發(fā)送數(shù)據(jù)列,此時,在CAN-BUS數(shù)據(jù)傳輸線上進行一位一位的比較,如果1個控制單元發(fā)送了1個低電位而檢測到1個高電位,那么該控制單元就停止發(fā)送數(shù)據(jù)列而轉(zhuǎn)為接收器。

圖2-24 優(yōu)先權(quán)判定舉例
表2-7是3組不同數(shù)據(jù)列的優(yōu)先權(quán)。例如,如圖2-25所示,在數(shù)據(jù)列的狀態(tài)域位1,ABS/EDL控制單元發(fā)送了1個高電位,發(fā)動機控制單元也發(fā)送了1個高電位,自動變速器控制單元發(fā)送了1個低電位而檢測到1個高電位,那么自動變速器控制單元將失去優(yōu)先權(quán)而轉(zhuǎn)為接收器。在數(shù)據(jù)列的狀態(tài)域位2,ABS/EDL控制單元發(fā)送了1個高電位,發(fā)動機控制單元發(fā)送了1個低電位并檢測到1個高電位,那么,發(fā)動機控制單元也失去優(yōu)先權(quán)而轉(zhuǎn)為接收器。在數(shù)據(jù)列的狀態(tài)域位3,ABS/EDL控制單元擁有最高優(yōu)先權(quán)并接收分配的數(shù)據(jù),該優(yōu)先權(quán)保證其持續(xù)發(fā)送數(shù)據(jù)直至發(fā)送終了,ABS/EDL控制單元結(jié)束發(fā)送數(shù)據(jù)后,其他控制單元再發(fā)送各自的數(shù)據(jù)。
表2-7 3組不同數(shù)據(jù)列的優(yōu)先權(quán)


圖2-25 數(shù)據(jù)列優(yōu)先權(quán)的判定
三、內(nèi)部故障管理
為了保證數(shù)據(jù)的安全性,CAN系統(tǒng)具有很強的內(nèi)部故障管理功能。這樣就可以識別出可能出現(xiàn)的數(shù)據(jù)傳遞故障,從而采取相應(yīng)的措施。無法識別故障的概率,也就是所謂的剩余誤差概率<10-12。這個概率值相當于每輛車在使用壽命內(nèi)出現(xiàn)4次數(shù)據(jù)傳遞故障。
由于廣播的特點(一個發(fā)射,其他所有的接收并使用),任何一個網(wǎng)絡(luò)使用者如果發(fā)現(xiàn)一個傳遞故障,那么其他所有的網(wǎng)絡(luò)使用者都會立即收到一個信息通知,這個通知稱為“錯誤幀”。于是所有網(wǎng)絡(luò)使用者就會拒收當前的信息。隨后該信息會自動再發(fā)送一次,這樣的過程其實是完全正常的,其原因可能是由于車上電壓波動較大,例如車在起動時或有來自外部的較強干擾。
由于不斷識別出故障,因此自動重新發(fā)送過程就越來越多,為此每個網(wǎng)絡(luò)使用者都配有一個內(nèi)部故障計數(shù)器(圖2-26),它可以累計識別出的故障,在成功完成重新發(fā)送過程后計數(shù)器再遞減計數(shù)。
內(nèi)部故障計數(shù)器只負責內(nèi)部的故障管理,無法讀出其中的內(nèi)容。當超過某一規(guī)定的界限值(相當于最多32次重新發(fā)送過程)時,相應(yīng)的控制單元會得到通知并被CAN總線關(guān)閉。兩次Bus-Off(總線關(guān)閉)狀態(tài)后(在此期間無通信),故障存儲器就會記錄一條故障。經(jīng)過一段固定的等待時間(約0.2s)后,控制單元會自動再接到總線上。
信息的傳遞一般是按規(guī)定的循環(huán)時間來進行的,這樣才能保證及時地傳遞相應(yīng)的信息。如果出現(xiàn)延遲,也就是說:至少有10條信息未收到,那么所謂的時間監(jiān)控功能(信息超時)就會啟動。于是正在接收的控制單元故障存儲器內(nèi)也記錄一個故障,這是故障管理中的第二套機構(gòu)。由此產(chǎn)生如下故障信息,這些信息用于售后服務(wù)故障診斷:
1)數(shù)據(jù)總線損壞。相應(yīng)的控制單元有嚴重故障。該控制單元至少兩次與總線斷開(Bus-Off)。
2)無相關(guān)控制單元信息或無法與相關(guān)控制單元取得聯(lián)系。無法及時接收到信息,時間監(jiān)控啟動。

圖2-26 內(nèi)部故障計數(shù)器