概述
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)。
相關組織
依據國際標準化組織/開放系統互連(International Standardi-zation Organization/Open SystemInterconnection,ISO/OSI)參考模型,CAN的ISO/OSI參考模型的層結構。
概念和特徵
CAN 匯流排的工作原理
CAN匯流排使用串列數據傳輸方式,可以1Mb/s的速率在40m的雙絞線上運行,也可以使用光纜連線,而且在這種匯流排上匯流排協定支持多主控制器。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匯流排的物理層是將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)子層完成數據打包/解包、幀編碼、媒體訪問管理、錯誤檢測、錯誤信令、應答、串並轉換等功能。這些功能都是圍繞信息幀傳送過程展開的。
報文傳輸
報文類型
在CAN2.0B的版本協定中有兩種不同的幀格式,不同之處為標識符域的長度不同,含有11位標識符的幀稱之為標準幀,而含有29位標識符的幀稱為擴展幀。如CAN1.2版本協定所描述,兩個版本的標準數據幀格式和遠程幀格式分別是等效的,而擴展格式是CAN2.0B協定新增加的特性。為使控制器設計相對簡單,並不要求執行完全的擴展格式,對於新型控制器而言,必須不加任何限制的支持標準格式。但無論是哪種幀格式,在報文傳輸時都有以下四種不同類型的幀:
幀類型
在報文傳輸時,不同的幀具有不同的傳輸結構,下面將分別介紹四種傳輸幀的結構,只有嚴格按照該結構進行幀的傳輸,才能被節點正確接收和傳送。
(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位組成,標準幀格式與擴展幀格式的仲裁域格式不同。標準格式里,仲裁域由1l位標識符和RTR位組成。標識符位有ID28~IDl8。擴展幀格式里,仲裁域包括29位標識符、SRR位、IDE(Identifier Extension,標誌符擴展)位、RTR位。其標識符有ID28~IDO。為了區別標準幀格式和擴展幀格式,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的發展和套用,套用層的硬體設計也成為硬體廠商的考慮範疇。