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