You are on page 1of 1

Controller Area Network (CAN BUS) 通訊協

定原理概述
發表⽇期: ⼀⽉ 04, 2017 | 3 ⼈評分 | 4.67 分/共 5 |    | 列印

概觀
Controller Area Network (控制器區域網路,CAN BUS) 是⼀種通訊協定,⼯業應⽤廣
泛。本技術⽂件將詳細介紹 CAN BUS 通訊協定的發展、運作原理、優點及其⽇益廣泛
的應⽤。

⽬錄
1. CAN BUS 的沿⾰
2. CAN BUS 的優點
3. CAN BUS 應⽤
4. CAN BUS 的實體層 (Physical Layer)
5. CAN BUS 專有名詞
6. CAN BUS 資料庫檔案
7. CAN BUS 通訊作業的原理
8. NI CAN ⼯具
9. NI-XNET 驅動程式
10. NI-CAN 驅動程式

1. CAN BUS 的沿⾰

由博世 (Bosch) 公司於 1895 年所開發的 Controller Area Network (CAN) 通訊協定,本


是要⽤於⾞內網路 (In-vehicle network)。在此之前,汽⾞製造商均是透過點對點接線
系統,以連接⾞內的電⼦裝置。⽽由於⾞輛使⽤越來越多的電⼦裝置,因此⼤量的傳
統接線除了將佔據許多空間之外,亦將提⾼成本。有鑑於此,製造商開始以⾞內網路
取代實體接線,藉以降低接線成本、複雜度,與體積/重量。CAN BUS 即為⾼密度的序
列匯流排系統,其原理是建構智慧型裝置的網路功能,现已成為⾞內網路的標準。CA
N 因⽽迅速普及於汽⾞⼯業,⽽接著在 1993 年成為 ISO 11898 的國際標準。在 1994
年已發展出多項以 CAN 為標準的進階協定,如 CANopen 與 DeviceNet。其他市場也
已廣泛採⽤這些衍⽣協定,並成為⽬前⼯業級通訊作業的標準。此篇技術⽂件將著重
於⾞內網路的 CAN。
回到頂端

2. CAN BUS 的優點

CAN BUS 可提供低價位且耐⽤的網路,以溝通多組 CAN 裝置。舉例來說,電⼦控制單


元 (ECU) 僅需單⼀的 CAN 介⾯,即可取代系統中所有裝置的類比與數位輸入。如此即
可降低汽⾞的整體成本與重量。網路中的各組裝置均具備了 CAN 控制器晶片,因此更
具智慧型功能。在網路中的所有裝置均可接收相關訊息。各組裝置亦可⾃⾏辨識該筆
訊息是否相關並予以篩選。此外,各筆訊息均具有其優先性。若有 2 個節點同時嘗試
傳送訊息,則具有較⾼優先性的訊息將先⾏發出,低優先性的訊號將延後傳送。

回到頂端

3. CAN BUS 應⽤

CAN BUS 最初應⽤於汽⾞產業,因此最常⾒的應⽤即為⾞內電⼦網路。然⽽,由於最
近 15 年來,已有越來越多的產業了解到 CAN 的優點,因此 CAN BUS 的應⽤越來越廣
泛。如有軌電⾞、地下化捷運、輕軌鐵路,與長距離火⾞的軌道應⽤,均已採⽤了 CA
N。在這些⾞輛之中,均可發現多種 CAN 所建構的網路,如⾞⾨系統、煞⾞控制器、
乘客計算系統,還有更多。CAN BUS 協定亦可應⽤於⾶⾏器,如⾶⾏狀態感測器、
導航系統,與座艙之中的搜尋電腦。多種航太應⽤亦可發現 CAN 匯流排的蹤跡,從⾶
⾏資料分析到⾶⾏器引擎控制系統,如燃料系統、幫浦,與線性致動器。

CAN BUS 還被可應⽤於醫療設備⾏業:設備製造商使⽤ CAN 建構醫療裝置中的嵌入式


網路。事實上,某些醫院已經使⽤ CAN 管理整個⼿術室。透過 CAN BUS 通訊協定架
構的系統,醫院可控制⼿術室的燈光、⼿術台、相機、X 光機,與病患床鋪。電梯與電
扶梯亦使⽤嵌入式的 CAN 網路。⽽ CANopen 協定可連接電梯裝置,如⾯板、控制
器、電梯⾨,與擋光器 (Light barrier),並進⾏控制作業。CANopen 亦可⽤於非⼯業應
⽤,如實驗室設備、運動相機、望遠鏡、⾃動⾨,甚⾄咖啡機。
回到頂端

