車載網絡CAN(五):從使用和案例中學習CAN總線
摘要
該專題連載共分為“五”篇,這是第五篇。到目前為止,我們已經解釋了實現 CAN(控制器局域網)的基礎知識,例如 CAN 協議和物理層機制。然而,僅憑這些可能不足以全面理解 CAN 在實踐中的具體應用和設計方式。
對于這類讀者,本文將通過實例解釋實際采用 CAN 時所需的知識和關鍵點,并提供 CAN 協議的總體概述,以及在實踐中考慮 CAN 的設計、開發和采用的基本知識。
點擊閱讀:車載網絡CAN(一):CAN協議基礎知識
點擊閱讀:車載網絡CAN(二):CAN通信的數據傳輸機制
點擊閱讀:車載網絡CAN(三):“幀”的結構、用法和錯誤處理方法
點擊閱讀:車載網絡CAN(四):CAN控制器的分類和工作原理
CAN應用范圍
CAN現在已應用于眾多領域,而不僅僅局限于汽車行業。讓我們再次來看一下CAN的應用范圍。
CAN總線的應用范圍很廣,從主要用于乘用車的標準格式“CAN”總線,到主要用于大型車輛的擴展格式“J1939”總線。此外,還有一種基于CAN總線的協議,稱為“CANopen”,主要用于工業設備(圖1)。

圖1、CAN的應用范圍
因此,CAN 是一種幾乎所有汽車(普通乘用車、大型車輛等)都使用的通信協議,也應用于工業設備和工廠自動化 (FA) 領域。本系列文章主要關注 CAN 作為車載網絡(針對普通乘用車)的應用,但如果您能正確理解 CAN 的工作原理,對于汽車以外其他應用的 CAN 設計和開發工作也必將大有裨益。
現在我們對 CAN 的應用范圍有了新的認識,讓我們來看看 CAN 在乘用車中的一些具體用途和知識,以及一些在實踐中有用的例子。
CAN數據分析
在開發過程中,一項需要頻繁執行的任務是“分析通信內容”。本文將通過具體示例,解釋分析 CAN 數據所需的步驟。
首先,讓我們使用常見的測量設備來分析通信內容。
使用通用測量設備分析通信內容首先記錄通信波形(圖 2)。然后,根據通信速度計算 1 比特的長度,將記錄的通信波形替換為“1”和“0”,并按照格式將其轉換為十六進制數據(圖 3),最后通過將其與通信規范進行比較來進行數據分析。

圖2、CAN通信波形

圖3、位轉換
當沒有車載網絡測量設備可用時,通常會使用像這樣的通用測量設備。然而,雖然這類通用測量設備可以確認信號特征,但要實時分析每10毫秒左右傳輸和更新的數據卻極其困難。
另一方面,目前大多數車載網絡測量設備要么是基于硬件的,要么是運行在PC上的軟件與硬件接口相結合的,這使得數據采集比通用測量設備更加便捷。然而,它們與通用測量設備并無本質區別,都需要將通信波形與通信規范進行比較。
“ CAN數據庫”(圖4) 用作將這些通信波形與通信規范進行比較的機制。這不僅能夠對已傳輸和更新的數據進行實時自動分析,而且還允許多個開發人員使用同一個CAN數據庫,從而最大限度地減少因開發人員對規范理解的差異而造成的影響。此外,只需更改CAN數據庫,即可使用相同的車載網絡測量設備更改規范,這還有一個額外的好處,即開發人員可以立即將熟悉的環境用于其他開發項目。

圖4、CAN數據庫
現在讓我們仔細看看 CAN 數據庫的內容是什么樣的。
基本上,CAN 數據庫是將 CAN 通信規范翻譯成測量儀器可以讀取的形式,并且包含與通信規范相同的內容。
在 CAN 數據庫中,CAN 數據幀通常表示為“消息”。設計人員可以自由設置數據幀內數據字段(最多 8 個字節)的使用方式,從而允許自由混合使用 1 字節數據、2 字節數據、1 位數據等等。這些單獨的數據片段通常被稱為“信號”(圖 5)。

