You dont have javascript enabled! Please enable it!

CAN總線

科目:

  • 介紹
  • 一輛車多個網絡
  • CAN 網路與節點
  • 不同類型的 CAN 速度
  • CAN總線訊號
  • 速度和電壓水平
  • (標準)11 位元標識符的 CAN 總線訊息的結構
  • (擴充)28 位元標識符的 CAN 總線訊息的結構
  • 使用 Bitstuffing 以及 CRC 和 ACK 定界符進行錯誤識別
  • 雙絞線接線
  • 終端電阻
  • 網關
  • CAN 總線上的測量

介紹:
現代車輛都裝有電子設備。 控制單元收集並處理來自感測器和控制執行器的資料。 不同的ECU經常使用相同的數據:d加速踏板位置感知器記錄加速踏板的位置。 此訊號透過接線直接發送至引擎 ECU。 引擎 ECU 不是唯一使用該訊號的 ECU:

  • 引擎 ECU 使用油門踏板位置感知器的訊號來控制節氣門,加速時透過延長噴油器的啟動時間來實現加速加濃,並在必要時調整點火正時。 控制渦輪的廢氣旁通閥或VGT調節;
  • 自排變速箱的ECU使用油門踏板位置來決定自動變速箱中離合器的換檔時間。 若輕踩油門踏板,自排變速箱將以比半踩油門踏板時更低的速度升檔。 突然快速踩下油門踏板,就會出現“降檔”,換到較低的檔位,使引擎轉速更高;
  • 彎道加速程度可能是 ESP-ECU 透過降低引擎功率進行 ESP 幹預的一個原因,如有必要, 對旋轉的車輪施加煞車。

在 ESP 幹預期間,透過(部分)關閉節氣門並噴射較少的燃油來降低引擎功率。 儀表板上的指示燈也會亮起或閃爍,提醒駕駛 ESP 正在運作。

上面清楚地展示了不同ECU之間的協作。 CAN 總線確保 ECU 相互通信,因此可以相互交換資料。 CAN 是控制器區域網路的縮寫。 

引擎ECU
引擎室內置引擎ECU

80年代,汽車收到越來越多的配件,製造商開始安裝控制裝置。 每個功能都有一條單獨的電線。 這導致電線厚度和插頭連接數量急劇增加。
粗線束的缺點是很難將其隱藏在內飾後面,故障風險大大增加。

透過 CAN 總線,ECU 僅與兩條線進行通訊:CAN-high 和 CAN-low。 ECU 之間的所有通訊均透過這兩條線提供。 我接下來的兩張圖片清楚地表明,使用 CAN 總線時,一扇門上的電線數量已經顯著減少。

CAN總線上的兩條CAN總線線上可以連接數十個控制設備。 所有連接的控制設備都可以相互交換資料。

 

下圖顯示了一輛有十一個控制設備(以紅色塊表示)的車輛。 這些控制設備都是用兩條線相互連接的; 一根橙色線和一根綠色線。 這些線代表 CAN-high 和 CAN-low。 每個控制單元都有自己的功能,可以透過CAN總線與網路中的任何其他控制單元進行通訊。 有關控制設備的更多實質資訊可以在頁面上找到 控制裝置.

1. 拖曳桿安裝控制單元
2. 門控單元 RA
3.門控單元RV
4.網關
5.舒適控制裝置
6.警報系統控制單元
7. 儀表板
8. 轉向柱電子控制單元
9. 門控單元 LV
10.門控單元LA
11. 停車距離控制控制單元

隨著CAN總線的到來,這也成為可能 經濟發展局 更全面。 EOBD 代表歐洲車載診斷。 EOBD 與排放有關。 引擎和排氣裝置中的各種感知器將資訊傳輸至 ECU。 如果數值不正確(例如由於燃燒不良),MIL(引擎指示燈)將會亮起。 這是一個跡象,表明汽車需要被讀出。 然後必須將診斷測試儀連接到 OBD 插頭才能讀取錯誤。 根據故障,ECU儲存了一個十六進位錯誤代碼,該代碼由診斷測試儀顯示為P代碼或帶有文字的故障(後者更具品牌特定性)。 按此處了解有關 OBD1、OBD II 和 EOBD 的更多信息.

