複製鏈接
請複製以下鏈接發送給好友

CAN總線協議

鎖定
控制器局域網總線(CAN,Controller Area Network)是一種用於實時應用的串行通訊協議總線,它可以使用雙絞線來傳輸信號,是世界上應用最廣泛的現場總線之一。CAN協議用於汽車中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束。該協議的健壯性使其用途延伸到其他自動化和工業應用。CAN協議的特性包括完整性的串行數據通訊、提供實時支持、傳輸速率高達1Mb/s、同時具有11位的尋址以及檢錯能力。

CAN總線協議概述

CAN總線協議總線發展

控制器局域網CAN( Controller Area Network)屬於現場總線的範疇,是一種有效支持分佈式控制系統的串行通信網絡。是由德國博世公司在20世紀80年代專門為汽車行業開發的一種串行通信總線。由於其高性能、高可靠性以及獨特的設計而越來越受到人們的重視,被廣泛應用於諸多領域。而且能夠檢測出產生的任何錯誤。當信號傳輸距離達到10km時,CAN仍可提供高達50kbit/s的數據傳輸速率。由於CAN總線具有很高的實時性能和應用範圍,從位速率最高可達1Mbps的高速網絡到低成本多線路的50Kbps網絡都可以任意搭配。因此,CAN己經在汽車業、航空業、工業控制、安全防護等領域中得到了廣泛應用。
隨着CAN總線在各個行業和領域的廣泛應用,對其的通信格式標準化也提出了更嚴格的要求。1991年CAN總線技術規範(Version2.0)制定併發布。該技術規範共包括A和B兩個部分。其中2.0A給出了CAN報文標準格式,而2.0B給出了標準的和擴展的兩種格式。美國的汽車工程學會SAE在2000年提出了J1939協議,此後該協議成為了貨車和客車中控制器局域網的通用標準。CAN總線技術也在不斷髮展。傳統的CAN是基於事件觸發的,信息傳輸時間的不確定性和優先級反轉是它固有的缺陷。當總線上傳輸消息密度較小時,這些缺陷對系統的實時性影響較小;但隨着在總線上傳輸消息密度的增加,系統實時性能會急劇下降。為了滿足汽車控制對實時性和傳輸消息密度不斷增長的需要,改善CAN總線的實時性能非常必要。於是,傳統CAN與時間觸發機制相結合產生了TTCAN(Time-Triggered CAN),ISO11898-4己包含了TTCAN。 TTCAN總線和傳統CAN總線系統的區別是:總線上不同的消息定義了不同的時間槽(Timer Slot)。

CAN總線協議相關組織

依據國際標準化組織/開放系統互連(International Standardi-zation Organization/Open SystemInterconnection,ISO/OSI)參考模型,CAN的ISO/OSI參考模型的層結構。

CAN總線協議概念特徵

