汽車 CAN bus:車上幾十個電腦怎麼溝通

發表時間:2026 年 10 月 22 日 | 更新日期:2026 年 10 月 22 日 | 編輯:雅寶社區編輯團隊
汽車 CAN bus:車上幾十個電腦怎麼溝通 - 雅寶社區 · 頂客論壇

CAN bus 的實體層是一對絞在一起的雙絞線,分別稱為 CAN-H(High)與 CAN-L(Low)。它採用「差動訊號」傳輸:訊息不是看單一線對地的絕對電壓,而是看兩條線之間的電壓差。在高速 CAN 中,當滙流排處於「顯性」(dominant,代表邏輯 0)狀態時,CAN-H 大約 3.5V、CAN-L 大約 1.5V,壓差約 2V;處於「隱性」(recessive,代表邏輯 1)狀態時,兩條線都大約 2.5V,壓差接近 0V。

差動傳輸的好處是共模雜訊免疫。車內的發電機、點火系統、馬達、繼電器都會產生強烈電磁干擾,這些干擾通常會同時耦合到兩條相鄰的線路上。因為接收端只取「兩線壓差」,同時出現在兩條線上的雜訊會互相抵消,訊號依然清晰。雙絞線的絞合結構則進一步讓兩條線暴露在相同的電磁環境中,強化這個效果。

另一個關鍵設計是終端電阻。高速 CAN 匯流排的兩端各有一個 120 歐姆的終端電阻,用來吸收訊號反射、維持匯流排的阻抗匹配。兩個 120 歐姆並聯後,從診斷座量測 CAN-H 與 CAN-L 之間的電阻應該接近 60 歐姆——這是 DIY 檢查 CAN 網路健康與否最常用、也最實用的第一步。

訊息導向廣播:每則訊息都有身份證

CAN 採用「訊息導向」(message-oriented)而非「節點導向」的通訊。這意思是:訊息本身不標示「我要送給誰」,而是標示「這則訊息是什麼」。每則訊息都有一個識別碼(Identifier,簡稱 ID),ID 同時代表訊息內容與優先順序。例如某個 ID 可能固定代表「引擎轉速」,另一個 ID 固定代表「車速」。任何需要引擎轉速的節點(變速箱電腦、儀表、ABS)都只要監聽這個 ID 就好,發送端不需要知道有誰在聽。

這種設計帶來極大的彈性:新增一個節點時,只要它會解讀既有的 ID,就能直接取得所需資訊,完全不必改動其他節點的線路。這也是為什麼車廠能夠在同一平台上快速衍生不同車型與配備。

仲裁機制:誰該先講話?

當匯流排閒置時,任何節點都可以開始發送。如果兩個以上的節點同時開始傳送,就會進入「仲裁」程序。CAN 的仲裁是「非破壞性」的:所有節點同時把識別碼一位一位送上匯流排,同時監聽匯流排實際的位準。由於顯性位(0)會壓過隱性位(1),送出隱性位卻偵測到顯性位的節點就知道自己輸了,立刻退出仲裁、轉為接收模式,而贏家則繼續傳送,完全不需要重送。

識別碼數值越小,優先順序越高。這套機制確保了緊急訊息(例如 ABS 作動、安全氣囊觸發、引擎急停)能夠優先取得匯流排,而較不緊急的訊息(例如車窗狀態、空調設定)則自動讓路。更棒的是,整個仲裁過程不會浪費任何頻寬,輸家會在下一輪匯流排閒置時自動重試。

錯誤偵測與容錯

CAN 內建多層錯誤偵測機制,包括位元監控(每個發送端同時監聽匯流排,確認送出的位元與匯流排一致)、CRC 循環冗餘檢查(15 位元)、訊框格式檢查、ACK 確認(至少一個節點正確接收時會在 ACK 槽送顯性位)。當節點偵測到錯誤時,會送出「錯誤旗標」通知全網,發送端隨即重送。

每個節點內部還有「傳送錯誤計數器」與「接收錯誤計數器」。計數器累積到一定值時,節點會先進入「錯誤被動」狀態(減少對網路的干擾),再惡化則進入「匯流排關閉」狀態(暫時退出網路,避免癱瘓整個匯流排)。這種「壞鄰居自動隔離」的設計,讓 CAN 網路在單一節點故障時仍能維持運作,是它能在安全相關系統中被信賴的重要原因。