汽車內的多個網路:
汽車中可以有多個網路。 下圖顯示了 BMW 3 系列 E90 多個網路中控制單元的概覽(圖例)。

上圖中的 K-CAN、PT-CAN 和 F-CAN 網路屬於 CAN 總線。 差別在於速度、電壓等級和應用。 雖然PowerTrain-CAN和F-CAN具有相同的高速速度和電壓水平,但不同之處在於PT-CAN用於引擎和變速箱控制,而F-CAN包含底盤控制單元。

CAN網路與控制設備
CAN總線網路由配備有接收、處理和發送訊息的硬體和軟體的控制設備組成。 一條 CAN 高線和一條 CAN 低線用於資料傳輸。 下圖中,CAN-High 為紅色,CAN-Low 為藍色。
控制設備(也稱為控制單元或節點)連接到這些電線。 所有控制設備都可以傳送和接收訊息。 網路的一個例子是汽車內部的 CAN 總線系統; 在這裡,各種控制設備可以連接到一個總線系統。

我們以改裝後的倒車攝影機(節點5)為例。 此攝影機安裝在車牌支架或手柄附近。 CAN 線路連接在內部的任何位置。 條件是相機節點包含正確的識別碼(由製造商預先編程),因為其他控制設備必須識別它。 如果相機已在支援的無線電上註冊,則影像立即可見。
對軟體進行程式設計後,收音機會從變速箱接收已選擇倒檔的訊號。 這時收音機切換到倒車攝影機的影像。 選擇第一檔(前進)時,影像再次關閉。 這一切都得益於CAN總線系統的資料傳輸。

不受支援的裝置(例如,識別碼不正確)可能會導致問題。 如果它發送的訊息不能被其他控制設備識別,則會產生錯誤訊息。 此類設備還可確保點火開關關閉後 CAN 總線保持活動狀態。 然後汽車將不會進入“睡眠模式”,這會導致電池快速耗盡。 然後有一個 秘密消費者。

CAN總線訊號:
CAN總線系統採用廣播原理; 發送器將訊息傳送到 CAN 總線上。 同一總線上的每個節點都會收到該訊息。 然而,發送方在訊息中指示該訊息針對哪些節點。 所有節點都會收到訊息並提供回饋(稍後會詳細介紹)。 訊息不針對的節點認識到這一點並忽略它。

CAN 總線訊號由 CAN 高電壓和 CAN 低電壓組成。 下圖顯示了 CAN-high 紅色和 CAN-low 藍色。 高訊號和低訊號相同,但彼此鏡像。 當總線成為主導時,CAN-high 電壓從 2,5 伏特增加到 3,5 伏特,CAN-low 電壓從 2,5 伏特減少到 1,5 伏特。 在隱性狀態(靜止時),兩個電壓均為 2,5 伏特。

上圖顯示了使用示波器進行測量的範例。 可以清楚看到,兩個電壓彼此相同,只是呈現鏡像。 最終,活動(主導)區域的電壓差為 2 伏特。 這是指 1,5 伏特和 3,5 伏特之間的差異。 2 伏特的差異被視為 0(顯性),0 伏特的差異被視為 1(隱性)。

如果(發送)節點想要發送二進位代碼“0 0 1 0 1 1 0 1”,它將向 CAN-High 和 CAN-Low 應用上述電壓(請參閱上面的範例)。 接收節點將再次將這些電壓視為二進位代碼,然後將它們轉換為十六進位代碼。 所述二進位代碼將從十六進位轉換為二維。

要將二進制轉換為十六進制,很容易繪製一個由 8 個框組成的表格,中間有一條粗線。 將右側的方框命名為 1、2、4 和 8(請參閱圖中的紅色數字)。 然後在左側也這樣做。 寫下上面的二進位代碼中帶 1 的數字。 左邊只有 2,右邊有 8、4 和 1。將右邊的所有內容加在一起 ​​(13),對左邊做同樣的事情 (2)。 十六進制從 10 變成 A、11 = B、12 = C、13 = D。最終形成 2D。

有關從二進制轉換為(十六進制)十進制以及反之亦然的更多信息,請參閱頁面 二進制、十進制和十六進制。 這裡詳細描述了清晰的範例。