圖5、信息與信號的關系
對于消息,可以定義“ID”、“消息名稱”、“DLC”、“格式”、“包含的信號”、“發送節點”、“每個信號在消息中的位置”等。
在CAN總線上傳輸信號時,數據與實際值(例如,物理值,如km/h或Nm)之間經常存在差異。這受到多種因素的影響,例如信號值的分辨率(每比特的值),例如“如果信號值變化1,則實際速度應變化0.25 km/h”,以及根據信號物理值范圍所需的偏移量。在CAN數據庫中,定義信號時,可以將分辨率定義為“因子”,將偏移量定義為“偏移量”。其他可用的定義包括信號名稱、信號長度、字節順序、最小值和最大值以及單位。
對于網絡節點,可以定義“節點名稱”、“要接收的信號”和“網絡管理關系”。
使用包含這些信息的 CAN 數據庫可以輕松分析各種類型的 CAN 數據。圖 6 顯示了使用車載網絡測量軟件時,使用 CAN 數據庫和不使用 CAN 數據庫之間的區別。當 ID、DLC、數據字段等的內容以與通信規范相同的格式顯示時(使用 CAN 數據庫),分析會更加容易,而不是以十六進制格式顯示(圖 7)。

圖6、使用CAN數據庫與不使用CAN數據庫的區別

圖7、分析屏幕示例
然而,由于不同汽車制造商之間的通信規范各不相同,因此在大多數情況下,每個制造商的 CAN 數據庫內容也不同,所以這一點需要注意。
CAN在汽車中的應用
目前,CAN 已應用于動力系統和車身系統等各個部件,但它在各個“ECU(電子控制單元)”中是如何應用的呢?
如你所知,CAN 總線的主要用途是 ECU 之間交換數據(ECU 間通信)。為此,有多種通信方式,例如周期性發送數據或在特定事件發生時發送數據。但是,如果您將周期性傳輸視為由 ECU 內部定時器觸發的事件,那么 CAN 總線基本上可以被視為“基于事件的通信”。
迄今為止,CAN 主要用于 ECU 之間的通信,但如今其應用已十分廣泛,可被視為車載網絡的基礎,并且越來越多地用于 ECU 間數據交換以外的其他用途。例如,在診斷每個 ECU 的故障時,現在不再使用傳統的專用通信線路,而是使用“ Diag On CAN(診斷通信) ”,它利用并集成了 CAN;此外,“ XCP ”也利用 CAN 通信來重寫 ECU 內部數據(標定)并讀取內部值。

圖8、CAN上的對角線

