控制器區域網路

控制器區域網路 (Controller Area Network，簡稱CAN或者CAN bus) 是一種功能豐富的車用匯流排標準。被設計用於在不需要主機（Host）的情況下，允許網路上的單晶片和儀器相互通訊。 它基於訊息傳遞協定，設計之初在車輛上採用復用通訊線纜，以降低銅線使用量，後來也被其他行業所使用。
CAN建立在基於資訊導向傳輸協定的廣播機制（Broadcast Communication Mechanism）上。其根據資訊的內容，利用資訊標誌符（Message Identifier，每個標誌符在整個網路中獨一無二）來定義內容和訊息的優先順序進行傳遞，而並非指派特定站點位址（Station Address）的方式。
因此，CAN擁有了良好的彈性調整能力，可以在現有網路中增加節點而不用在軟、硬體上做出調整。除此之外，訊息的傳遞不基於特殊種類的節點，增加了升級網路的便利性。

歷史

羅伯特·博世公司 於1983年開發了控制器區域網路（CAN bus）。 該協定於1986年美國密西根州底特律市舉行的國際汽車工程師學會（SAE）會議上正式發表。第一個CAN控制晶片，由英特爾和飛利浦生產，並且於1987年發布。 世界上第一台裝載了基於CAN的多重線系統的汽車是1991年推出的梅賽德斯-賓士 W140。
博世公司發表了關於CAN規範的幾個版本，最新的CAN 2.0於1991年發布。 該規範被分為兩部分；A部分適用於使用11位識別碼的標準格式，B部分適用於使用29位標誌符的拓展格式。使用11位識別碼的CAN裝置一般被稱作CAN 2.0A，而使用29位辨識碼的CAN裝置通常稱為CAN 2.0B。博世公司免費提供標準、規範和白皮書。
1993年，國際標準化組織（ISO）公布了CAN標準ISO11898。後來CAN標準被重新編譯分成兩個部分：ISO11898-1涵蓋了資料鏈路層；ISO11898-2涵蓋了高速CAN匯流排的實體層； ISO11898-3於晚些時候公布並且涵蓋了低速CAN匯流排的實體層和CAN匯流排容錯規範。 實體層標準ISO11898-2和ISO11898-3並不包含在博世CAN2.0規範中，它們可以單獨從ISO購買。
之後，博世公司仍然積極地拓展CAN標準。2012年，博世公布CAN FD 1.0或稱作靈活資料速率的CAN。這個規範使用不同的架構，允許在仲裁之後，切換至更快的位元速率，傳輸不同的資料的長度。CAN FD相容現有的CAN 2.0網路，所以新的CAN FD裝置能夠與現有CAN裝置共存於同一控制網路。
CAN匯流排是五個使用在車載診斷 (OBD)-II標準的協定的其中一個。1996年以後，所有在美國銷售的汽車及輕型卡車被強制要求符合OBD-II標準。在歐盟，自2001年後銷售的汽油載具及2004年後銷售的柴油載具都強制規定需要符合EOBD標準。

ID分配

資訊ID在單條CAN匯流排上必須是唯一的，否則兩個節點將在仲裁位(ID)傳送結束後繼續傳輸，造成錯誤。
1990年代早期，為資訊選擇標誌符（ID）的準則僅僅基於資料的種類和發信節點。但是，當標誌符同樣代表著資訊的優先級時，這會帶來不好的即時回應。在這種情況下，通常要求CAN匯流排只能使用大概30%才能保證資訊可以在截止時間之前到達。然而，如果資訊的標誌符根據資訊的優先級決定，更低標誌符的資訊獲得更高優先級，那麼在不損失資料的前提下，匯流排的使用率可以達到70%到80%。

位時序