速度和電壓等級:
在車輛中,我們會遇到不同速度的 CAN 總線網路:

  • 高速:與驅動相關的ECU,包括引擎電子、變速箱、ABS/ESP、EBS(商用車);
  • 中速或低速:儀表板、收音機、氣候控制、駐車煞車、牽引桿等內部電子設備。

下面兩張圖顯示了高速 CAN 總線的 CAN-high 和 CAN-low 訊號。 靜止時,兩個訊號的電壓均為 2,5 伏特。 為了發送訊息,CAN 高電壓從 2,5 伏特增加到 3,5 伏特,CAN 低電壓從 2,5 伏特降低到 1,5 伏特。

CAN高速 (1)

下面您可以再次看到來自 CAN 高速的訊號,現在已放大(每格 50 微秒),其中上述訊號的範圍設定為每格 200 微秒。

CAN高速 (2)

在舒適電子產品中,高速通訊較不重要。 中低速CAN總線的特點,靜止時和產生報文時的電壓位準如下:

  • CAN-high 靜止時為 5 伏特,降至 1 伏特;
  • CAN-low 靜止時為 0 伏特,升至 4 伏特。

在將A通道和B通道的零線設定在同一高度的測量過程中,可以看到電壓已經「相互滑入」。 這使得讀取 CAN 高訊號和低訊號的純度變得困難。

CAN低速 (1)

為了評估訊息的純度,建議移動零線。 在下圖中,通道 A 的零線已向下移動,通道 B 的零線已向上移動。 這意味著所描繪的訊號已被分離並且可以看到更清晰的電壓變化。

CAN低速 (2)

(標準)11 位元標識符的 CAN 總線訊息的結構:
CAN 總線訊息的結構始終基於下圖。 結構上有差異; 例如,11位元標識和29位元標識的ARB和CTRL欄位不同。 以下資訊與 11 位元識別碼相關。 供您參考,29 位元識別碼比 11 位元有更多空間容納更多資料。 稍後會詳細介紹這一點。

現在簡單總結一下訊息的結構,稍後再詳細介紹:

特種作戰部隊:
每個 CAN 訊息都以 SOF(幀開始)開始。 當節點想要發送訊息時,將在總線上放置一個顯性位元。 CAN 總線在靜止時始終為隱性(1,因此 CAN-高電位和 CAN-低電位平均為 2 伏特)。 顯性位元(0)指示其他節點應等待發送訊息,直到整個訊息發布完畢。 只有在 IFS(幀間空間)之後,下一個節點才被允許發送其訊息。 即使這是一條重要的訊息,也不能錯過。
當 2 個節點想要同時發送一條訊息(它們彼此不知道)並因此透過放置 0 共同使總線占主導地位時,ARB(仲裁)將確定哪個訊息優先。

從現在開始,所討論的 CAN 總線訊息的每個部分都會將該部分新增到該灰色影像中。 這樣我就會試著保持概覽。 消息是從特種部隊開始的。

受體阻斷劑:
11位元標識符的仲裁字段由2部分組成; 識別碼和 RTR 位元。
標識符:
假設 2 個節點同時使 CAN 總線占主導地位,那麼具有最不重要訊息的節點將等待,直到重要訊息被發布(直到 IFS 之後)。 訊息的識別碼包含一系列 0 和 1。 這些數字是程式設計師故意分配給訊息的。 訊息中帶有 0 的識別符(顯性)比訊息中帶有 1 的標識符(隱性)具有更高的優先權。 帶有 XNUMX 的訊息將繼續,帶有 XNUMX 的訊息將不得不等待。

兩個識別碼都開始發布 11 位元訊息。 透過 SOF 放置顯性位。 那麼兩個標識符的前 5 位相等 (0 1 1 0 1)。 第 6 位元是 2 表示標識符號 0,1 表示第一個標識符。主導占主導地位,因此標識符 2 創建最終的 CAN 訊息。
標識符 1 在第 6 位元放置 1,當總線上另一個節點放置 0 時,發送該識別碼的節點僅識別出有 2 個節點同時發送訊息。 此時,標識符 1 停止發送,現在充當接收器。 雖然以 0 1 1 0 1 開頭的訊息最初是該節點想要發送的訊息,但現在它會將其視為已接收的訊息。 然後,該節點會偵聽整個訊息並確定是否對其執行任何操作。

SOF的灰階影像現在用ARB進行擴展,它由2部分組成,即標識符和RTR位元:

