張樹貴
(中國電子科技集團公司第三十三研究所,山西太原 030006)
CAN是Controller Area Network的縮寫,即“控制器局域網”,是ISO國際標準化的串行通信協議。在汽車產業(yè)中,出于對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統被開發(fā)出來,系統之間通信所用的數據類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,為了解決這些問題,產生了CAN總線協議。它的出現為分布式控制系統實現各節(jié)點之間實時、可靠的數據通信提供了強有力的技術支持。
CAN通訊協議主要描述設備之間的信息傳遞方式。CAN層的定義與開放系統互連模型(OSI)一致。每一層與另一設備上相同的那一層通訊。實際的通訊發(fā)生在每一設備上相鄰的兩層,而設備只通過模型物理層的物理介質互連。
CAN總線標準包括物理層和數據鏈路層,其中鏈路層定義了不同的數據類型,總線訪問的仲裁規(guī)則及故障檢測與故障處理的方式。當CAN總線上的一個節(jié)點(站)發(fā)送數據時,它以報文形式廣播給網絡中的所有節(jié)點。
每組報文開頭的11位字符為表示符(CAN2.0A),定義了報文的優(yōu)先級,這種報文格式稱為面向內容的編制方案。每一個節(jié)點要向其它節(jié)點發(fā)送數據時,該節(jié)點的CPU將要發(fā)送的數據和自己的標識符傳送給本節(jié)點的CAN芯片,并處于準備狀態(tài);當它收到總線分配時,轉為發(fā)送報文狀態(tài)。CAN芯片將數據根據協議組織成一定的報文格式發(fā)出,此時,網上的其它節(jié)點處于接收狀態(tài)。每個處于接收狀態(tài)的節(jié)點對接收到的報文進行檢測,判斷這些報文是否是發(fā)給自己的,以確定接收否。
由于CAN總線是一種面向內容的編址方案,因此很容易建立高水準的控制系統并進行靈活的配置。可以很容易地在CAN總線中加進一些新的節(jié)點而無需再硬件或軟件上進行修改。
CAN總線是一種串行數據通信協議,其通信接口可完成對通信數據的成幀處理,包括位填充、數據塊編碼、循環(huán)冗余檢驗、優(yōu)先級判別等項工作。具有以下特點:
(1)實時性強、傳輸距離較遠、抗電磁干擾能力強、成本低等;
(2)數據傳輸距離遠(可達10 kM);
(3)高速的數據傳輸速率(高達1 Mbps);
(4)采用雙線串行通信方式,檢錯能力強,可在高噪聲干擾環(huán)境中工作;
(5)具有優(yōu)先權和仲裁功能,多個控制模塊通過CAN控制器掛到CAN-bus上,形成多主機局部網絡;
(6)可根據報文的ID決定接收或屏蔽該報文;
(7)可靠的錯誤處理和檢錯機制;
(8)發(fā)送的信息遭到破壞后,可自動重發(fā);
(9)節(jié)點在錯誤嚴重的情況下具有自動退出總線的功能;
(10)脫離總線的節(jié)點不影響總線的正常工作;
(11)報文不包含源地址或目標地址,僅用標志符來指示功能信息、優(yōu)先級信息;
(12)可以點對點、一對多點(成組)及全局廣播幾種傳送方式接收數據。
CAN總線的拓撲結構如圖1所示,CAN hub是用于多分支擴展用的,可以省去。CAN總線和分支的末端都需要垮接一個120歐姆的電阻來終結,防止信號反射。

圖1 CAN總線拓撲結構
在總線中傳送的報文,每幀由7部分組成,幀起始(start of frame)、仲裁場(arbitration frame)、控制場(control frame)、數據場(date frame)、CRC 場(crc frame)、應答場(ack frame)、幀結尾(end of frame)。CAN協議支持兩種報文格式,其中唯一的不同是標識符(ID)長度不同,標準格式為11位,擴展格式為29位。見圖2所示。