CAN網路上的所有節點必須執行在相同的標稱位元速率下，但噪音、相移、振盪頻率容差和振盪頻率漂移導致實際的位元速率可能與標稱位元速率不同。由於沒有使用一個單獨的時鐘訊號，需要一個同步節點方法。同步在仲裁機制中十分重要，因為仲裁中的節點需要能夠同時看到它們傳輸資料的資料和其他節點的傳輸資料。 同步在確保節點間震盪時間不同時不發生錯誤上十分重要。
匯流排閒置一段時間後，在第一個隱性訊號向顯性訊號轉換時（起始位） 進行硬同步。再次同步發生在傳輸影格期間的每次從隱性向顯性轉換時。CAN控制器期望在標稱位時間內發生多次轉換。如果並沒有在期望的確定時間發生，控制器將根據這調整標稱位時間。
調整是通過將每一位劃分成多個稱為量子的時間段,並分配一定數量的量子到位中的四個階段完成的。這四個階段分別為：同步、傳播、相位元欄1和相位元欄2。 
位被分成的量子數量會因控制器的不同而不同，每一個階段分配的量子數會因位元速率和網路狀況的不同而改變。
在預期時刻之前或之後發生的過渡會促使控制器計算時間差，並根據計算所得的時間差延長相位元欄1或者縮短相位元欄2。這有效地改變接收器到發信器的時序，將它們同步在一起。這個重新同步過程不斷地在每次隱性向顯性過渡時進行已確保發信器和接收器保持同步。不斷地重新同步降低了噪聲產生的錯誤，讓同步至已經失去仲裁的節點的接收節點重新同步到贏得仲裁的節點。

確認槽（ACK）

確認插槽用於確認收到的CAN影格有效。接收到影格而沒有發現錯誤的每個節點在ACK槽中傳送顯性水平，來覆蓋發射機的隱性水平。如果發射機在ACK時隙中只檢測到隱性電平，它就知道沒有任何接收器獲得有效的影格。接收節點可以傳送隱性訊號來指示它沒有接收到有效影格，但是確實接收到有效影格的其它節點可以用顯性訊號覆蓋它。傳送節點無法知道CAN網路上的是否所有節點都收到了該訊息。

影格間內容

資料框和遠端影格通過稱為影格間空間的區域與前面的影格分開。影格間空間由至少三個連續的隱性（1）位組成。之後，如果檢測到一個顯性位，它將被視為下一影格的「起始位」。 過載影格和錯誤影格不比影格間空間重要，並且多個過載影格也不由影格間空間分隔。影格間空間包含了欄位中斷和匯流排空閒，並且如果前一訊息的傳送器是被動錯誤站點，會將匯流排暫掛。

CAN低層標準

ISO 11898系列規定了用於道路車輛的CAN串行通訊技術的實體層和資料鏈路層（ISO/OSI模型的第一和第二層），支援分散式即時控制和多路復用。
有如下幾個CAN實體層及其他層的標準：
ISO 11898-1:2015規定了控制器區域網路（CAN）的資料鏈路層（DLL）和物理信令。該文件根據ISO/IEC 7498-1中建立的開放系統互連（OSI）的ISO參考模型，描述了CAN匯流排層級通用架構，並提供了在模組之間建立數字資訊交換實現CAN資料鏈路層的特性，和邏輯鏈路控制（LLC）次層和媒介存取控制（MAC）次層的詳細參數。
ISO 11898-2:2003規定了高速（傳輸速率高達1 Mbit / s）媒介存取單元（MAU）和一些媒介相關介面（MDI）特性（根據ISO 8802-3），共同組成了控制區域網路的實體層。ISO 11898-2使用雙線平衡傳輸線信令體系，是車用動力總成應用和工業控制網路中最常用的實體層。
ISO 11898-3:2006規定了在道路車輛電子控制單元之間建立的低速、容錯、依賴媒介的介面的數字資訊交換設定，其傳輸速率在40kBit/s至125kBit/s之間。
ISO 11898-4:2004規定了在CAN中的時間觸發通訊（TTCAN）。它適用於在配備CAN的道路車輛的電子控制單元（ECU）之間建立時間觸發的數字資訊交換，並且根據ISO11898-1規定了與邏輯鏈路和媒介存取控制協調的影格同步化，提供了時間觸發的通訊時間表。
ISO 11898-5:2007規定了道路車輛內傳輸速率高達1 Mbit/s的CAN網路實體層。它根據ISO 8802-2描述了媒介存取單元的功能以及一些與媒介相關的介面功能。它是ISO 11898-2的擴充，應對沒有主動主線通訊但是要求低功耗特性的系統。
ISO 11898-6:2013規定了道路車輛內傳輸速率高達1 Mbit/s的CAN網路實體層。它根據ISO 8802-2描述了媒介存取單元的功能以及一些與媒介相關的介面功能。它是ISO 11898-2和ISO 11898-5的擴充，描述了一種可選的，利用可組態的CAN網路影格的選擇性喚醒機制。
ISO 16845-1:2004提供了用於檢查CAN是否符合ISO 11898-1規定所必需的方法和簡要測試套件。
ISO 16845-2:2014設立測試案例和測試要求，驗證具有選擇性喚醒功能的CAN收發器是否符合指定的功能。ISO 16845-2：2014中定義的測試類型稱為一致性測試。