4. CAN BUS 的實體層 (Physical Layer)

CAN BUS 通訊協定具備多個不同的實體層。這些實體層均以 CAN 網路的概念進⾏分


類,如電⼦層 (Electrical level)、訊號產⽣架構、連接線阻抗、最⼤鮑率,還有更多。
最常⾒且廣泛使⽤的實體層如下列所述:

⾼速 (High-Speed) CAN
High-speed CAN BUS 為⽬前最常⾒的實體層。High-speed CAN 網路包含 2 組接線,
並可進⾏最⾼ 1 Mb/s 的通訊傳輸率。High-speed CAN 亦稱為 CAN C 與 ISO 11898-
2。典型的 High-speed CAN 裝置包含反鎖死煞⾞系統 (ABS)、引擎控制模組,與排放
系統。

低速/容錯 (Low-Speed/Fault-Tolerant) CAN 硬體


Low-speed/fault-tolerant CAN BUS 網路包含 2 組接線,可達最⾼ 125 kb/s 的通訊傳輸
率,並為接收器提供容錯功能。低速/容錯 CAN 亦稱為 CAN B 與 ISO 11898-3。汽⾞中
的典型低速/容錯裝置則包含舒適度 (Comfort) 裝置。必須穿過⾞輛⾞⾨的接線,即屬
於低速/容錯 CAN,以較輕壓⼒的系統進⾏開/關⾞⾨的動作。同樣的,對較⾼等級的安
全系統 (如煞⾞燈) ⽽⾔,低速/容錯 CAN 亦可建構解決⽅案。

單線式 (Single-Wire) CAN 硬體


單線式 CAN BUS 通訊介⾯可溝通裝置達最⾼ 33.3 kb/s (⾼速模式可達 88.3 kb/s) 傳輸
率。單線式 CAN 亦稱為 SAE-J2411、CAN A,與 GMLAN。汽⾞中的單線式裝置往往
並不具有⾼效能。常⾒應⽤即包含如座椅調整與後照鏡調整裝置的舒適度裝置。

可透過軟體進⾏選擇的 CAN 硬體
透過 NI CAN 硬體產品,即可設定由軟體進⾏選擇的 CAN 介⾯,以使⽤任何的快取 (O
n-board) 接收器 (⾼速、低速/容錯,或單線式 CAN)。針對需要整合多個通訊標準的應
⽤,具備多重接收器的硬體將可提供完美解決⽅案。⽽可由軟體進⾏選擇的 CAN 硬
體,使⽤者亦可⾃⾏選擇所需外接式 CAN 接收器。
回到頂端

5. CAN BUS 專有名詞

CAN 裝置透過 CAN 網路,以封包傳送資料即稱為框架 (Frame)。CAN 框架包含下列要


素。

CAN 框架 (Frame) – 完整的 CAN 傳輸作業:仲裁識別號碼 (Arbitration ID)、資料


位元,與回應位元 (Acknowledge bit) 等。框架亦可稱為「訊息」。

框架起點 (Start-of-Frame,SOF) 位元 – 以強勢位元 (Dominant bit) – 亦為 Logic 0


– 為開頭的訊息。

仲裁識別號碼 (Arbitration ID) – 可識別訊息與其優先順序。框架共有 2 種格式 –


標準格式使⽤ 11 位元的仲裁 ID;延伸格式則是使⽤ 29 位元的仲裁 ID。

識別⼦延伸 (Identifier Extension,IDE) 位元 – 可區隔標準與延伸框架。

遠端傳輸要求 (Remote Transmission Request,RTR) 位元 – 可從資料框架中區隔


出遠端框架。強勢 (Logic 0) RTR 位元即表⽰ 1 組資料框架。弱勢 (Logic 1) RTR 位
元即表⽰ 1 組遠端框架。

資料長度碼 (Data Length Code,DLC) – 指出資料欄位所內含的位元數

資料欄位(Data Field) – 包含 0 ~ 8 位元數的資料

循環冗餘校驗 (Cyclic Redundancy Check,CRC) – 包含 15 位元的循環冗餘校驗碼


與弱勢分隔符 (Delimiter) 位元。CRC 欄位可⽤於除錯。

