日期:2022-09-15瀏覽:1926次
上海嘉興寧波蘇州汽車CAN總線測試
一、概述
汽車電子設備的不斷增多,對汽車上的線束分布以及信息共享與交流提出了更高的要求。傳統的電氣系統往往采用單一連接的方式通信,這必將帶來線束的冗余以及維修的成本的提高。
汽車通信總線CAN總線介紹
傳統的單一通信的對接方式,已經不能滿足現代汽車電子發展的需求,采用更為先進的總線技術勢在必行。總線技術可以實現信息的實時共享、解決了傳統布線方式中線束多、布線難、成本高等問題,從而提高整車通信的質量與品質。
CAN 總線(Controller Area Network,控制器局域網絡)由德國博世公司于上世紀 80 年代提出,近 20 年來,隨著 CAN 總線在工業測控與汽車領域的普及,CAN 網絡技術不斷優化,取得了長足發展。如今 CAN 總線已經成為了汽車上*重要環節,ECU 內部的 CAN 總線開發也占到了 ECU 開發中的很大分量。在汽車中為了滿足車載系統的不同要求,主要采用高速 CAN 和低速 CAN。這兩者以不同的總線速率工作以獲得最佳的性價比,在兩條總線之間采用 CAN 網關進行連接。
高速 CAN(動力總線):高速 CAN 總線的傳輸速率范圍在 125kbit/s – 1Mbit/s 之間,主要用于傳動系數傳輸的實時性要求(如發動機控制、自動變速箱控制、行駛穩定系統、組合儀表等)。
低速 CAN(舒適總線):低速 CAN 總線的傳輸速率范圍在 5kbit/s – 125kbit/s 之間。主要用于舒適系統和車身系統的數據傳輸的實時性要求(如空調控制、座椅調節、車窗升降等)。
二、CAN 總線特點
CAN 總線是一種串行數據通訊協議,其中包含了 CAN 協議的物理層以及數據鏈路層。可以完成對數據的位填充,數據塊編碼,循環冗余效驗,幀優先級的判別等工作。其主要特點如下:
多主機方式工作,網絡上任意一個節點(未脫離總線)均可以隨時向總線網絡上發布報文幀。
節點發送的報文幀可以分為不同的優先級,滿足不同實時要求。
采用載波偵聽多路訪問/沖突檢測(CSMA/CD)技術,當兩個節點同時發布信息時,高優先級報文可不受影響地傳輸數據。
節點總數實際可達 110 個。
采用短幀結構,每一幀最多有 8 個有效字節。
當某個節點錯誤嚴重時,具有自動關閉功能,切斷與總線的聯系,致使總線上的其他操作不受影響。
三、CAN 總線物理層
3.1 總線結構
CAN 總線采用雙線傳輸,兩根導線分別作為 CANH、CANL,并在終端配備有 120Ω的電阻。收到總線信號時,CAN 收發器將信號電平轉化為邏輯狀態,即 CANH 與 CANL 電平相減后,得到一個插值電平。各種干擾(如點火系統)在兩根導線上的作用相同,相減后得到的插值電平可以濾過這些干擾。
3.2 總線電平
CAN 總線有兩種邏輯電平狀態,即顯性與隱性。顯性電平代表“0”,隱性電平代表“1”。采用非歸零碼編碼,即在兩個相同電平之間并不強制插入一個零狀態電平。高速 CAN 在傳輸隱性位時,CAN-H 與 CAN-L 上的電平位均為 2.5V;在傳輸顯性位時分別為 3.5V 與 1.5V。低速 CAN 在傳輸隱性狀態位時,CAN-H 上的電平為 0V,CAN-L 上的電平位 5V。在傳輸顯性狀態位時,CAN-H 上的電平位 3.6V,CAN_L 的位 1.4V。
為了確保通訊的正確性,總線信號必須在一定時間內出現在總線上,并且保證被正確采樣。總線信號傳輸有一定的時間延遲,最大的可靠的總線波特率與總線長度有。
ISO11898 中對各種總線長度有著以下定義:
1Mbit/s 總線長度為 40m(規范)。
500kbit/s 總線長度最大值為 100m(建議值)。
250kbit/s 總線長度最大值為 250m。
125kbit/s 總線長度最大值為 500m。
40kbit/s 總線長度最大值為 1000m。
四、CAN 總線硬件設備
CAN 通信線纜,實現節點的互聯,是傳輸數據的通道。主要有:普通雙絞線,同軸電纜,光纖。
CAN 驅動/接收器,將信息封裝為幀后發送,接收到的幀將其還原為信息、標定并報告節點狀態。
CAN 控制器,專按協議要求設計制造,經簡單總線連接即可實現 CAN 的全部功能。包括:TJA1042(NXP)、SJA1000(Philips)、82527(Intel)。
CAN 微控制器,嵌有部分或全部 CAN 控制模塊及相關接口的通用型微控制器現如今很多芯片都配備 CAN 接口。
五、CAN 報文幀結構
在 CAN 總線上,報文是以“幀”來發送的,每一幀都包含以下幾個部分:
1. 幀起始
在總線空閑時,總線為隱性狀態。幀起始由單個顯性位構成,標志著報文的開始,并在總線上起著同步作用。
2. 仲裁段
仲裁的主要是定義了報文的標識符,也俗稱 ID。在 CAN2.0A 規范中,標識符為 11 位,而在 CAN2.0B 中變為了 29 位。這意味著在 2.0B 中可以存在更多不同類型的報文,但是也降低了總線的利用率。
3. 控制段
主要定義了數據域字節的長度。通過數據長度碼,接收節點可以判斷報文數據是否完整。
4. 數據域
包含有 0~8 個字節數據。
5. CRC 域
CRC 又稱循環冗余碼效驗(Cyclical Redundancy Check),是數據通信中常見的查錯方法。
6. ACK 域
用于接收節點的反饋應答。
7. 幀結束
由一串 7 個隱性位組成,表示報文幀的結束。
Ps:在 CAN 總線的開發中,核心的關注點就是CAN 報文 ID 以及其數據域。根據客戶的要求,ECU 接收自己感興趣的 ID 報文的同時,也向外發送別的 ECU 所需要的 ID 報文。一般不同整車廠在開發自己的 CAN 協議規范的同時,也會有自己的checksum 機制,不滿足 checksum 的報文,數據將不會被 ECU 所接收。
六、仲裁機制
仲裁是總線應用中一個相當重要的概念,在 CAN 總線采用載波偵聽多路訪問/沖突檢測(CSMA/CD)技術。如果總線空閑(隱性位),有報文準備發送,那么每一個節點都可以開始發送報文。報文以顯性位(報文幀開始位)開始,接著是標識符。如果多個節點同時開始發送報文,那么使用“線與”仲裁機制(仲裁用邏輯“與”)來解決總線沖突,確定優先級*高的報文,而不需要損失時間或數據(非破壞性仲裁)。仲裁機制使用標識符為判斷依據,不僅代表報文幀的內容,還代表報文幀發送的優先級。二進制數越小的標識符,優先級越高;反之亦然。
如上圖,ECU 單元 1 和 ECU 單元 2 同時開始向總線發送數據,開始部分他們的數據格式是一樣的,故無法區分優先級,直到 T 時刻,單元 1 輸出隱性電平,而單元 2 輸出顯性電平,此時單元 1 仲裁失利,立刻轉入接收狀態工作,不再與單元 2 競爭,而單元 2 則順利獲得總線使用權,繼續發送自己的數據。
七、CAN 報文幀種類
CAN 總線報文傳輸有以下 4 種不同的格式:
數據幀:由發送節點發出,包含 0 – 8 個數據字節。
遠程幀:發送遠程幀向網絡節點請求發送某一標識符的數據幀。
錯誤幀:總線節點發現錯誤時,以錯誤幀的方式通知網絡上的其他節點。
過載幀:發送過載幀,表示當前節點不能處理后續的報文(如幀延遲等)。 Ps:為了保持總線的利用率,在車載總線上數據幀的報文一般均為 8 字節。
八、CAN 總線錯誤
CAN 總線將錯誤分為臨時性錯誤和長期性錯誤。前者主要由外部因素引起,如總線上驅動電壓波形不規整、有尖峰或毛刺時,其數據傳輸性能會受到一定程度的短期干擾。長期性錯誤則主要由網絡組建非正常狀況引起,比如接觸不良、線路故障、發送器或接收器失效等。CAN 中每個具有數據通信能力的網絡單元內部都集成有一個發送錯誤計數器和接受錯誤計數器,當該單元在數據發送階段出現一次錯誤時,其發送錯誤計數器自加 8;在數據接收階段出現一次錯誤時,其接收錯誤計數器自加 1。在相應計數器內容非 0 的情況下,網絡單元每成功發送一幀,發送錯誤計數器自減 1;每成功接收一幀,接收錯誤計數內容原本小于 127 時自減 1,大于 127 時被置為 119 – 127 之間任意值。這樣,如果某個網絡單元的錯誤計數在不斷增長,就說明該單元的數據通信在頻繁發生故障。當計數器內容超過一定閾值時,可以認為該故障是由長期性錯誤引起的。這種機制保證了當某一個節點出現故障的時候,不會造成總線長時間癱瘓。