CAN基礎知識
什么是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的規范定義了模型的最下面兩層:數據鏈路層和物理層。下表中展示了OSI開放式互連模型的各層。應用層協議可以由CAN用戶定義成適合特別工業領域的任何方案。已在工業控制和制造業領域得到廣泛應用的標準是DeviceNet,這是為PLC和智能傳感器設計的。在汽車工業,許多制造商都應用他們自己的標準。
表1 OSI開放系統互連模型
7 應用層 最高層。用戶、軟件、網絡終端等之間用來進行信息交換。如:DeviceNet
6 表示層 將兩個應用不同數據格式的系統信息轉化為能共同理解的格式
5 會話層 依靠低層的通信功能來進行數據的有效傳遞。
4 傳輸層 兩通訊節點之間數據傳輸控制。操作如:數據重發,數據錯誤修復
3 網絡層 規定了網絡連接的建立、維持和拆除的協議。如:路由和尋址
2 數據鏈路層 規定了在介質上傳輸的數據位的排列和組織。如:數據校驗和幀結構
1 物理層 規定通訊介質的物理特性。如:電氣特性和信號交換的解釋
CAN能夠使用多種物理介質,例如雙絞線、光纖等。最常用的就是雙絞線。信號使用差分電壓傳送,兩條信號線被稱為“CAN_H”和“CAN_L”,靜態時均是2.5V左右,此時狀態表示為邏輯“1”,也可以叫做“隱性”。用CAN_H比CAN_L高表示邏輯“0”,稱為“顯形”,此時,通常電壓值為:CAN_H = 3.5V 和CAN_L = 1.5V 。
CAN 有哪些特性?
CAN具有十分優越的特點,使人們樂于選擇。這些特性包括:
低成本
極高的總線利用率
很遠的數據傳輸距離(長達10Km)
高速的數據傳輸速率(高達1Mbit/s)
可根據報文的ID決定接收或屏蔽該報文
可靠的錯誤處理和檢錯機制
發送的信息遭到破壞后,可自動重發
節點在錯誤嚴重的情況下具有自動退出總線的功能
報文不包含源地址或目標地址,僅用標志符來指示功能信息、優先級信息
Philips制造的CAN芯片有哪些?
表2 CAN芯片一覽表
什么是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位標識符的標準格式報文,而忽略擴展格式的報文結構,但不會出現錯誤。目前,Philips公司主要推廣的CAN獨立控制器均支持CAN2.0B協議,即支持29位標識符的擴展格式報文結構。
評論