認可字元 (ACKnowledgement,ACK) 槽 – 任何正確接收訊息的 CAN 控制器,均


將於訊息末端附加傳送 1 組 ACK 位元。傳送節點將檢查匯流排中是否具有 ACK 位
元,⽽若未偵測到 ACK 則將重新嘗試傳輸。NI Series 2 CAN 介⾯則具備唯接收 (L
isten-only) 模式。因此,若透過硬體監控⽽傳輸 ACK 位元,則是為了避免其受到
匯流排的動作所影響。

CAN 訊號 – 為 CAN 框架資料欄位所內含的獨立資料片段。亦可將 CAN 訊號視為


通道 (Channel)。由於資料欄位可包含最多 8 位元的資料,因此單⼀ CAN 框架可
包含 0 ~ 64 筆獨立訊號 (對 64 個通道⽽⾔,可能全為⼆進制)。

下圖則顯⽰單⼀ CAN 框架的資料欄位,共包含了 6 個通道。各組訊號則包含 8 位元的


資料。

回到頂端

6. CAN BUS 資料庫檔案

CAN 資料庫檔案為⽂字式檔案,包含 CAN 框架與訊號定義的資訊。NI的 NI-XNET 資


料庫編輯軟體,可識別 FIBEX 資料庫檔案 (.xml)、Vector Database 檔案 (*.dbc),與 NI
CAN 資料庫檔案 (*.ncd)。

針對各筆訊號,CAN 資料庫可定義⼯程單位的轉換規則。下列資料將儲存於資料庫
中:

通道名稱
已知訊息中的通道位置 (開始位元) 與⼤⼩ (位元數)
位元組順序 (Byte order) - (Intel/Motorola)
資料類型 (已簽、未簽,與 IEEE 浮點)
縮放比例 (Scaling) 與單元字串 (Unit string)
範圍
預設值
指令

透過此資訊,即可輕鬆將「原始」資訊 (往往為位元組) 轉換為「實際」值。下圖則顯


⽰轉換範例。

CAN 資料庫檔案可能包含整組⾞輛的框架與訊號定義。各組網路亦具有其專屬的資料
庫檔案。此外,這些資料庫檔案為各個製造商所專屬,且往往具有其機密性。

只要於 CAN 網路上針對多個框架使⽤資料庫檔案,則多個 CAN API (如 NI-XNET) 亦可


⾃動將框架資訊直接轉換為實際數值。此可簡化應⽤開發作業,且不需擔⼼原始的框
架數值。
回到頂端

7. CAN BUS 通訊作業的原理

如先前所述,CAN BUS 屬於點對點網路。意即當獨立節點要讀寫 CAN 匯流排上的資料


時,並不需要透過主機控制器 CAN BUS 的基本原理是當節點準備傳送資料時,將先檢
查匯流排是否處於繁忙狀態,接著將 CAN BUS 框架寫入⾄網路中。⽽傳輸完畢的 CAN
框架,將不包含傳輸節點與任何預設接收節點的位置。反之,是由整組網路的專屬仲
裁 ID 標記該框架。CAN BUS 網路上的所有節點均將接收 CAN 框架,⽽根據該完成傳
送框架的仲裁 ID,網路上的各個 CAN 節點均可決定是否要接收該框架。

若有多個節點於同時嘗試將訊息傳送⾄ CAN 匯流排,則最⾼優先度的節點 (即為最低


的仲裁 ID) 將⾃動先進入匯流排。較低優先度的節點必須等到匯流排完成作業,才會再
次嘗試進⾏傳輸。依此⽅式,即可確保 CAN 網路中的 CAN 節點,將進⾏精確的通訊
作業。

回到頂端

8. NI CAN ⼯具

針對 CAN 應⽤開發作業,NI 提供多款硬體與軟體⼯具。NI 對不同的平台提供 CAN 介


⾯,包含 PCI、PXI、PCMCIA,與 NI CompactRIO。⽽ PCI、PXI,與 PCMCIA 介⾯,
均有其⾼速、低速/容錯,與單線式的實體層。在 PCI 與 PXI ⽅⾯,NI 提供業界⾸款可
由軟體進⾏選擇的 CAN 介⾯。針對單⼀裝置的各組通訊埠與機板,即提供⾼速、低速/
容錯,與單線式收發器。此亦表⽰,僅需透過軟體即可選擇所要使⽤的模式。

NI PCI-8513 – 可透過軟體進⾏選擇 (XS) 的 CAN 介⾯卡

