簡單地講 CAN 總線就如上圖中兩根粗黃線,其通訊原理:好比開一個電話會議,要保證這個電話會議的有序高效地進(jìn)行,那么我們需要有一些約定俗成的規(guī)定或協(xié)議,大家都遵守。
汽車上之所以大量使用 CAN 總線通訊,是因?yàn)?CAN 通訊具有以下優(yōu)勢:
-
簡單且成本低:ECU 通過單個 CAN 系統(tǒng)進(jìn)行通訊,而不是直接復(fù)雜的模 擬信號線通訊,減少了錯誤、重量、接線和成本。
-
完全集中:CAN 總線提供了一個進(jìn)入點(diǎn)們可以于所有網(wǎng)絡(luò) ECU 進(jìn)行通訊 ——支持集中真的,數(shù)據(jù)記錄和配置。
-
極其堅固:CAN 總線具有強(qiáng)大的抗電干擾和電磁干擾能力,非常適合對安 全要求嚴(yán)格的應(yīng)用(例如車輛)
-
非常高效:通過 ID 對 CAN 幀進(jìn)行優(yōu)先級排序,以便有些級最高的數(shù)據(jù)可 以立即訪問總線而不會引起其他幀的中斷)
通訊協(xié)議 ISO-11898:2003 標(biāo)準(zhǔn)介紹網(wǎng)絡(luò)上的設(shè)備間信息是如何傳遞的,以及符合開放系統(tǒng)互聯(lián)參考模型(OSI)的哪些分層項。
實(shí)際通訊是在連接設(shè)備的物理介 質(zhì)中進(jìn)行,物理介質(zhì)的特性由模型中的物理層定義。ISO11898 體系結(jié)構(gòu)定義七層, OSI 模型中的最低兩層作為數(shù)據(jù)鏈路層和物理層。
CAN 總線協(xié)議是一種 ISO 國際標(biāo)準(zhǔn)化的串行通信協(xié)議,有 ISO-11898 和 ISO-11519 兩個系列:
-
ISO-11898 定義了通信速率為 125 kbps ~1Mbps 的高速 CAN 通信標(biāo)準(zhǔn), 屬于閉環(huán)總線,傳輸速率可達(dá) 1Mbps,總線長度 ≤ 40 米。
-
ISO11519 定義了通信速率為 10~125 kbps 的低速 CAN 通信標(biāo)準(zhǔn),屬于 開環(huán)總線,傳輸速率為 40kbps 時,總線長度可達(dá) 1000 米。
兩種 CAN 總線結(jié)構(gòu)都由各個電控節(jié)點(diǎn) CAN 收發(fā)器、數(shù)據(jù)傳輸終端 以及數(shù)據(jù)傳輸線組成。其中 CAN_H 和 CAN_L 線是以雙絞形式纏繞,每個節(jié)點(diǎn)都有 CAN 收發(fā)器和 CAN 控制器,CAN 收發(fā)器和 CAN 控制器可能集成在芯片,也可能是獨(dú)立于芯片。
要傳遞數(shù)據(jù)信息,我們通常采用十進(jìn)制來表達(dá),對應(yīng)的在 CAN 總線上,采用二 進(jìn)制表達(dá),CAM 信號表現(xiàn)為電壓形式,通過 CAN_H 和 CAN_L 線上的電位差來表示 CAN 信號,分為顯性電平和隱性電平兩種類型,具體解析規(guī)則如下:
-
CANH 與 CANL 線壓差小于 1.5V 以下,認(rèn)為是隱性電平,為邏輯 1
-
CANH 與 CANL 線壓差在 1.5V-2.5V 范圍,認(rèn)為是顯性電平,為邏輯 0
當(dāng) CAN_H 和 CAN_L 的電壓均為 2.5v,兩者電壓差為 0,就規(guī)定 CAN 信號為隱性電平;當(dāng) CAN_H 的電壓為 3.5v,CAN_L 的電壓為 1.5v,兩者電壓 差為 2V,就規(guī)定 CAN 信號為顯性電平。
CAN 總線是一種廣播類型的總線,可支持線形拓?fù)洹⑿切瓮負(fù)洹?span>樹形拓?fù)?/span>和環(huán)形拓?fù)涞?。CAN 網(wǎng)絡(luò)中至少需要兩個節(jié)點(diǎn)設(shè)備才可進(jìn)行通信,無法僅向某一個特定節(jié)點(diǎn)設(shè)備發(fā)送消息,發(fā)送數(shù)據(jù)時所有節(jié)點(diǎn)都不可避免地接收所有流量。但是,CAN 總線硬件支持本地過濾,因此每個節(jié)點(diǎn)可以設(shè)置對有效的消息做出反應(yīng)。
在不破線情況通常可以從 OBD 口采集整車數(shù)據(jù),商用車通用 ODB 定義:
CAN 故障概述 正常情況下,當(dāng) CAN 總線喚醒后,CANH 對地電壓約為 2.656V,CANL 對地 電壓約為 2.319V,而且兩者相加為 4.975V
CAN 通訊故障主要是指 CAN 網(wǎng)絡(luò)中某個或多個節(jié)點(diǎn)數(shù)據(jù)傳輸異常,控制器之 間無法正常通訊。
由于 CAN 網(wǎng)絡(luò)節(jié)點(diǎn)中眾多,當(dāng)出現(xiàn) CAN 通訊故障時往往會出現(xiàn) 多種奇怪的故障現(xiàn)象,如儀表板顯示異常,車輛無法啟動,啟動后無法熄滅,車輛 動力性能下降,某些電控系統(tǒng)功能失等。這是因?yàn)橄嚓P(guān)數(shù)據(jù)或信息是通過CAN總線傳輸?shù)?,如果傳輸失敗,那么會產(chǎn)生多種連帶故障,甚至造成整個網(wǎng)絡(luò)系統(tǒng)癱瘓。
CANH 和 CANL 短路故障
故障現(xiàn)象:當(dāng) CAN H 與 CAN L 短路時,CAN 網(wǎng)絡(luò)會關(guān)閉,無法再進(jìn)行通信,CAN 電壓 電位置于隱性電壓值(約 2.5V)。實(shí)際測量兩條 CAN 導(dǎo)線的電壓,會發(fā)現(xiàn)始終在 2.5V 左右,基本不變化,波形及電壓如下所示。
故障排除方法:通過插拔 CAN 總線上的控制模塊(節(jié)點(diǎn)),可以判斷是由節(jié)點(diǎn)引起的短路還是 導(dǎo)線連接引起的短路。再逐個斷開節(jié)點(diǎn),若電壓恢復(fù)正常,則說明該節(jié)點(diǎn)有問題。若斷開所有節(jié)點(diǎn)后電壓還沒有變化,則說明線路短路。
CANH 對電源短路故障
故障現(xiàn)象:當(dāng)出現(xiàn) CAN H 對電源(正極)短路這種故障時,根據(jù) CAN 總線的容錯特性, 可能出現(xiàn)整個 CAN 網(wǎng)絡(luò)無法通信的情況,以對 12V 電源短路為例,此時 CAN H 電 壓電位被置于 12V,CAN L 線的隱性電壓被置于大約 12V。
故障排除方法:如果不是 CANH 導(dǎo)線對外部電源短路引起的,那么這種故障就有可能是控制模 塊內(nèi)部的 CAN 收發(fā)器損壞造成的。通過插拔 CAN 總線上的每個控制模塊(節(jié)點(diǎn)), 可以判斷是由節(jié)點(diǎn)引起的還是導(dǎo)線連接引起的。再逐個斷開節(jié)點(diǎn),若電壓恢復(fù)正常, 則說明該節(jié)點(diǎn)有問題。若斷開所有節(jié)點(diǎn)后電壓還沒有變化,則說明線路短路。