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

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

圖2-15 收發器的TX線與總線的耦合
表2-5 收發器內晶體管的狀態與總線電平之間的對應關系

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

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

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

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

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

圖2-19 信息發送過程

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

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

圖2-22 監控層對信息進行監控

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

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


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

圖2-26 內部故障計數器