CAN總線的工作原理
CAN總線使用串行數據傳輸方式,可以1Mb/s的速率在40m的雙絞線上運行,也可以使用光纜連接,而且在這種總線上總線協議支持多主控制器。 [1]  CAN與I2C總線的許多細節很類似,但也有一些明顯的區別。當CAN總線上的一個節點(站)發送數據時,它以報文形式廣播給網絡中所有節點。對每個節點來説,無論數據是否是發給自己的,都對其進行接收。每組報文開頭的11位字符為標識符,定義了報文的優先級,這種報文格式稱為面向內容的編址方案。在同一系統中標識符是唯一的,不可能有兩個站發送具有相同標識符的報文。當幾個站同時競爭總線讀取時,這種配置十分重要。
當一個站要向其它站發送數據時,該站的CPU將要發送的數據和自己的標識符傳送給本站的CAN芯片,並處於準備狀態;當它收到總線分配時,轉為發送報文狀態。CAN芯片將數據根據協議組織成一定的報文格式發出,這時網上的其它站處於接收狀態。每個處於接收狀態的站對接收到的報文進行檢測,判斷這些報文是否是發給自己的,以確定是否接收它。由於CAN總線是一種面向內容的編址方案,因此很容易建立高水準的控制系統並靈活地進行配置。我們可以很容易地在CAN總線中加進一些新站而無需在硬件或軟件上進行修改。當所提供的新站是純數據接收設備時,數據傳輸協議不要求獨立的部分有物理目的地址。它允許分佈過程同步化,即總線上控制器需要測量數據時,可由網上獲得,而無須每個控制器都有自己獨立的傳感器。
CAN總線特徵
(1)報文(Message)總線上的數據以不同報文格式發送,但長度受到限制。當總線空閒時,任何一個網絡上的節點都可以發送報文
(2)信息路由(Information Routing)在CAN中,節點不使用任何關於系統配置報文,比如站地址,由接收節點根據報文本身特徵判斷是否接收這幀信息。因此係統擴展時,不用對應用層以及任何節點的軟件和硬件作改變,可以直接在CAN中增加節點。
(3)標識符(Identifier) 要傳送的報文有特徵標識符(是數據幀和遠程幀的一個域),它給出的不是目標節點地址,而是這個報文本身的特徵。信息以廣播方式在網絡上發送,所有節點都可以接收到。節點通過標識符判定是否接收這幀信息。
(4)數據一致性應確保報文在CAN裏同時被所有節點接收或同時不接收,這是配合錯誤處理和再同步功能實現的。
(5)位傳輸速率不同的CAN系統速度不同,但在一個給定的系統裏,位傳輸速率是唯一的,並且是固定的。
(6)優先權 由發送數據的報文中的標識符決定報文佔用總線的優先權。標識符越小,優先權越高。
(7)遠程數據請求(Remote Data Request) 通過發送遠程幀,需要數據的節點請求另一節點發送相應的數據。迴應節點傳送的數據幀與請求數據的遠程幀由相同的標識符命名
(8)仲裁(Arbitration) 只要總線空閒,任何節點都可以向總線發送報文。如果有兩個或兩個以上的節點同時發送報文,就會引起總線訪問碰撞。通過使用標識符的逐位仲裁可以解決這個碰撞。仲裁的機制確保了報文和時間均不損失。當具有相同標識符數據幀和遠程幀同時發送時,數據幀優先於遠程幀。在仲裁期間,每一個發送器都對發送位的電平與被監控的總線電平進行比較。如果電平相同,則這個單元可以繼續發送,如果發送的是“隱性”電平而監視到的是“顯性”電平,那麼這個單元就失去了仲裁,必須退出發送狀態。
(9)總線狀態 總線有“顯性”和“隱性”兩個狀態,“顯性”對應邏輯“0”,“隱性”對應邏輯“1”。“顯性”狀態和“隱性”狀態與為“顯性”狀態,所以兩個節點同時分別發送“0”和“1”時,總線上呈現“0”。CAN總線採用二進制不歸零(NRZ)編碼方式,所以總線上不是“0”,就是“1”。但是CAN協議並沒有具體定義這兩種狀態的具體實現方式。
(10)故障界定(Confinement) CAN節點能區分瞬時擾動引起的故障和永久性故障。故障節點會被關閉。
(11)應答接收節點對正確接收的報文給出應答,對不一致報文進行標記。
(12)CAN通訊距離最大是10公里(設速率為5Kbps),或最大通信速率為1Mbps(設通信距離為40米)。
(13)CAN總線上的節點數可達110個。通信介質可在雙絞線,同軸電纜,光纖中選擇。
(14)報文是短幀結構,短的傳送時間使其受干擾概率低,CAN有很好的校驗機制,這些都保證了CAN通信的可靠性。
CAN總線的特點
(1)具有實時性強、傳輸距離較遠、抗電磁干擾能力強、成本低等優點;
(2)採用雙線串行通信方式,檢錯能力強,可在高噪聲干擾環境中工作;
(3)具有優先權和仲裁功能,多個控制模塊通過CAN 控制器掛到CAN-bus 上,形成多主機局部網絡;
(4)可根據報文的ID決定接收或屏蔽該報文;
(5)可靠的錯誤處理和檢錯機制;
(6)發送的信息遭到破壞後,可自動重發;
(7)節點在錯誤嚴重的情況下具有自動退出總線的功能;
(8)報文不包含源地址或目標地址,僅用標誌符來指示功能信息、優先級信息。

CAN總線協議協議內容