RTR位元:
11位元標識符的最後一位稱為RTR; 這是遠端發送請求位。 此RTR位元指示它是資料幀還是遠端幀。
0 = 資料幀
1 = 遠端幀

資料幀包含轉發到需要該資訊的節點的資料。 節點也可以請求訊息; 例如,某個時間的冷卻液溫度是多少。 然後,節點會將 RTR 位元設為 1,因為它正在請求資料。

控制:
控製字段由IDE(標識符擴展)、R 位元和DLC 組成。 IDE位元指示它是標準(11位元)還是擴充(29位元)標識符:
0 = 標準識別碼(11 位元)
1 = 擴充標識符(29 位元)

R 位元是為將來保留的,現在總是為隱性。

然後是 DLC:CAN 總線網路最多可以發送 8 個位元組。 1個位元組有8位,所以按照標準協定總共可以發送64位。 控製字段指示正在傳送的資料量。 發送一條帶有所有空資料欄位的確認位元(1 表示開啟或 0 表示關閉)的大訊息是沒有意義的。 位元組數在對應的 DLC(資料長度代碼)中說明。 DLC是程式軟體中的功能,因此是程式設計師預先決定的值。
假設DLC中聲明了1個位元組,則發送8個位元。 對於簡短的確認訊息,這已經足夠了。
對於非常廣泛的訊息,DLC 將包含最多 8 個資料位元組的值。

該範例已再次擴展。 新增了 IDE、R 和 DLC。

數據:
最終需要發送的資料放在資料欄位中。 大小取決於 DLC(資料長度代碼)的值。 已經指出DLC最大為8位元組。 每個位元組由 8 位元組成,因此資料欄位總共可以由 64 位元組成。

CRC:
循環冗餘檢查由數學計算組成,該計算與訊息一起發送。 發送節點計算到目前為止總共的CAN封包; SOF、ARB、CTRL 和 DATA。 所以CRC就是計算。 當接收節點收到包含 CRC 的訊息時,它將執行 DATA 之前的數學計算,並將其與 CRC 中的計算結果進行比較。 如果不匹配(由於壞位/故障),則不接受訊息,並要求再次發送訊息(具有一定的最大嘗試次數)。 此範例已擴展為包含 CRC。

確認:
確認字段用於確認接收。 當發送方將訊息傳送到 CRC 時,會插入一種暫停; 發送器使總線隱性(0)並等待,直到一個或多個節點使總線顯性(1)。 一個或多個節點是否收到該訊息並不重要,因為如果一個節點收到該訊息,則該訊息發送成功。 當總線變為 1 後,訊息傳輸將恢復。

法國電力公司:
幀結束由 7 個隱性位 (1 1 1 1 1 1 1) 組成。 對於所有控制單元來說,這是訊息已結束的標誌。

國際金融服務協會:
為了防止中斷,在 EDF 之後始終使用幀間空間。 IFS 由 11 個隱性位組成。 所有節點在發送訊息之前都會等待這 11 個隱性位元通過。 例如,在這 11 個隱性位元之後,2 個節點可以同時發送訊息。 然後再次查看 ARB(仲裁)以確定哪個訊息具有最高優先權。 然後整個循環再次開始。

(擴充)28 位元標識符的 CAN 總線訊息的結構:
11 位元識別碼是在汽車還沒有那麼多控制設備(節點)的時候設計的。 程式設計師很快發現 11 位元識別碼對他們來說還不夠。 這只有 (2^11) = 2048 種可能性。 其中,保留了 2032 個唯一的二進位代碼組合。 由於擴展的 28 位元標識符,現代汽車現在使用更多的代碼。 這稱為擴展標識符。
這意味著可能的組合不少於 (2^29) = 536870912 種。 這對於未來來說已經足夠了。
CAN 總線訊息中的許多內容都會改變。 兩個識別符(標準標識符和擴展標識符)可以互換使用。 因此,CAN 訊息表明它涉及哪個物種,後面跟著一個長消息。
11位元標識符的基礎,也是讀取前的準備; 現在僅指示當訊息是 29 位元識別碼時訊息所經歷的變化。
SOF(幀起始)保持不變。 發送節點在開始發送訊息時使其成為主導。
接下來是 ARB 和 CTRL,這就是差異。