圖2 報文的幀格式
在標準格式中,報文的起始位稱為幀起始(SOF),然后是由11位標識符和遠程發(fā)送請求位(RTR)組成的仲裁場。RTR位標明是數據幀還是請求幀,在請求幀中沒有數據字節(jié)。控制場包括標識符擴展位 (IDE),指出是標準格式還是擴展格式。它還包括一個保留位(ro),為將來擴展使用。它的最后4個字節(jié)用來指明數據場中數據的長度(DLC)。數據場范圍為0~8個字節(jié),其后有一個檢測數據錯誤的循環(huán)冗余檢查 (CRC)。應答場(ACK)包括應答位和應答分隔符。發(fā)送站發(fā)送的這兩位均為隱性電平(邏輯1),這時正確接收報文的接收站發(fā)送主控電平(邏輯0)覆蓋它。用這種方法,發(fā)送站可以保證網絡中至少有一個站能正確接收到報文。報文的尾部由幀結束標出。在相鄰的兩條報文間有一很短的間隔位,如果這時沒有站進行總線存取,總線將處于空閑狀態(tài)。
CAN總線上每個設備都有一個11位的ID信息,各設備的優(yōu)先級是根據其ID來確定的,ID的序號越小,其優(yōu)先級越高。下圖為CAN總線上傳輸的標準數據幀格式和擴展數據幀格式,標準幀11位,擴展幀29位。見圖3、圖4所示。

圖3 標準數據幀格式

圖4 擴展數據幀格式
要對數據進行實時處理,就必須將數據快速傳送,這就要求數據的物理傳輸通路有較高的速度。在幾個站同時需要發(fā)送數據時,要求快速地進行總線分配。實時處理通過網絡交換的緊急數據有較大的不同。CAN總線采用CSMA/CD(Carrier Sense Multiple Access with collision Detect,載波監(jiān)測多路訪問/沖突檢測)技術。“載波監(jiān)測”的意思是指在總線上的每個節(jié)點在發(fā)送信息報文前都必須監(jiān)測到總線上有一段時間的空閑狀態(tài)。“多路訪問”的意思是一旦此空閑狀態(tài)被監(jiān)測到,那么每個節(jié)點都有均等的機會來發(fā)送報文。“沖突檢測”是指在兩個節(jié)點同時發(fā)送信息時,節(jié)點本身首先會檢測到出現沖突,然后采取相應的措施來解決這一沖突情況。此時優(yōu)先級高的報文先發(fā)送,低優(yōu)先級的報文發(fā)送會暫停。這就是CAN總線的仲裁,仲裁過程是不會對報文產生破壞的。CAN總線的仲裁過程如圖5所示。
CAN控制器內置出錯計數器,根據出錯是全局的還是本地的,計數器以此決定加1還是加8。通過查詢出錯計數器值,就可以知道通信網絡質量。不同于其它總線,CAN協議不能使用應答信息。它卻可以將發(fā)生的任何錯誤用信號發(fā)出。CAN總線有5種錯誤類型:位錯誤、填充錯誤、CRC錯誤、形式錯誤、應答錯誤。

圖5 CAN總線仲裁過程
CAN總線用隱性和顯性表示0和1。當在總線上出現同時發(fā)送顯性位和隱性位時,總線上數值將出現顯性。總線上的信號使用差分電壓傳送,兩條信號線被稱為VCAN_H和VCAN_L。如圖6所示。

圖6 CAN總線的邏輯電平
CAN總線的數據通信有突出的可靠性、實時性和靈活性。由于具有良好的性能和獨特的設計,CAN總線越來越受到人們的重視。由最早的應用于汽車領域,現在已應用于各種領域。它已經成為一種重要的現場總線之一。
[1] 杜尚豐,曹曉鐘,徐建.CAN總線測控技術及其應用[M].北京:電子工業(yè)出版社,2007.
[2] 饒運濤,鄒繼軍,鄭勇蕓.現場總線CAN原理與應用技術(第二版)[M].北京:北京航空航天大學出版社,2007.
[3] 陽憲惠.現場總線技術及其應用[M].北京:清華大學出版社,1999.
[4] 鄔寬明.CAN總線原理和應用系統設計[M].北京:北京航空航天大學出版社,1996.