CAN 協議
控制器區域網 (CAN) 協議是一種通訊協議,最初開發用於汽車行業,但也被應用於其他行業,如工業自動化和醫療裝置。它是一種序列通訊協議,使用多主控、分散式控制系統。這意味著網路上的任何裝置(稱為節點)都可以發起通訊,並且網路上的所有其他節點都可以參與通訊。該協議提供了一種方法,使裝置能夠共享資訊並同步其操作,而無需中央控制器。該協議使用碰撞檢測和仲裁機制來防止多個節點同時傳輸,並確保一次只有一個節點可以傳輸。
為什麼選擇 CAN?
CAN 協議是為了解決汽車行業隨著汽車變得越來越複雜並集成了更多電子系統而出現的一些挑戰而開發的。開發 CAN 協議的一些關鍵原因包括:
高可靠性 − CAN 協議旨在具有魯棒性和容錯性,使其適用於汽車發動機控制和制動系統等關鍵系統。
低成本 − CAN 協議使用簡單高效的訊號方法,可以實現低成本實施,這在成本至關重要的汽車行業尤其重要。
重量輕,佈線最少 − CAN 協議使用雙線匯流排,減少了汽車所需的佈線量,使車輛更輕,從而可以提高燃油效率。
可擴充套件性 − CAN 協議設計用於支援網路上的大量裝置,因此可以根據需要輕鬆新增新裝置或刪除現有裝置。
多主控能力 − 任何裝置(節點)都能夠在網路中發起通訊,這允許不同的系統進行通訊並根據其需求採取行動,並且還支援分散式控制,這是該協議的主要功能。
CAN 協議的應用
控制器區域網 (CAN) 協議廣泛應用於各種應用中,包括:
汽車 − CAN 協議最初是為汽車行業開發的,並用於現代汽車中的各種系統,包括髮動機控制、變速箱控制、防抱死制動系統和車身電子裝置。
工業自動化 − CAN 協議用於工業自動化系統,以允許裝置進行通訊並協調其操作,例如控制電機、感測器和其他裝置。
醫療裝置 − CAN 協議用於醫療裝置以控制各種功能並在裝置之間傳輸資料。例如,患者監護系統使用該協議在裝置之間傳輸患者生命體徵資料。
航空電子裝置 − 該協議用於航空電子裝置以控制和監控各種系統,例如發動機、導航和飛行控制系統。
樓宇自動化 − 該協議用於樓宇自動化系統以控制和監控各種系統,例如供暖、通風、空調 (HVAC)、照明和安全系統。
機器人 − 該協議用於機器人以控制和監控各種系統,例如電機、感測器和其他裝置,從而允許機器人進行通訊並協調其操作。
CAN 幀結構
在控制器區域網 (CAN) 協議中,訊息使用稱為幀的特定格式進行傳輸。幀包含幾個欄位,其中包含有關訊息的資訊,例如源地址、目標地址和資料有效負載。
CAN 幀的基本格式包括:
幀起始 (SOF) − 標識幀的開始。
識別符號 (ID) − 用於標識訊息的唯一 11 位或 29 位數字。
遠端傳輸請求 (RTR) − 指示幀是資料幀 (0) 還是請求資料的遠端幀 (1)。
識別符號擴充套件 (IDE) − 指示 ID 欄位是 11 位 (0) 還是 29 位 (1)。
資料長度程式碼 (DLC) − 指示資料有效負載的長度(以位元組為單位)。
資料 − 訊息的有效負載,最多可達 8 個位元組。
迴圈冗餘校驗 (CRC) − 用於檢測幀中錯誤的校驗和。
確認時隙 (ACK) − 接收節點對訊息傳輸的確認。
幀結束 (EOF) − 標識幀的結束。
訊息作為總線上的一系列位元進行傳輸,其中最高有效位 (MSB) 首先傳輸。訊息傳輸完成後,網路上的所有節點都將接收該訊息,但只有具有匹配識別符號的節點才會處理該訊息。
CAN 分層架構
控制器區域網 (CAN) 協議具有分層架構,旨在分離協議的不同職責。CAN 協議通常分為五層:
物理層 − 此層負責透過通訊介質(如電纜或無線鏈路)物理傳輸位元。它定義了節點與通訊介質之間介面的電氣、機械和操作規範。
資料鏈路層 − 此層負責在節點之間提供可靠的資料傳輸。它包括錯誤檢測和糾正機制,如位元填充和迴圈冗餘校驗 (CRC)。它還管理仲裁過程,以確保一次只有一個節點可以傳輸,並管理訊息的確認。
網路層 − 此層負責為網路上的所有節點提供通用的通訊格式和定址方案。它定義了訊息的格式,包括識別符號、資料有效負載和優先順序。
傳輸層 − 此層定義訊息傳輸和接收的規則,例如訊息分段和重傳、流量控制和錯誤處理。
應用層 − 此層定義可供應用程式使用的服務和介面,例如傳送和接收訊息以及監視網路狀態。它還為應用程式層提供介面。
架構的每一層都設計為獨立於其他層,因此可以對一層進行更改或改進,而不會影響其他層。這種設計允許協議具有靈活性和可擴充套件性,使其非常適合不同行業的各種應用。
結論
總之,控制器區域網 (CAN) 協議是一種廣泛使用的通訊協議,最初是為汽車行業開發的。它是一種序列通訊協議,使用多主控、分散式控制系統,允許網路上的任何裝置(稱為節點)發起通訊,並且網路上的所有其他節點都可以參與通訊。該協議提供了一種方法,使裝置能夠共享資訊並同步其操作,而無需中央控制器。