受體阻斷劑:
在仲裁過程中,首先顯示標準的 11 位元識別碼(即 29 位元的一部分)。 RTR 位元被移動(與 11 位元一樣)到 ARB 的末端。 RTR 現在被 SRR 取代:(替代遠端請求)。 對於擴充標識符,該位元始終為隱性 (1)。
SRR 位元之後是 IDE 位,它位於 CTRL(控製字段)的 11 位元標識符中。 現在,它已從控製字段中刪除,並放置在擴展標識符中的 SRR 位元後面。

為了清楚起見,下圖顯示了標準(11 位元)和擴充(29 位元)標識符。

標準 11 位元標識符
擴充 29 位元標識符

IDE 位元代表識別碼擴充。 IDE 位元決定它是標準識別碼還是擴充標識符。
IDE 0 = 標準(11 位元 ID)
IDE 1 = 擴充(29 位元 ID)

IDE 位元之後是擴充標識符的其餘部分。 11 和 18 位元加起來就是 29。這些不能作為一個整體放在訊息中,因為 CAN 協定不再正確。 基本上,IDE 位元現在指示訊息已被分成兩個部分。

控制:
因此,控製字段已針對擴展標識符進行了更改。 IDE 位元已移至 ARB。
IDE 位元被 R 位元(備用)取代。 預設情況下,這是隱性的。 接下來是 R 位元和 DLC(資料長度代碼),它指示訊息將包含多少位元組。

再次顯示 11 位元和 29 位元標識符的控製字段。

來自 11 位元 IDE 的 CTRL
來自 29 位元 IDE 的 CTRL

使用 Bitstuffing 和 CRC & ACK 定界符進行錯誤辨識:
位元填充:
為了保持發送和接收節點之間的最佳同步,應用了位元填充。 位元填充是指在 5 個相同的位元之後加上一個相反的位元。 最初發送的訊息中的位值沒有變化,但添加了一位。
接收者認識到這一點。 在 5 個相同的位元之後,接收器將清除第 6 位元(見下圖)。

發送的原始訊息只有 6,但發送方每 0 位元添加一個 XNUMX。 由於零的存在,訊息長度確實增加了(但該長度不計入 DLC(資料長度代碼)。接收器過濾掉相反的位元(零),然後僅使用 XNUMX 再次讀取訊息。

CRC 和 ACK 分隔符號:
定界符放置在 CRC 欄位和 ACK 欄位之後。 對於發送方和接收方來說,這是一個具有已知值的位元。 如果訊息中出現錯誤,則該值將會有所不同。 然後,接收方收到與預期不同的位元值,並將訊息標記為錯誤。 寄件者將重新發送該訊息。

雙絞線接線:
CAN 總線使用雙絞線電纜。 然後將 CAN-High 和 CAN-Low 電纜絞合在一起,如圖所示。 這樣就避免了外界的干擾; 如果一條電纜中產生零點幾伏特的感應電壓,那麼另一條電纜中也會產生零點幾伏特的感應電壓。 然而,CAN 高電平和低電平之間的電壓差保持不變。 這將消除故障並防止 ECU 遇到任何不便。

終端電阻:
每個高速 CAN 總線網路都使用終端電阻。 它們通常合併在 CAN 總線(線路)末端的節點或佈線。 這些電阻器的電阻均為 120Ω(歐姆)。 測量導線電阻時,測得更換電阻為60Ω。

這些終端電阻用於抑制干擾; 如果沒有這些,就會發生反射。 電壓訊號通過CAN總線,到達末端並反彈回來。 後者被阻止。 電壓記錄在電阻器中。 反射可能會導致電壓訊號反彈,影響發送的訊息,從而導致控制設備故障。

網關:
汽車配備了控制設備(節點)網路。 網關連接各種CAN總線網路(如內裝、引擎/變速箱和底盤)、MOST匯流排和LIN匯流排,讓所有網路相互通訊。 所以它實際上是所有網路之間的連接點。 對網關來說,速度差異並不重要。 按此進入網關操作及功能介紹頁面.

CAN 總線上的測量:
人們經常被問到是否可以測量 CAN 總線。 這當然是可能的。 可以透過測量電線上的電壓位準並檢查示波器上的電壓顯示來進行診斷。 頁面上描述如何進行測量 在 CAN 總線系統上進行測量。

相關頁面: