由于汽車產業不斷追求安全可靠、極致性能、舒適方便以及低成本等目標,但汽車內高復雜的系統網絡,使得線束過于龐大,導致成本提高且網絡架構也難以持續提升,與前者形成沖突。 于是德國Bosch在1985年提出CAN BUS(Controller Area Network),不但解決了車內線束持續增加的問題,還為日后可靠且有效率的網絡系統墊定了基礎。1993年,CAN BUS更制定為標準化(ISO-11898),由于具有高可靠性和錯誤檢測能力,也被廣泛應用在船舶、航空電子、大眾交通、農用設備、醫療設備、工業控制中。 CAN BUS的架構與特色 CAN BUS是一種串行雙線式差分傳輸的技術規格(見圖1),MCU負責運算數據,CAN Controller處理運算后的數據并傳送“0”或“1”數據,經過 CAN Transceiver的轉換由CAN High和CAN Low產生差分信號(見圖2)。其中,CAN High電壓減CAN Low電壓小于0.5V代表邏輯狀態為“1”,而CAN High電壓減 CAN Low電壓大于0.9V代表邏輯狀態為“0”,所以圖2中傳送位串為101。藉由差分的方式可以避免噪聲的產生,而終端電阻120Ω則是防止信息傳送后反射造成的干擾。 CAN BUS上最小單位為節點(Node),每個節點都可以主動發送信息到總線上,也可以要求特定節點回傳信息,并不限定于只有一個主控端。每個信息(Message)都是以識別子字段(ID Field )為起頭,以識別值決定發送信息的優先權,數值越小優先權越高。所以信息的傳遞并不是定義在節點上,而是定義在信息上。由于是串接的架構加上識別子(ID)的判定機制,所以軟硬件不需要做修正就能夠輕易增加或移除節點,不但降低了布線成本也降低了維護的復雜度,這種多主控端架構成就更完整的智能網絡設備。 信息傳遞可透過節點上的設定,使信息可以被每個節點接收至緩沖器內,也可以選擇對該信息置之不理。CAN BUS也支持遠程數據請求,當該信息識別值符合節點內部的識別值,且該信息是遠程信息(Remote Message)時,指定的節點會將相符的數據傳送出去。用戶便可利用這功能,來進行節點與節點間的溝通。 在CAN BUS上,傳輸速度最快可達1Mbps,用戶可藉由修改位時序設定來修改傳輸速度,而傳輸距離隨通信速度增加而遞減,例如當通信速度40Kbps時,通信距離可達1km;當通信速度1Mbps時,通信距離最遠可達40m,據此用戶可依照本身的應用做調配。 強大的容錯能力 CAN BUS協議具有相當可靠的錯誤處理和檢錯機制,這些都是屬于硬件自動偵測反應,在此種機制下,網絡訊息的傳輸不但有效率且使用起來更加方便。 自動重傳 當總線上的節點偵測到錯誤時,硬件會自動重新發送該訊息到總線上,直到該訊息有任何節點響應ACK (Acknowledged)后,該訊息才會停止發送。 錯誤偵測 CAN BUS提供了五種錯誤偵測機制,分別為位錯誤(Bit Error),填充位錯誤(Stuff Error),循環冗余代碼校驗(CRC Error),格式錯誤(Form Error),響應錯誤(Ack Error),利用這些錯誤偵測機制,使得總線上的傳輸更加穩定,而不需用戶介入。 錯誤通知 偵測到錯誤發生時,節點會發送錯誤訊息(Error Message)到總線上,使得總線上的所有節點都知道此時有錯誤發生,以便作出相對的反應,包括重傳或停止發送等。 錯誤恢復與排除 在CAN協議中規范了每個節點都有傳送錯誤記數器(TEC: Transmit Error Counter)和接收錯誤記數器(REC: Receive Error Counter),根據TEC和REC的值來決定目前節點為何種狀態,一旦TEC大于255,硬件會讓該節點脫機且暫時不接收與發送訊號到總線上,待特定情況發生時,用戶才可將該節點重新初始化,并重新開始監控總線上的訊號,如此一來,可避免因各別節點使總線發生嚴重錯誤,影響其他節點的傳輸。 CAN BUS的應用實例 電梯系統(Elevator) 傳統的電梯系統采用繼電器邏輯線路,有著線束過多且維護不便等問題,改換成以CAN建構系統,不僅大幅減少線束,增加系統可靠度,更有著建構簡單,便于系統偵錯等優點。 橋梁應變規(Strain Gage) 有鑒于天然災害頻傳,所以藉由橋梁應變規來監控橋梁的健康度,以避免人員及車輛傷亡。但傳統應變規多半置于橋上,需要人員到場而無法遠程監控。利用CAN BUS低速時傳輸距離長的特性,可將規劃區域內的橋梁上放置應變規,并連接至CAN BUS以回傳監控中心監控橋梁情形,大幅減少人力成本。 車用監控系統(Recorder with car information) 由于車禍肇事頻傳,使用行車紀錄器掌握前方路況,作為車禍左證的功能。但監視器只能錄取前方路況影像,而無法有效掌控本身行車內部的信息,如目前車速,油門狀態等。運用CAN處理行車信息,再由SPI(Serial Peripheral Interface)、I2C(Inter-Integrated Circuit)等高速接口傳給錄像監視器,便可在每段錄像畫面加上目前車內信息,成為車禍事端更有利的證據。 車用診斷系統(OBDII) OBDII (On Board Diagnosis - II ) 為一種車輛發生故障時,產生故障警示訊號,提醒駕駛人進廠維修的協議。我們可以使用支持CAN的MCU來實現,利用USB(Universal Serial Bus)裝置和CAN來建構診斷系統,可隨時將OBDII connector 接上汽車總線,并將其接收訊息透過USB傳送到計算機,配合計算機端程序來診斷汽車內部異常訊號,進而加速汽車維修速度。 CAN BUS示范系統 因為CAN BUS具有高擴充性、高可靠度且實時性強和低成本等特性,不僅成為車用網絡系統發展技術的核心關鍵,更在其他產業發揮了強大而顯著的技術能力。為了能更了解CAN BUS整體的運作,在此使用普遍常見的M0 MCU,示范一個以CAN BUS傳遞控制命令與狀態消息的馬達控制系統(圖3),其中NUC140 Tiny Board、Learning Board No.1/No/2和Motor Driving Board分別為CAN總線上不同的節點,利用計算機USB連接NUC140 Tiny Board,透過NUC140微處理器譯碼轉換成CAN的訊息,以實現計算機與CAN BUS的鏈接,而各節點可發送與接收系統運作狀態和控制命令。因此在示范系統中,透過CAN BUS的鏈接與NUC140微處理器的轉換,各節點均可接收到馬達的實時狀態消息,并顯示在板子上的LCD屏幕或者計算機上的人機接口。 |