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