CAN總線的物理層是將ECU連接至總線的驅動電路。ECU的總數將受限於總線上的電氣負荷。物理層定義了物理數據在總線上各節點間的傳輸過程,主要是連接介質、線路電氣特性、數據的編碼/解碼、位定時和同步的實施標準。
總線競爭的原則
BOSCH CAN基本上沒有對物理層進行定義,但基於CAN的ISO標準對物理層進行了定義。設計一個CAN系統時,物理層具有很大的選擇餘地,但必須保證CAN協議中媒體訪問層非破壞性位仲裁的要求,即出現總線競爭時,具有較高優先權的報文獲取總線競爭的原則,所以要求物理層必須支持CAN總線中隱性位和顯性位的狀態特徵。在沒有發送顯性位時,總線處於隱性狀態,空閒時,總線處於隱性狀態;當有一個或多個節點發送顯性位,顯性位覆蓋隱性位,使總線處於顯性狀態。
在此基礎上,物理層主要取決於傳輸速度的要求。從物理結構上看,CAN節點的構成如圖7-8所示。在CAN中,物理層從結構上可分為三層:分別是物理信號層(Physical Layer Signaling,PLS)、物理介質附件(Physical MediaAttachment,PMA)層和介質從屬接口(Media Dependent:Inter-face,MDI)層。其中PLS連同數據鏈路層功能由CAN控制器完成,PMA層功能由CAN收發器完成,MDI層定義了電纜和連接器的特性。目前也有支持CAN的微處理器內部集成了CAN控制器和收發器電路,如MC68HC908GZl6。PMA和MDI兩層有很多不同的國際或國家或行業標準,也可自行定義,比較流行的是ISOll898定義的高速CAN發送/接收器標準。
節點數量
CAN網絡上的節點不分主從,任一節點均可在任意時刻主動地向網絡上其他節點發送信息,通信方式靈活,利用這一特點可方便地構成多機備份系統,CAN只需通過報文濾波即可實現點對點、一點對多點及全局廣播等幾種方式傳送接收數據,無需專門的"調度"。 CAN的直接通信距離最遠可達10km(速率5kbps以下);通信速率最高可達1Mbps(此時通信距離最長為40m)。 CAN上的節點數主要決定於總線驅動電路,目前可達110個;報文標識符可達2032種(CAN2.0A),而擴展標準(CAN2.0B)的報文標識符幾乎不受限制。
CAN的數據鏈路層
CAN的數據鏈路層是其核心內容,其中邏輯鏈路控制(Logical Link control,LLC)完成過濾、過載通知和管理恢復等功能,媒體訪問控制(Medium Access control,MAC)子層完成數據打包/解包、幀編碼、媒體訪問管理、錯誤檢測、錯誤信令、應答、串並轉換等功能。這些功能都是圍繞信息幀傳送過程展開的。

CAN總線協議報文傳輸

CAN總線協議報文類型

在CAN2.0B的版本協議中有兩種不同的幀格式,不同之處為標識符域的長度不同,含有11位標識符的幀稱之為標準幀,而含有29位標識符的幀稱為擴展幀。如CAN1.2版本協議所描述,兩個版本的標準數據幀格式和遠程幀格式分別是等效的,而擴展格式是CAN2.0B協議新增加的特性。為使控制器設計相對簡單,並不要求執行完全的擴展格式,對於新型控制器而言,必須不加任何限制的支持標準格式。但無論是哪種幀格式,在報文傳輸時都有以下四種不同類型的幀:

CAN總線協議幀類型