此外,NI 所提供的各組介⾯卡均內附合適的驅動程式。NI CAN 介⾯的驅動程式細節將


如下所述。

NI ECU 量測與校準⼯具組,可擴充 NI LabVIEW、NI LabWindows/CVI,與 Microsoft C/


C++ 開發環境,以⽀援量測與校準應⽤,適於設計並校準電⼦控制單位 (ECU)。ECU
量測與校準 (Measurement and Calibration) ⼯具組則是以 CAN 校準協定 (CCP) 為架
構,提供簡單易⽤的⾼階函式,可讓 ECU ⼯程師建立所需的客制化量測與校準應⽤。
若需要進⼀步資訊,請參閱下列 ECU 量測與校準 (Measurement and Calibration) ⼯具
組資源。

另請參閱:
NI Controller Area Network (CAN) 介⾯ (PCI)
NI Controller Area Network (CAN) 介⾯ (PXI)
NI Controller Area Network (CAN) 介⾯ (PCMCIA)
NI ECU 量測與校準 (Measurement and Calibration) ⼯具組
回到頂端

9. NI-XNET 驅動程式

NI-XNET 軟體已內含於 PCI/PXI-851x 硬體系列,並可⾄ ni.com 免費下載。此新的驅動


程式可於 Windows 與 LabVIEW Real-Time 作業系統中,透過 NI LabVIEW、NI LabWin
dows/CVI,與 C/C++ 開發 CAN 與 FlexRay 應⽤。PCI/PXI-851x 系列屬於 NI-XNET 平
台的 1 部分,可即時且⾼速操作數百種 CAN 框架與訊號,如硬體迴路 (HIL) 模擬、快
速製作控制系統原型、匯流排監控、⾃動化控制,還有更多。

NI-XNET:單⼀ API 即可建構多個嵌入式網路


NI-XNET 平台可針對多款⾼效能的 CAN、FlexRay 介⾯,整合 NI-XNET API (簡單易⽤
的函式集),以讀寫 CAN/FlexRay 的框架與訊號。

以更少的程式設計作業達到更⾼效能
NI-XNET 介⾯,整合初階微控制器程式設計,還有 Windows 與 LabVIEW Real-Time 作
業系統的開發速度。針對電腦架構 CAN 介⾯的常⾒缺點,申請專利中的 NI-XNET 裝置
驅動 DMA 引擎,可將系統潛時從毫秒 (Millisecond) 縮短到微秒 (Microsecond)。此引
擎可透過快取 (On-board) 處理器,於介⾯與使⽤者程式之間搬移 CAN 架構/訊號,⽽
不需透過電腦 CPU 進⾏處理;此可省下主機處理器處理複雜模型與應⽤的時間。
回到頂端

10. NI-CAN 驅動程式

NI 已於所有 NI 舊款 CAN 介⾯ (Legacy CAN) 中附加 NI-CAN 驅動程式,亦可⾄ ni.com


免費下載該軟體。若搭配其他 CAN 介⾯,即便並未購買關鍵的軟體⼯具,亦可利⽤少
部分的相關功能。然⽽,所有的 NI CAN 介⾯卡均具備完整功能,因此使⽤者可選擇所
需的程式設計語⾔,建立客制化的應⽤。NI-CAN 驅動程式並具備簡單易⽤的⾼階函
式,可迅速開發 CAN 應⽤,省下成本與時間。

NI –CAN 驅動程式即具備 2 種應⽤程式設計介⾯ (API)。Frame API 為 CAN 程式設計作


業的原始 API。透過 Frame API,即可傳輸並接收已包含原始資料位元組的 CAN 框
架。⽽程式必須能夠分析語法並調整這些位元組,以搭配調整過後的⼯程單位。若要
進⼀步了解 Frame API 的程式設計作業,可參閱 NI CAN 硬體與軟體⼿冊的「Using the
Frame API」章節 (請⾒下⽅)。

NI 則於 NI-CAN 2.0 驅動程式中⾸次發表 Channel API。透過於資料庫檔案 (.dbc 或 .nc


d) 中所定義的通道名稱,即可讀寫 CAN 通道。Channel API 具有下列優點:

⾼階程式設計功能
簡單易⽤的實體單元 (Physical unit)
主要⽤於簡易的 CAN/資料擷取的同步化作業
可整合 Vector 資料庫的檔案

You might also like