CAN總線學習筆記:CAN總線的相關概念
在這信息爆炸的年代,學習一樣新的知識,尤其是IT技術的學習,網絡是必不可少的。一陣狂搜過后,發現基于CAN總線的介紹確實不少,但是大多好像都雷同了,也許是不斷轉貼的結果吧。而且這些知識點也都太零散了,讓人看了,尤其是初學者有點找不著北的感覺。所以,本著謙虛好學腳踏實地的菜鳥精神,決定把網上搜的,書上看的,再添油加醋的做一番比較系統的整理。算是為學習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和智能傳感器設計的。在汽車工業,許多制造商都應用他們自己的標準。
|
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具有十分優越的特點,使人們樂于選擇。這些特性包括:
1、低成本;
2、極高的總線利用率;
3、很遠的數據傳輸距離(長達10Km);
4、高速的數據傳輸速率(高達1Mbit/s);
5、可根據報文的ID決定接收或屏蔽該報文;
6、可靠的錯誤處理和檢錯機制;
7、發送的信息遭到破壞后,可自動重發;
8、節點在錯誤嚴重的情況下具有自動退出總線的功能;
9、報文不包含源地址或目標地址,僅用標志符來指示功能信息、優先級信息。
五、Philips制造的CAN芯片有哪些?
|
類別 |
型號 |
備注 |
|
CAN微控制器 |
P87C591 |
替代P87C592 |
|
CAN獨立控制器 |
SJA1000 |
替代82C200 |
|
CAN收發器 |
PCA82C250 |
高速CAN收發器 |
|
|
PCA82C251 |
高速CAN收發器 |
|
|
PCA82C252 |
容錯CAN收發器 |
|
|
TJA1040 |
高速CAN收發器 |
|
|
TJA1041 |
高速CAN收發器 |
|
|
TJA1050 |
高速CAN收發器 |
|
|
TJA1053 |
容錯CAN收發器 |
|
|
TJA1054 |
容錯CAN收發器 |
|
LIN收發器 |
TJA1020 |
LIN收發器 |
表2 CAN芯片一覽表
六、CAN總線如何進行位仲裁?
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高層協議有:
1、制定組織主要高層協議
2、CiA CAL協議
3、CiA CANOpen協議
4、ODVA DeviceNet 協議
5、Honeywell SDS 協議
6、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位標識符的擴展格式報文結構。
九、CAN的報文格式:
(關于這部分內容,對于我下一步要進行編程實驗控制CAN總線是很重要的一個知識點。很郁悶的是搜了老半天只看見有文字敘述這部分內容的,不僅說得不系統完整,而且遠沒有貼圖說明來的具體直觀。不過還好,搜到了一份E文版的CAN總線資料,再把這個資料詳細看了下,再做了整理,還是用圖來說明CAN傳輸的報文格式比較容易理解。老外寫的東西確實比國內的好,這個不是我吹出來的,有興趣下了看看就知道了,見附件下載。)
CAN通信是一種點對多點的傳輸協議,不是基于地址的傳統的點對點傳輸協議。當一個點傳輸數據時,總線上的其它點都可以為接受方,它們可以通過ID來作出對總線上傳送數據的處理(接收或者丟棄)。并且當數據被正確接收到以后,接收方便會作出應答響應。CAN協議還有一個很實用的功能,就是總線上的任一個節點可以請求其它節點向其發送數據,這被稱作遠程發送請求(RTR)。除此以外,CAN協議還有一個優點,當總線新加入一個節點進行通信時無需更改原有的程序,新節點只要通過ID就可以知道是接收還是丟棄數據。
CAN協議定義了四種不同的幀。
1、數據幀,這個幀被用于當一個節點把信息傳送給系統的任何其它節點。數據幀由7個不同的位場組成,即幀起始、仲裁場、控制場、數據場、CRC場、應答場、幀結束。
2、遠程幀,此幀是基于數據幀格式,只要把RTR位設置成遠程發送請求(Remote Transmit Request),并且沒有數據場。總線上發送此幀后,表示請求接收與該幀ID相符的數據幀。遠程幀由6個不同的位場組成,即幀起始、仲裁場、控制場、CRC場、應答場、幀結束。
3、錯誤幀,任何單元監測到錯誤時就發送錯誤幀。錯誤幀由兩個不同的場組成。第一個場是錯誤標志,用做為不同站提供錯誤標志的疊加;第二個場是錯誤界定符。
4、超載幀,節點需要增加時間來處理接收到的數據時便發送過載幀。超載幀包括兩個位場:超載標志和超載界定符。
圖1 幀起始位
CAN總線傳輸的起始幀如圖1。幀起始標志數據幀或遠程幀的起始,由一個單獨的“顯性”位(0)組成。由控制芯片完成。
圖2 標準數據幀格式
圖3 擴展數據幀格式
由圖2和圖3可以看到數據幀的兩種不同格式,兩種格式的差別只是它們的ID位數不同。
1、幀起始。
2、仲裁場,仲裁場包括標識符和遠程發送請求位(RTR)。
對于CAN2.0A標準,標識符的長度為11位。RTR位在數據幀中必須是顯性位,而在遠程幀必須為隱性位。
對于CAN2.0,標準格式和擴展格式的仲裁場不同。在標準格式中,仲裁場由11位標識符和遠程發送請求位組成。在擴展格式中,仲裁場由29位標識符和替代遠程請求位(SRR) 、標志位(IDE)和遠程發送請求位組成。
仲裁場的作用之一是說明數據幀或遠程幀發送目的地;之二是指出是數據幀還是遠程幀。
3、控制場,控制場由6個位組成,說明數據幀中有效數據的長度。標準幀的最高位是IDE位,擴展幀的最高位是保留位RB1,它們的次高位都是保留位RB0。低四位是DLC(Data Length Code)位,標識傳送的數據字節數(0-8字節)。
4、數據場,數據場由數據幀中的發送數據組成。它可以為0-8個字節。
5、CRC場,CRC場包括CRC序列,這部分由SJA1000控制芯片完成。
6、應答場,應答場長度為兩個位,包括應答間隙和應答界定符。由SJA1000控制芯片自動完成。
7、幀結束,每一個數據幀和遠程幀均由一標志序列界定,這個標志序列由7個“隱性”位組成。這部分由SJA1000控制芯片自動完成。
仲裁場、控制場、數據場由軟件編程配置SJA1000完成;幀起始、CRC場、應答場、幀結束由CAN總線控制芯片SJA1000自動完成。
十、CAN的數據錯誤檢測:
不同于其它總線,CAN協議不能使用應答信息。事實上,它可以將發生的任何錯誤用信號發出。CAN協議可使用五種檢查錯誤的方法,其中前三種為基于報文內容檢查。
1、循環冗余檢查(CRC)
在一幀報文中加入冗余檢查位可保證報文正確。接收站通過CRC可判斷報文是否有錯。
2、幀檢查
這種方法通過位場檢查幀的格式和大小來確定報文的正確性,用于檢查格式上的錯誤。
3、應答錯誤
如前所述,被接收到的幀由接收站通過明確的應答來確認。如果發送站未收到應答,那么表明接收站發現幀中有錯誤,也就是說,ACK場已損壞或網絡中的報文無站接收。CAN協議也可通過位檢查的方法探測錯誤。
4、總線檢測
有時,CAN中的一個節點可監測自己發出的信號。因此,發送報文的站可以觀測總線電平并探測發送位和接收位的差異。
5、位填充
一幀報文中的每一位都由不歸零碼表示,可保證位編碼的最大效率。然而,如果在一幀報文中有太多相同電平的位,就有可能失去同步。為保證同步,同步沿用位填充產生。在五個生。在五個連續相等位后,發送站自動插入一個與之互補的補碼位;接收時,這個填充位被自動丟掉。例如,五個連續的低電平位后,CAN自動插入一個高電平位。CAN通過這種編碼規則檢查錯誤,如果在一幀報文中有6個相同位,CAN就知道發生了錯誤。
如果至少有一個站通過以上方法探測到一個或多個錯誤,它將發送出錯標志終止當前的發送。這可以阻止其它站接收錯誤的報文,并保證網絡上報文的一致性。當大量發送數據被終止后,發送站會自動地重新發送數據。作為規則,在探測到錯誤后23個位周期內重新開始發送。在特殊場合,系統的恢復時間為31個位周期。
但這種方法存在一個問題,即一個發生錯誤的站將導致所有數據被終止,其中也包括正確的數據。因此,如果不采取自監測措施,總線系統應采用模塊化設計。為此,CAN協議提供一種將偶然錯誤從永久錯誤和局部站失敗中區別出來的辦法。這種方法可以通過對出錯站統計評估來確定一個站本身的錯誤并進入一種不會對其它站產生不良影響的運行方法來實現,即站可以通過關閉自己來阻止正常數據因被錯誤地當成不正確的數據而被終止。
6、CAN可靠性
為防止汽車在使用壽命期內由于數據交換錯誤而對司機造成危險,汽車的安全系統要求數據傳輸具有較高的安全性。如果數據傳輸的可靠性足夠高,或者殘留下來的數據錯誤足夠低的話,這一目標不難實現。從總線系統數據的角度看,可靠性可以理解為,對傳輸過程產生的數據錯誤的識別能力。
殘余數據錯誤的概率可以通過對數據傳輸可靠性的統計測量獲得。它描述了傳送數據被破壞和這種破壞不能被探測出來的概率。殘余數據錯誤概率必須非常小,使其在系統整個壽命周期內,按平均統計時幾乎檢測不到。計算殘余錯誤概率要求能夠對數據錯誤進行分類 ,并且數據傳輸路徑可由一模型描述。如果要確定CAN的殘余錯誤概率,我們可將殘留錯誤的概率作為具有80~90位的報文傳送時位錯誤概率的函數,并假定這個系統中有5~10個站,并且錯誤率為1/1000,那么最大位錯誤概率為10—13數量級。例如,CAN網絡的數據傳輸率最大為1Mbps,如果數據傳輸能力僅使用50%,那么對于一個工作壽命4000小時、平均報文長度為 80位的系統,所傳送的數據總量為9×1010。在系統運行壽命期內,不可檢測的傳輸錯誤的統計平均小于10—2量級。換句話說,一個系統按每年365 天,每天工作8小時,每秒錯誤率為0. 7計算,那么按統計平均,每1000年才會發生一個不可檢測的錯誤。
- 上一篇:充電機充電動力電池企業能量回饋化成分容技術對比誰能爭得第一? 2017/10/2
- 下一篇:直流穩壓電源高牢靠性元器材禁限用工藝是什么? 2017/10/2