在報文傳輸時,不同的幀具有不同的傳輸結構,下面將分別介紹四種傳輸幀的結構,只有嚴格按照該結構進行幀的傳輸,才能被節點正確接收和發送。
(1)數據幀由七種不同的位域(Bit Field)組成:幀起始(Start of )、仲裁域(Arbitration Field)、控制域(Control Field)、數據域(DataField)、CRC域(CRC Field)、應答域(ACK Field)和幀結尾(End of )。數據域的長度可以為0~8個字節。
1)幀起始(SOF):幀起始(SOF)標誌着數據幀和遠程幀的起始,僅由一個“顯性”位組成。在CAN的同步規則中,當總線空閒時(處於隱性狀態),才允許站點開始發送(信號)。所有的站點必須同步於首先開始發送報文的站點的幀起始前沿(該方式稱為“硬同步”)。
2)仲裁域:仲裁域由標識符和RTR位組成,標準幀格式與擴展幀格式的仲裁域格式不同。標準格式裏,仲裁域由11位標識符和RTR位組成。標識符位有ID28~ID18。擴展幀格式裏,仲裁域包括29位標識符、SRR位、IDE(Identifier Extension,標誌符擴展)位、RTR位。其標識符有ID28~ID0。為了區別標準幀格式和擴展幀格式,CANl.0~1.2版本協議的保留位r1現表示為IDE位。IDE位為顯性,表示數據幀為標準格式;IDE位為隱性,表示數據幀為擴展幀格式。在擴展幀中,替代遠程請求(Substitute Remote Request,SRR)位為隱性。仲裁域傳輸順序為從最高位到最低位,其中最高7位不能全為零。RTR的全稱為“遠程發送請求(Remote TransmissionRequest)”。RTR位在數據幀裏必須為“顯性”,而在遠程幀裏必須為“隱性”。它是區別數據幀和遠程幀的標誌。
3)控制域:控制域由6位組成,包括2個保留位(r0、r1同於CAN總線協議擴展)及4位數據長度碼,允許的數據長度值為0~8字節。
4)數據域:發送緩衝區中的數據按照長度代碼指示長度發送。對於接收的數據,同樣如此。它可為0~8字節,每個字節包含8位,首先發送的是MSB(最高位)。
5)CRC校驗碼域:它由CRC域(15位)及CRC邊界符(一個隱性位)組成。CRC計算中,被除的多項式包括幀的起始域、仲裁域、控制域、數據域及15位為0的解除填充的位流給定。此多項式被下列多項式X15+X14+X10+X8+X7+X4+X3+1除(係數按模2計算),相除的餘數即為發至總線的CRC序列。發送時,CRC序列的最高有效位被首先發送/接收。之所以選用這種幀校驗方式,是由於這種CRC校驗碼對於少於127位的幀是最佳的。
6)應答域:應答域由發送方發出的兩個(應答間隙及應答界定)隱性位組成,所有接收到正確的CRC序列的節點將在發送節點的應答間隙上將發送的這一隱性位改寫為顯性位。因此,發送節點將一直監視總線信號已確認網絡中至少一個節點正確地接收到所發信息。應答界定符是應答域中第二個隱性位,由此可見,應答間隙兩邊有兩個隱性位:CRC域和應答界定位。
7)幀結束域:每一個數據幀或遠程幀均由一串七個隱性位的幀結束域結尾。這樣,接收節點可以正確檢測到一個幀的傳輸結束。
(2)錯誤幀錯誤幀由兩個不同的域組成:第一個域是來自控制器的錯誤標誌;第二個域為錯誤分界符。
1)錯誤標誌:有兩種形式的錯誤標誌。
①激活(Active)錯誤標誌。它由6個連續顯性位組成。
②認可(Passive)錯誤標誌。它由6個連續隱性位組成。
它可由其他CAN總線協議控制器的顯性位改寫。
2)錯誤界定:錯誤界定符由8個隱性位組成。傳送了錯誤標誌以後,每一站就發送一個隱性位,並一直監視總線直到檢測出1個隱性位為止,然後就開始發送其餘7個隱性位。
(3)遠程幀: 遠程幀也有標準格式和擴展格式,而且都由6個不同的位域組成:幀起始、仲裁域、控制域、CRC域、應答域、幀結尾。與數據幀相比,遠程幀的RTR位為隱性,沒有數據域,數據長度編碼域可以是0~8個字節的任何值,這個值是遠程幀請求發送的數據幀的數據域長度。當具有相同仲裁域的數據幀和遠程幀同時發送時,由於數據幀的RTR位為顯性,所以數據幀獲得優先。發送遠程幀的節點可以直接接收數據。
(4)過載幀 過載幀由兩個區域組成:過載標識域及過載界定符域。下述三種狀態將導致過載幀發送:
1)接收方在接收一幀之前需要過多的時間處理當前的數據(接收尚未準備好);
2)在幀空隙域檢測到顯性位信號;
3)如果CAN節點在錯誤界定符或過載界定符的第8位採樣到一個顯性位節點會發送一個過載幀。

CAN總線協議應用領域

CAN總線協議使用範圍

汽車製造中的應用、大型儀器設備中的應用、工業控制中的應用、智能家庭和生活小區管理中的應用以及機器人網絡互聯中的應用。同時,由於CAN總線本身的特點,其應用範圍目前已不再侷限於汽車行業,而向自動控制、航空航天、航海、過程工業、機械工業、紡織機械、農用機械、機器人、數控機牀、醫療器械及傳感器等領域發展。CAN已經形成國際標準,並已被公認為幾種最有前途的現場總線之一。

CAN總線協議發展趨勢

目前大多數CAN控制器只做到鏈路層,然而隨着CAN的發展和應用,應用層的硬件設計也成為硬件廠商的考慮範疇。
參考資料