三、CAN 訊框結構拆解:一則訊息長什麼樣子

要真正讀懂 CAN bus,得知道一則訊息在匯流排上的長相。CAN 有幾種訊框類型:資料訊框(Data Frame,攜帶實際資料)、遠端訊框(Remote Frame,請求資料)、錯誤訊框(Error Frame)與過載訊框(Overload Frame)。日常診斷與逆向工程最常接觸的是資料訊框。

資料訊框(Data Frame)欄位解析

標準格式的資料訊框依序包含以下欄位:

  • SOF(Start of Frame,1 位元):訊框起始位,固定為顯性位,用來讓所有節點同步。
  • 識別碼(11 位元):訊息的「身份證」,同時決定優先順序。

  • RTR(Remote Transmission Request,1 位元):區分資料訊框(顯性)與遠端訊框(隱性)。
  • IDE(Identifier Extension,1 位元):區分標準格式(顯性)與擴展格式(隱性)。
  • r0(保留位,1 位元):保留供未來使用。

  • DLC(Data Length Code,4 位元):表示資料長度,經典 CAN 為 0~8 位元組。
  • 資料欄位(0~8 位元組):實際要傳送的內容,例如轉速值、車速值、開關狀態。
  • CRC 欄位(15 位元)+ CRC 界定符(1 位元):循環冗餘檢查碼。
  • ACK 槽(1 位元)+ ACK 界定符(1 位元):接收端在此送顯性位表示「我收到了」。
  • EOF(End of Frame,7 位元):訊框結束旗標。

  • IFS(Intermission,3 位元):訊框間隔,讓節點有時間處理。
  • 值得注意的是,CAN 訊框本身完全沒有「來源位址」與「目的位址」欄位。誰發的、誰要收,全靠識別碼與系統設計的約定。這種極簡設計降低了每個訊框的額外負擔(overhead),讓 8 位元組的資料在 500 kbps 的匯流排上只需約 200 微秒就能傳完。

    標準 ID 與擴展 ID

    標準格式使用 11 位元識別碼,可提供 2048 種 ID;擴展格式使用 29 位元識別碼,理論上可達 5 億多種。車廠通常會依功能領域分配 ID 區段,例如 0x000~0x0FF 給動力系統、0x100~0x1FF 給底盤、0x200~0x2FF 給車身、0x300~0x3FF 給多媒體與診斷。這種「ID 地圖」是逆向工程與 DIY 診斷時的重要線索。

    另外,同一個 ID 通常會以固定週期重複發送(例如每 10 毫秒送一次引擎轉速),這稱為「週期性訊息」。也有些訊息是事件觸發(例如車門開啟、按下按鈕),只在狀態改變時發送。判斷某個 ID 的意義時,「發送週期」與「資料變化模式」往往比 ID 本身更有參考價值。

    CAN FD:新世代的高速通道

    經典 CAN 的兩個限制在近年越來越明顯:資料欄位最多 8 位元組、匯流排速率上限 1 Mbps(實務上多為 500 kbps)。隨著 ADAS 先進駕駛輔助、電池管理、車聯網等功能興起,資料量暴增。CAN FD(Flexible Data-rate)因此誕生:資料欄位擴大到 64 位元組,且同一訊框內可切換兩種速率——仲裁階段維持較低速率以確保相容性,資料階段則可提升到 2~8 Mbps。

    CAN FD 的訊框格式與經典 CAN 相容,但新增了 FDF、BRS、ESI 等位元,並且 CRC 演算法也有調整。實務上,新車常見「經典 CAN」與「CAN FD」並存的混合架構,診斷時必須先確認車款支援哪一種。

    四、車上常見的 CAN 網路分層與 ECU 生態

    現代汽車不是只有一條 CAN bus,而是依功能領域切成多條網路,再透過閘道器(Gateway)串接。這種「分區網路」設計讓不同領域的流量互不干擾,也方便分層除錯。

    高速 CAN、低速 CAN、單線 CAN

    高速 CAN(ISO 11898-2):速率 125 kbps~1 Mbps,最常見的是 500 kbps。用於動力系統(引擎、變速箱)、底盤系統(ABS、ESP、EPS)等即時性要求高的場合。匯流排兩端有 120 歐姆終端電阻。

    低速/容錯 CAN(ISO 11898-3):速率 40~125 kbps,常用於車身控制(車窗、門鎖、燈光、座椅)。它的特色是「容錯」:當 CAN-H 或 CAN-L 其中一條斷線或短路時,還能靠另一條線以單線模式繼續通訊,只是速率會下降。終端電阻通常是每個節點各一個,整體並聯後約 100 歐姆左右。

    單線 CAN(SAE J2411):只用一條線加搭鐵,速率約 33 kbps,常見於較舊車款的舒適性系統。抗干擾能力較差,但成本最低。

    閘道器(Gateway)的角色

    閘道器通常整合在車身控制模組(BCM)或中央閘道模組中,負責不同 CAN 網路之間的訊息轉譯與過濾。它的存在有兩個重要意義:第一,隔離流量,避免某條網路塞車影響其他網路;第二,安全控管,防止診斷工具或外部裝置直接對動力系統下指令。

    對 DIY 玩家而言,閘道器是一個必須理解的「關卡」。例如你想從 OBD-II 診斷座讀取某個車身訊號,可能會發現該訊號根本沒有被閘道器轉送到診斷 CAN 上。這時就得直接從對應的網路節點或線束下手,而不能只靠 OBD 座。

    LIN bus 與 CAN 的分工

    CAN 雖然強大,但對「開關燈、升降車窗」這類低速、低成本需求而言仍然偏貴。LIN bus(Local Interconnect Network)因此被設計為 CAN 的「副手」:單線、速率最高 20 kbps、主從架構(一個主節點輪詢多個從節點)。常見應用包括車門模組、後視鏡、雨滴感測器、座椅控制等。LIN 網路通常掛在某个 CAN 節點底下,由該節點擔任 LIN 主節點,再把彙整後的資訊送上 CAN bus。這種「CAN 當骨幹、LIN 當末端」的層級架構,是現代車用網路的標準樣貌。

    五、DIY 實戰:如何與愛車的 CAN bus 對話

    對汽機車 DIY 愛好者來說,CAN bus 不再是黑盒子。只要準備正確的工具與觀念,你就能讀取車輛資料、解析訊框、甚至進行簡單的改裝與診斷。以下從最入門的 OBD-II 開始。

    OBD-II 診斷座與腳位定義

    1996 年以後的美規車、2001 年以後的歐規汽油車、2004 年以後的歐規柴油車,大多配備標準的 16 腳 OBD-II 診斷座(SAE J1962)。與 CAN 相關的腳位如下:

    第 4 腳:車身搭鐵(Chassis Ground)。

    第 5 腳:訊號搭鐵(Signal Ground)。

    第 6 腳:CAN-H(ISO 15765-4)。

    第 14 腳:CAN-L(ISO 15765-4)。

    第 16 腳:電瓶正電(+12V,通常經保險絲)。

  • 第 7、15 腳:部分車款為 K-Line/L-Line(較舊的 ISO 9141/KWP2000)。
  • 第 2、10 腳:部分美規車的 SAE J1850 匯流排。

    也就是說,只要你的車是 CAN 車款,量測第 6 腳與第 14 腳之間的電阻,就等於在量測整個高速 CAN 網路的終端電阻。這是一個非常實用的快速檢查點。

    ELM327 與 OBD 掃描器入門

    市面上最常見的入門工具是 ELM327 晶片為基礎的 OBD 轉接器(藍牙、Wi-Fi 或 USB 版本),搭配手機 App(如 Torque、Car Scanner、OBD Auto Doctor)或電腦軟體(如 FORScan、ScanMaster)。ELM327 會幫你處理底層的 CAN 訊框收發,讓你用簡單的 AT 指令或 PID 查詢就能讀到標準 OBD 參數,例如引擎轉速、車速、冷卻液溫度、進氣溫度、節氣門位置、燃油修正等。

    更進階的玩法是使用「被動監聽」模式:把介面設為只接收不發送,然後記錄匯流排上的所有訊框。這時你會看到大量週期性 ID 與不斷變化的資料位元組。透過對照已知狀態(例如踩油門、開冷氣、打方向燈),就能反推出各個 ID 與位元組的意義。這個過程稱為「CAN 逆向工程」,是許多車友改裝與自訂儀表的基礎。

    CAN 訊框抓取與解析實例

    假設你用被動監聽錄到以下片段(簡化示意):

  • ID 0x0C0,每 10 ms 一次,資料 1A 2B 00 00 00 00 00 00
  • ID 0x1A0,每 20 ms 一次,資料 7D 00 3C 00 00 00 00 00
  • ID 0x3F1,事件觸發,資料 01 00 00 00 00 00 00 00
  • 接著你可以做「相關性分析」:輕踩油門時,0x0C0 的第一、第二個位元組數值同步上升;開冷氣時,0x1A0 的某個位元組從 0 變 1;按下車門鎖時,0x3F1 出現一筆。透過這種方式,即使沒有原廠文件,也能逐步建立自己的「ID 對照表」。

    需要注意的是,車廠通常會對資料做「編碼」而非直接存放物理值。例如轉速可能是「實際轉速 ÷ 4」或「實際轉速 × 某個係數」後取整;溫度可能加了偏移量(offset)。這些編碼規則需要透過多點採樣與線性回歸推導,是逆向工程中最花時間但也最有成就感的部分。

    安全注意事項(很重要)

    CAN bus 是車輛控制的神經系統,任何「寫入」動作都有風險。以下是幾點務必遵守的原則:

  • 先被動、後主動:初期只做監聽,不要任意發送自訂訊框。錯誤的訊框可能被某個 ECU 解讀為指令,造成危險。
  • 不要在行駛中實驗:所有監聽與測試都應在安全場地、車輛靜止或頂起傳動輪的狀態下進行。
  • 區分網路:動力 CAN 與車身 CAN 是不同網路。在動力 CAN 上亂發訊框,可能干擾引擎或變速箱控制。
  • 保留还原能力:改裝前備份原廠設定,使用可還原的接法,避免剪線或破壞原廠線束。
  • 注意資安:不要隨意連接來源不明的 OBD 裝置或 App,部分惡意裝置可能竊取車輛資料或植入指令。
  • 六、CAN bus 故障排除:從三用電表開始

    CAN 網路故障是許多「疑難雜症」的根源:儀表亮一堆燈、某個功能時好時壞、車輛無法發動、診斷電腦連不上車。以下提供一套由簡入深的檢查流程。

    量測終端電阻:60 歐姆的黃金準則

    這是最經典也最有效的一招。步驟如下:

    車輛熄火,拔掉鑰匙,等待網路進入休眠(約 1~2 分鐘,或依車型而異)。

  • 用三用電表電阻檔,量測 OBD-II 第 6 腳(CAN-H)與第 14 腳(CAN-L)之間的電阻。
  • 正常的高速 CAN 網路應該讀到約 60 歐姆(兩個 120 歐姆終端電阻並聯)。
  • 判讀方式:讀到約 120 歐姆,代表其中一個終端電阻開路或脫落;讀到約 40 歐姆或更低,代表某處短路或並接了額外電阻;讀到無限大(開路),代表匯流排斷線或兩個終端電阻都失效。這個量測快速、免拆裝,是查修 CAN 網路的第一站。

    要注意的是,部分車款的終端電阻不是固定 120 歐姆(例如某些車身 CAN 採每個節點一個較高阻值的電阻),且量測時若網路未休眠,數值會失真。因此「60 歐姆」是高速 CAN 的通則,實際仍需參考車型資料。

    CAN-H 與 CAN-L 電壓檢查

    接著可以量測「對地電壓」。將電表負極搭鐵,正極分別量 CAN-H 與 CAN-L:

    休眠狀態:兩條線都應接近 0V(或極低的待機電壓)。

  • 通訊中(鑰匙 ON):CAN-H 平均電壓約 2.5~3.5V,CAN-L 約 1.5~2.5V,兩者相加約 5V,這是差動訊號的典型特徵。
  • 若 CAN-H 固定在 0V 或 12V:可能對地或對電源短路。

    若兩線電壓都異常偏高或偏低:可能是某個節點故障把匯流排「拉死」。

    更進一步可以用示波器觀察波形。正常的 CAN 訊框會呈現一連串對稱的差動脈波;若波形上升/下降緣變得圓鈍、振幅不足,可能是終端電阻異常或線路電容過大;若出現異常的長時間顯性位,可能是某節點持續佔用匯流排。

    常見故障案例

    案例一:儀表多個警示燈同時亮起、多個功能失效。這通常不是單一 ECU 壞掉,而是匯流排通訊中斷。先量終端電阻,再檢查線束是否有磨破、進水、連接器氧化。常見位置包括引擎室線束與車身交界處、車門折彎處、後車廂線束。

    案例二:診斷電腦連不上車。先確認 OBD 座第 16 腳有 12V、第 4 與第 5 腳搭鐵良好,再量第 6、14 腳電阻。若電阻正常但連不上,可能是閘道器故障或診斷 CAN 與動力 CAN 之間的轉送中斷。

    案例三:特定功能時好時壞。這種間歇性故障最難查,常見原因是連接器端子鬆動、線束受壓、或某個 ECU 的收發器(transceiver)老化。可以用「搖晃測試」搭配即時監聽,觀察訊框是否在特定震動下消失。

    案例四:某個節點不斷重送、匯流排負載偏高。可能是該節點的 ID 衝突、程式異常、或終端電阻被並聯。這時可用 CAN 分析儀觀察匯流排負載率(bus load),正常通常低於 50%,超過 70% 就要注意。

    七、CAN bus 的未來:CAN FD、車載乙太網路與資安

    CAN bus 已經服役超過三十年,但它並沒有被淘汰,而是持續進化。短期內,CAN FD 會逐步取代經典 CAN,成為新車動力與底盤網路的標準;中期來看,車載乙太網路(Automotive Ethernet,如 100BASE-T1、1000BASE-T1)會承擔高頻寬任務,例如攝影機、光達、雷達、中央運算平台之間的資料傳輸,而 CAN 則繼續負責即時控制與低頻寬訊號。

    與此同時,「軟體定義汽車」的趨勢讓車輛架構從「多個小 ECU」走向「少數高效能網域控制器+區域控制器」。這種架構下,CAN 的角色會從「骨幹」轉為「末端匯流排」,但仍不可或缺。

    另一個無法忽視的議題是資安。CAN 在設計之初並沒有考慮加密與認證,任何接上匯流排的節點都能發送訊框,這使得「匯流排注入攻擊」成為車聯網時代的現實威脅。目前車廠與標準組織正在推動 SecOC(Secure Onboard Communication)、入侵偵測系統(IDS)、以及閘道器的防火牆機制,試圖在不破壞即時性的前提下提升安全性。對 DIY 玩家而言,這也意味著未來「隨意接入 CAN」的難度會逐漸提高。

    八、結語:兩條線背後的工程智慧

    回頭看 CAN bus 的設計,會發現它其實是一連串「取捨」的藝術:用差動訊號換取抗干擾能力,用識別碼仲裁換取即時性,用廣播式訊息換取擴充彈性,用錯誤計數器換取容錯能力。它不追求最高頻寬,也不追求最複雜的功能,而是精準地滿足車內控制的需求。這也是為什麼三十多年過去,它依然是車上幾十個電腦最主要的溝通方式。

    對車主與 DIY 玩家而言,理解 CAN bus 不只是增加知識,更能讓你在面對「莫名其妙的電系故障」時,有一套系統性的排查邏輯:先量終端電阻、再看電壓波形、後查線束與節點。當你能夠讀懂匯流排上的訊框,你就等於聽懂了車上幾十個電腦之間的對話,很多過去只能送修的問題,也會變得有跡可循。

    下次當你打開 OBD-II 診斷座、接上掃描器時,不妨想想:那兩條細細的雙絞線,正承載著整輛車的神經訊號。而 CAN bus 的故事,正是現代汽車從「機械為主」走向「電子為主」最精彩的縮影。

    🏠 返回首頁