圖9、XCP
然而,CAN 用于如此多種用途以及 ECU 的增加給總線帶來了壓力,因此 CAN 現在不再使用一個通道進行通信,而是使用兩個或多個通道來創建一個多通道系統,根據需要通過單獨的通道發送通信。
除了CAN的多通道特性外,越來越多的車載網絡協議也開始在同一輛車內使用,例如LIN和FlexRay。具體來說,LIN用于傳感器/執行器領域,因為在這些領域使用CAN控制器會顯著增加成本;而FlexRay則用于實時性能比基于事件的通信更為重要的領域。因此,不同的應用場景會采用不同的通信協議。
在這種情況下,同一輛車內會配置使用不同協議的車載網絡,但各個網絡很少單獨通信;大多數情況下,會安裝一個網關來轉換協議并將必要的信息傳輸到其他網絡。
CAN總線問題示例
接下來,我們將列出一些在使用 CAN 時可能出現的常見(潛在)問題,以及一些解決這些問題的技巧。
問題1:規范中定義的通信周期與實際通信周期不同
→ CAN 使用“CSMA/CA(載波偵聽多路訪問/沖突避免)”機制,如果 CAN 總線上其他節點有數據幀,則會等待發送。因此,通常無法以極其精確的周期發送數據(盡管通信規范通常會規定一個可接受的范圍)。
問題2:無法溝通
→這可能是由于在開發初期未將終端電阻器連接到物理層,或者由于斷線或錯誤導致總線處于關閉狀態。
問題 3:上電時出現錯誤幀
這可能發生在每個節點初始化期間。也可能發生在節點初始化期間無法發送確認信息時。
問題 4:無法使用測量設備進行測量
→這是一個很容易被忘記的基本設置,但您可能沒有進行基本設置以匹配通信速度和信號特性。
問題5:錯誤幀頻繁出現或通信異常
如果CAN總線使用率(總線負載)較高,則由于通信仲裁,可能會頻繁發生重傳。此外,也可能是由于物理層問題,接收節點未返回確認信息。
問題 6:容易發生掉線事故
→頻繁的傳輸錯誤會導致總線停止工作,因此首先要考慮的是物理原因,例如檢查線路。
CAN協議概述
最后,作為對目前為止所涵蓋內容的總結,我們將介紹與 CAN 相關的關鍵詞及其特點(詳情請參閱本系列的每一期)。
CAN總線特性
首先,我們來看一下CAN總線的特性。以下是一些您務必牢記的重要特性和關鍵詞。
·采用線型總線結構,可以方便地進行布線設計,即使以后需要添加節點,也可以相對容易地完成。
·多主系統允許每個節點按照統一的規格進行設計,可以說在通信方面是平等的。
·CSMA/CA允許來自多個節點的數據幀在發生沖突時不會被銷毀,從而實現數據傳輸。
·使用 ID 進行消息尋址可以明確優先級,并允許接收節點決定是否接收,還允許多個節點同時接收。
·它是一種具有優異抗噪聲性能且不易受外部噪聲干擾的物理層。這是通過使用兩線差分電壓實現的。
·實施了多種錯誤檢測機制,確保能夠可靠地檢測出各種異常情況。
·錯誤計數器根據每個節點的狀態進行控制,如果一個節點頻繁出現錯誤,它會關閉總線或將錯誤標志設置為隱性,以最大限度地減少對通信的影響。
·當每個節點執行協同控制時,它們可以使用相同的數據,從而保持數據一致性。這是因為系統具有一種機制,在出現異常情況時,會重新傳輸數據,直到所有節點都能正常接收數據為止。
·其最大通信速度為 1Mbps,可用于車載網絡的大部分領域。
CAN協議
接下來,我們回顧一下CAN協議。下面列出了一些您務必牢記的重要特性和關鍵詞。
·CAN 數據傳輸主要使用數據幀,根據格式的不同,數據幀分為標準格式(11 位 ID)和擴展格式(29 位 ID) 。
·有一種稱為遠程幀的機制可以請求數據幀,但現在很少使用。
·如果在通信過程中檢測到異常,可以發送錯誤幀來通知連接到網絡的節點該異常情況。
·如果節點在接收數據幀時處理能力不足,可以發送一個過載幀來延遲下一個數據幀的傳輸。然而,由于微型計算機處理能力的提升,這種做法如今已很少使用。
·采用CSMA/CA機制時,當多個節點同時發送數據幀和遠程幀時,會進行通信仲裁,優先級由ID決定。ID值越小,優先級越高。該ID可以在網絡設計時設置。
·當接收到數據幀時,連接到網絡的節點會將接收到的內容與 CRC 進行比較,如果正常,則會發送確認信息,通知發送節點通信正在正常進行。
·發送錯誤幀的節點會根據具體情況遞增自身的錯誤計數器。該錯誤計數器的值決定了節點的狀態,在某些情況下,節點可能會因此失去發送能力。這種機制可以防止網絡通信中斷。
物理層
最后,讓我們回顧一下上次解釋過的“物理層”。
·CAN 控制器是實現 CAN 協議所需的電子元件,根據安裝類型、協議版本、消息管理等進行分類。
·根據協議版本是標準格式還是擴展格式,其在通信過程中處理方式有所不同。
·可以根據所使用的通信速度選擇消息管理方式。
·根據應用場景的不同, CAN總線分為高速CAN和低速CAN 。每種類型都根據不同的應用場景使用,并且具有不同的最大通信速度和物理層。
·高速 CAN 的最大通信速度為 1Mbps,主要用于需要高速通信的動力總成系統。
·低速CAN總線的最大通信速度為125 kbps,主要用于對通信速度要求不高的車載系統。此外,即使一條通信線路斷開,也能僅使用另一條線路繼續通信(容錯性)。
本文全面概述了CAN協議,包括采用CAN協議所需的知識,例如“數據分析”、“應用示例”和“故障示例”。如果您想了解更多關于CAN的信息,建議參考ISO11898發布的CAN協議規范。
更多內容,關注牛喀網,學習更多汽車科技。有興趣的朋友,可以添加牛小喀微信:NewCarRen,加入專家社群參與討論。

(添加微信號NewCarRen咨詢)