基於CAN的高層協定

由於CAN標準不包括例如資料流量控制、裝置尋址、傳輸多條訊息的資料塊和應用資料等應用層協定的工作，許多高層協定被指定出來。 儘管這些協定都能被製造商擴充，但其中只有幾個為商用領域標準化。對於乘用車，每個製造商都有自己的標準。 其中包括：

CANopen電梯

CANopen特別興趣組織（SIG）「電梯控制」成立於2001年，為電梯控制系統開發了CiA 417 CANopen應用組態。CiA 417的第一個版本於2003年夏發布。2.0版本於2010年2月在CiA網站公布。SIG致力於擴充CANopen電梯系統的功能，改進技術內容並確保滿足目前對電梯控制系統的法律標準。2.1.0版本於2012年7月發布，於2015年12月發布2.2.0版本（CiA成員可以獲得）標準草案提案。 目前（2016年）SIG正在開發2.3.0版本（CiA成員可以獲得）。
SIG的主席是Jörg Hellmich（ELFIN GmbH），它同時是CANopen電梯社群維基的管理員。

安全性

CAN是低階協定，不支援任何內在的安全功能。在標準的CAN中也沒有加密，這使得這些網路資料能被截取。在大多數應用中，應用程式需要部署自己的安全機制，例如認證傳入命令或網路上某些裝置的存在。若不執行適當的安全措施，其他人可能設法在匯流排上插入訊息。 儘管一些安全關鍵功能（如修改韌體，編程鍵或控制防抱死制動）存在密碼，但這些系統並未普遍實施，並且金鑰對的數量有限。

開發工具

在開發CAN匯流排或排除故障時，檢查硬體訊號非常重要。可以使用邏輯分析儀和匯流排分析儀來收集、分析、解碼並儲存高速波形訊號。此外，還有CAN匯流排監視器及其它特殊工具。
CAN匯流排監視器是一個分析工具，通常是硬體和軟體的組合，用於開發使用在CAN匯流排上的硬體。
通常，CAN匯流排監視器將監聽CAN匯流排上的通訊量，以便將其顯示在自身的使用者介面中。它通常也能將CAN影格傳送到匯流排來類比CAN匯流排活動。 因此，CAN匯流排監視器可用於驗證來自待測裝置的預期CAN流量或類比CAN流量以驗證測試裝置連接到CAN匯流排時的反應。

許可

博世公司擁有該技術的專利，生產相容CAN的微處理器的製造商需要向博世公司支付許可費，這些費用通常加在晶片價格中傳遞給客戶。 生產相容CAN的客製化特殊應用積體電路（ASICs）或現場可程式化邏輯閘陣列（FPGA）模組的製造商需要為CAN協定許可證支付費用。