通信篇|CAN(Controller Area Network)控制器區域網基本知識與應用
什麼是CAN ?
CAN,全稱為“Controller Area Network”,即控制器局域網,是國際上應用最廣泛的現場匯流排之一。最初,CAN被設計作為汽車環境中的微控制器通訊,在車載各電子控制裝置ECU之間交換資訊,形成汽車電子控制網路。比如:發動機管理系統、變速箱控制器、儀錶裝備、電子主幹系統中,均嵌入CAN控制裝置。
一個由CAN 匯流排構成的單一網路中,理論上可以掛接無數個節點。實際應用中,節點數目受網路硬體的電氣特性所限制。例如,當使用Philips P82C250作為CAN收發器時,同一網路中允許掛接110個節點。CAN 可提供高達1Mbit/s的資料傳輸速率,這使即時控制變得非常容易。另外,硬體的錯誤檢定特性也增強了CAN的抗電磁干擾能力。
CAN 是怎樣發展起來的?
CAN最初出現在80年代末的汽車工業中,由德國Bosch公司最先提出。當時,由於消費者對於汽車功能的要求越來越多,而這些功能的實現大多是基於電子操作的,這就使得電子裝置之間的通訊越來越複雜,同時意味著需要更多的連接信號線。提出CAN匯流排的最初動機就是為了解決現代汽車中龐大的電子控制裝置之間的通訊,減少不斷增加的信號線。於是,他們設計了一個單一的網路匯流排,所有的週邊器件可以被掛接在該匯流排上。1993年,CAN 已成為國際標準ISO11898(高速應用)和ISO11519(低速應用)。
CAN是一種多主方式的串列通訊匯流排,基本設計規範要求有高的位元速率,高抗電磁干擾性,而且能夠檢測出產生的任何錯誤。當信號傳輸距離達到10Km時,CAN 仍可提供高達50Kbit/s的資料傳輸速率。
由於CAN匯流排具有很高的即時性能,因此,CAN已經在汽車工業、航空工業、工業控制、安全防護等領域中得到了廣泛應用。
CAN 是怎樣工作的?
CAN通訊協定主要描述設備之間的資訊傳遞方式。CAN層的定義與開放系統互連模型(OSI)一致。每一層與另一設備上相同的那一層通訊。實際的通訊發生在每一設備上相鄰的兩層,而設備只通過模型物理層的物理介質互連。CAN的規範定義了模型的最下面兩層:資料連結層和物理層。應用層協定可以由CAN用戶定義成適合特別工業領域的任何方案。已在工業控制和製造業領域得到廣泛應用的標準是DeviceNet,這是為PLC和智慧感測器設計的。在汽車工業,許多製造商都應用他們自己的標準。
CAN能夠使用多種物理介質,例如雙絞線、光纖等。最常用的就是雙絞線。信號使用差分電壓傳送,兩條信號線被稱為“CAN_H”和“CAN_L”,靜態時均是2.5V左右,此時狀態表示為邏輯“1”,也可以叫做“隱性”。用CAN_H比CAN_L高表示邏輯“0”,稱為“顯形”,此時,通常電壓值為:CAN_H = 3.5V 和CAN_L = 1.5V 。
CAN 有哪些特性?
CAN具有十分優越的特點,使人們樂於選擇。這些特性包括:
1、低成本
2、很遠的資料傳輸距離(長達10Km)
3、高速的資料傳輸速率(高達1Mbit/s)
4、可根據報文的ID決定接收或遮罩該報文
5、可靠的錯誤處理和檢錯機制
6、發送的資訊遭到破壞後,可自動重發
7、節點在錯誤嚴重的情況下具有自動退出匯流排的功能
8、報文不包含源位址或目標位址,僅用標誌符來指示功能資訊、優先順序資訊
什麼是CSMA/CD ?
CSMA/CD是“載波偵聽多路訪問/衝突檢測”(Carrier Sense Multiple Access with Collision Detect)的縮寫。
利用CSMA訪問匯流排,可對匯流排上信號進行檢測,只有當匯流排處於空閒狀態時,才允許發送。利用這種方法,可以允許多個節點掛接到同一網路上。當檢測到一個衝突位時,所有節點重新回到‘監聽’匯流排狀態,直到該衝突時間過後,才開始發送。在匯流排超載的情況下,這種技術可能會造成發送信號經過許多延遲。為了避免發送時延,可利用CSMA/CD方式訪問匯流排。當匯流排上有兩個節點同時進行發送時,必須通過“無損的逐位仲裁”方法來使有最高優先權的的報文優先發送。在CAN匯流排上發送的每一條報文都具有唯一的一個11位元或29位元數字的ID。CAN匯流排狀態取決於二進位數字‘0’而不是‘1’,所以ID號越小,則該報文擁有越高的優先權。因此一個為全‘0’標誌符的報文具有匯流排上的最高級優先權。可用另外的方法來解釋:在消息衝突的位置,第一個節點發送0而另外的節點發送1,那麼發送0的節點將取得匯流排的控制權,並且能夠成功的發送出它的資訊。
CAN的高層協定
CAN的高層協定(也可理解為應用層協定)是一種在現有的底層協定(物理層和資料連結層)之上實現的協議。高層協定是在CAN規範的基礎上發展起來的應用層。許多系統(像汽車工業)中,可以特別制定一個合適的應用層,但對於許多的行業來說,這種方法是不經濟的。一些組織已經研究並開放了應用層標準,以使系統的綜合應用變得十分容易。
一些可使用的CAN高層協定有:
制定組織 主要高層協定
CiA CAL協議
CiA CANOpen協議
ODVA DeviceNet 協議
Honeywell SDS 協議
Kvaser CANKingdom協議
什麼是標準格式CAN和擴展格式CAN?
標準CAN的標誌符長度是11位元,而擴展格式CAN的標誌符長度可達29位。CAN 協議的2.0A版本規定CAN控制器必須有一個11位元的標誌符。同時,在2.0B版本中規定,CAN控制器的標誌符長度可以是11位或29位。遵循CAN2.0B協定的CAN控制器可以發送和接收11位識別字的標準格式報文或29位識別字的擴展格式報文。如果禁止CAN2.0B,則CAN 控制器只能發送和接收11位識別字的標準格式報文,而忽略擴展格式的報文結構,但不會出現錯誤。