控制器區域網路 (CAN) 匯流排是一種高完整性序列匯流排系統,可連接智慧型裝置。CAN 匯流排與裝置是汽車與工業系統常見元件。舉例來說,CAN 協定有助於提高感測器與電子控制單元 (ECU) 之間的通訊效率,以支援 先進駕駛輔助系統。您可以使用 CAN 介面裝置撰寫 LabVIEW 應用,以便與 CAN 網路通訊。
為簡化車用網路,Bosch 於 1985 年開發出 CAN 協定。 在此之前,汽車製造商均是透過點對點接線系統,以連接車內的電子裝置。而由於車輛使用越來越多的電子裝置,因此大量的傳統接線除了將佔據許多空間之外,亦將提高成本。接著他們以車內網路取代專用接線,藉以降低接線成本、複雜度與重量。CAN 即為高密度的序列匯流排系統,可建構智慧型裝置的網路功能,亦成為車內網路的標準。汽車產業迅速採用 CAN,並於 1993 年成為國際標準,稱為 ISO 11898.自 1994 年起,CANopen 與 DeviceNet 等數種更高階協定都已完成標準化。其他市場也已廣泛採用這些衍生協定,並成為目前工業級通訊作業的標準。此篇技術文件將著重於車內網路的 CAN。
CAN 可提供低價位且耐用的網路,以溝通多組 CAN 裝置。舉例來說,電子控制單元 (ECU) 僅需單一的 CAN 介面,即可取代系統中所有裝置的類比與數位輸入。如此即可降低汽車的整體成本與重量。
網路中的各組裝置均具備了 CAN 控制器晶片,因此更具智慧型功能。在網路中的所有裝置均可接收相關訊息。各組裝置亦可自行辨識該筆訊息是否相關並予以篩選。 這個架構可在影響程度最低的情況下修改 CAN 網路。 不需修改即可新增額外的非傳輸節點。
每個訊息均具有其優先順序。若有 2 個節點同時嘗試傳送訊息,優先順序較高的訊息會先行發出,優先順序較低的訊號將延後傳送。 這種仲裁不會造成破壞,並可讓最高優先順序訊息保持不中斷的傳輸。 這樣一來,網路也能滿足精確的時序限制。
CAN 規格包含循環冗餘碼 (CRC),可對每個訊框的內容進行錯誤檢查。 所有節點都會忽略有錯誤的框架,因此可傳輸錯誤框架,以便將錯誤訊號傳送至網路。 全域與區域錯誤會因控制器而有所區分,如果偵測到錯誤過多,個別節點可能會停止傳輸錯誤,或完全中斷與網路連線。
圖 1:CAN 網路可大幅減少接線。
CAN 原來是要用於汽車產業,因此最常見的應用即為車內電子網路。然而,由於最近 20 年來,已有越來越多的產業了解到 CAN 的優點,因此 CAN 更已普遍進入多項應用之中。如有軌電車、地下化捷運、輕軌鐵路,與長距離火車的軌道應用,均已採用了 CAN。在這些車輛之中,均可發現多種 CAN 所建構的網路,如車門系統、煞車控制器、乘客計算系統,還有更多。CAN 亦可用於飛行器的應用,如飛行狀態感測器、導航系統,與座艙之中的搜尋電腦。此外,多種航太應用亦可發現 CAN 匯流排的蹤跡,從飛行資料分析到飛行器引擎控制系統,如燃料系統、幫浦,與線性致動器。
醫療設備製造商亦使用 CAN 建構醫療裝置中的嵌入式網路。事實上,某些醫院已經使用 CAN 管理整個手術室。透過 CAN 架構的系統,醫院可控制手術室的燈光、手術台、相機、X 光機,與病患床鋪。電梯與電扶梯亦使用嵌入式的 CAN 網路。而 CANopen 協定可連接電梯裝置,如面板、控制器、電梯門,與擋光器 (Light barrier),並進行控制作業。CANopen 亦可用於非工業應用,如實驗室設備、運動相機、望遠鏡、自動門,甚至咖啡機。
CAN 具備多個不同的實體層。這些實體層均以 CAN 網路的概念進行分類,如電子層 (Electrical level)、訊號產生架構、連接線阻抗、最大鮑率,還有更多。最常見且廣泛使用的實體層如下列所述:
高速 CAN 為目前最常見的實體層。高速 CAN 網路採用 2 組接線,傳輸率最高可達 1 Mbit/s。高速 CAN 的其他名稱也包含 CAN C 與 ISO 11898-2。一般的高速 CAN 裝置包含抗鎖定式制動系統、引擎控制模組與排放系統。 CAN 具備靈活的資料傳輸率 (CAN FD) 是新一代的高速 CAN 通訊系統,能因應日新月異的資料傳輸率標準。 NI 透過 NI-XNET 驅動程式使用 TJA1041 與 TJA1043 收發器,可達到最高 8 Mb/s 的速度。 隨著收發器廠商完成 CAN FD 速度定義之後,必要時 NI 也會更新自家的說明文件。
Low-Speed/Fault-Tolerant CAN 硬體 Low-speed/fault-tolerant CAN 網路包含 2 組接線,可達最高 125 kbit/s 的通訊傳輸率,並為接收器提供容錯功能。低速/容錯 CAN 的其他名稱則包含 CAN B 與 ISO 11898-3。汽車常見的低速/容錯裝置,包含舒適裝置。必須穿過車輛車門的接線,即屬於低速/容錯 CAN,以較輕壓力的系統進行開/關車門的動作。同樣的,對較高等級的安全系統 (如煞車燈) 而言,低速/容錯 CAN 亦可建構解決方案。
單線式 (Single-Wire) CAN 硬體 單線式 CAN 介面可溝通裝置達最高 33.3 kbit/s (高速模式可達 88.3 kbit/s) 傳輸率。單線式 CAN 亦稱為 SAE-J2411、CAN A,與 GMLAN。汽車中的單線式裝置往往並不具有高效能。常見應用即包含如座椅調整與後照鏡調整裝置的舒適度裝置。
可透過軟體進行選擇的 CAN 硬體 透過 NI CAN 硬體產品,即可設定由軟體進行選擇的 CAN 介面,以使用任何的快取 (On-board) 接收器 (高速、低速/容錯,或單線式 CAN)。針對需要整合多個通訊標準的應用,具備多重接收器的硬體將可提供完美解決方案。而可由軟體進行選擇的 CAN 硬體,使用者亦可自行選擇所需外接式 CAN 接收器。
PCI/PXI-851x 和 NI 986x 裝置均隨附 NI-XNET 軟體,並可於 ni.com 免費下載。這個新的驅動程式用於開發 NI LabVIEW、NI LabWindows/CVI 以及 Windows 與 LabVIEW Real-Time 作業系統的 CAN、區域互連網路 (LIN) 與 FlexRay 應用。NI/PXI-851x 系列屬於 NI-XNET 平台的 1 部分,可即時且高速操作數百種 CAN 框架與訊號,如硬體迴路 (HIL) 模擬、快速製作控制系統原型、匯流監控、自動化控制,還有更多。
NI-XNET 平台可針對多款高效能的 CAN、LIN 與 FlexRay 介面卡,整合簡單易用的 NI-XNET API 函式,以讀寫 CAN/LIN//FlexRay 的框架與訊號。
NI-XNET 介面卡,整合初階的微控制器程式設計,還有 Windows 與 LabVIEW Real-Time 作業系統的開發速度。針對電腦架構 CAN 介面卡的常見缺點,已申請專利的 NI-XNET 裝置驅動 DMA 引擎,可將系統延遲從毫秒 (Millisecond) 縮短到微秒 (Microsecond)。此引擎還可透過內建的處理器,於介面卡與程式之間搬移 CAN 框架/訊號,不需透過電腦 CPU 處理;藉此省下主處理器對複雜模型與應用的處理時間。
如需了解 NI-XNET 的優點與用途,請參閱 NI-XNET CAN、LIN 與 FlexRay 平台概述。
National Instruments 隨附所有 NI Instruments 舊版 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 硬體與軟體手冊的「使用 Frame API」章節 (請見下方)。
NI 則於 NI-CAN 2.0 驅動程式中首次發表 Channel API。透過於資料庫檔案 (.dbc 或 .ncd) 中所定義的通道名稱,即可讀寫 CAN 通道。Channel API 具有下列優點:
如需進一步了解如何使用 Channel API 進行程式設計,請參閱 NI-CAN Channel API 使用說明。
CAN 裝置透過 CAN 網路,以封包傳送資料即稱為框架 (Frame)。CAN 框架包含下列要素。
圖 2: 標準 CAN 框架格式。
圖 3: 訊號可定義為 CAN 框架內特定數量的位元。
CAN 資料庫檔案為文字式檔案,包含 CAN 框架與訊號定義等相關資訊。NI 的 NI-XNET 資料庫編輯軟體,可識別 FIBEX 資料庫檔案 (.xml)、Vector Database 檔案 (*.dbc),與 NI CAN 資料庫檔案 (*.ncd)。
針對每一筆訊號,CAN 資料庫可定義工程單位的轉換規則。下列資料將儲存於資料庫中:
透過此資訊,即可輕鬆將「原始」資訊 (往往為位元組) 轉換為「實際」值。 下圖則顯示轉換範例。
圖 4: 所有必要的調整資料都會包含在資料庫中,以將框架轉換為訊號。
CAN 資料庫檔案可能包含整組車輛的框架與訊號定義。各組網路亦具有其專屬的資料庫檔案。此外,這些資料庫檔案為各個製造商所專屬,且往往具有其機密性。
只要於 CAN 網路上針對多個框架使用資料庫檔案,則多個 CAN API (如 NI-XNET) 亦可自動將框架資訊直接轉換為實際數值。 這樣一來就能簡化應用開發作業,不必擔心原始的框架數值。
如先前所述,CAN 屬於點對點網路。這表示,沒有主機可控制個別節點在 CAN 匯流排上存取讀取與寫入資料的時間。當 CAN 節點準備好傳輸資料時,它會檢查匯流排是否繁忙,接著只需將 CAN 框架寫入網路即可。而傳輸完畢的 CAN 框架,將不包含傳輸節點與任何預設接收節點的位置。反之,是由整組網路的專屬仲裁 ID 標記該框架。All nodes on the CAN 網路上的所有節點均將接收 CAN 框架,而根據該完成傳送框架的仲裁 ID,網路上的各個 CAN 節點均可決定是否要接收該框架。
若有多個節點於同時嘗試將訊息傳送至 CAN 匯流排,則最高優先度的節點 (即為最低的仲裁 ID) 將自動先進入匯流排。較低優先度的節點必須等到匯流排完成作業,才會再次嘗試進行傳輸。依此方式,即可確保 CAN 網路中的 CAN 節點,將進行精確的通訊作業。
圖 5: CAN 內建訊息優先順序,以避免衝突。
NI 針對 CAN 應用開發,提供多款軟硬體工具。NI 提供適用於不同平台的 CAN 介面,包括 PCI、PXI、USB、CompactRIO 與 CompactDAQ (C 系列)。針對 PCI、PXI 與 C 系列,您可以選擇高速/FD、低速/容錯,以及單線式實體層。在 PCI 與 PXI 方面,NI 提供業界首款可由軟體進行選擇的 CAN 介面。針對單一裝置的各組通訊埠與機板,即提供高速、低速/容錯、與單線式收發器。此亦表示,僅需透過軟體即可選擇所要使用的模式。
此外,NI 所提供的各組介面卡均內附合適的驅動程式軟體。NI CAN 介面驅動程式軟體將於下方說明。
National Instruments ECU 量測與校準工具組可擴充 NI LabVIEW、NI LabWindows™/CVI 與 C/C++ 開發環境,以支援量測與校準應用,適用於設計並校準電子控制單元 (ECU)。ECU 量測與校準工具組提供以 CAN 校準協定 (CCP) 為架構的高階且簡單易用函式,讓 ECU 設計師、測試人員與工程師能建立自訂的量測與校準應用。
LabWindows 商標經過 Microsoft Corporation 授權使用。Windows 是 Microsoft Corporation 在美國與其他國家/地區的註冊商標。