控制器區域網絡(英語:Controller Area Network,簡稱CAN或者CAN bus)是一種功能豐富的車用匯流排英語Vehicle bus標準。被設計用於在不需要主機(Host)的情況下,允許網絡上的單晶片和儀器相互通訊。 它基於訊息傳遞協定,設計之初在車輛上採用復用通訊線纜,以降低銅線使用量,後來也被其他行業所使用。

CAN建立在基於資訊導向傳輸協定的廣播機制(Broadcast Communication Mechanism)上。其根據資訊的內容,利用資訊標誌符(Message Identifier,每個標誌符在整個網絡中獨一無二)來定義內容和訊息的優先順序進行傳遞,而並非指派特定站點地址(Station Address)的方式。

因此,CAN擁有了良好的彈性調整能力,可以在現有網絡中增加節點而不用在軟、硬件上做出調整。除此之外,訊息的傳遞不基於特殊種類的節點,增加了升級網絡的便利性。

歷史

羅伯特·博世公司於1983年開發了控制器區域網絡(CAN bus)。[1]該協定於1986年美國密歇根州底特律市舉行的國際汽車工程師學會(SAE)會議上正式發表。第一個CAN控制晶片,由英特爾飛利浦生產,並且於1987年發佈。 世界上第一台裝載了基於CAN的多重線系統的汽車是1991年推出的梅賽德斯-平治 W140[2][3]

博世公司發表了關於CAN規範的幾個版本,最新的CAN 2.0於1991年發佈。該規範被分為兩部分;A部分適用於使用11位識別碼的標準格式,B部分適用於使用29位標誌符的拓展格式。使用11位識別碼的CAN裝置一般被稱作CAN 2.0A,而使用29位辨識碼的CAN裝置通常稱為CAN 2.0B。博世公司免費提供標準、規範和白皮書[4]

1993年,國際標準化組織(ISO)公佈了CAN標準ISO11898。後來CAN標準被重新編譯分成兩個部分:ISO11898-1涵蓋了數據鏈路層;ISO11898-2涵蓋了高速CAN匯流排的實體層; ISO11898-3於晚些時候公佈並且涵蓋了低速CAN匯流排的實體層和CAN匯流排容錯規範。 實體層標準ISO11898-2和ISO11898-3並不包含在博世CAN2.0規範中,它們可以單獨從ISO購買。

之後,博世公司仍然積極地拓展CAN標準。2012年,博世公佈CAN FD 1.0或稱作可變數據速率的CAN。這個規範使用不同的架構,允許在仲裁之後,切換至更快的位元速率,傳輸不同的數據的長度。CAN FD相容現有的CAN 2.0網絡,所以新的CAN FD裝置能夠與現有CAN裝置共存於同一控制網絡。

CAN匯流排是五個使用在車載診斷 (OBD)-II標準的協定的其中一個。1996年以後,所有在美國銷售的汽車及輕型卡車被強制要求符合OBD-II標準。在歐盟,自2001年後銷售的汽油載具及2004年後銷售的柴油載具都強制規定需要符合EOBD標準。[5]

應用

CAN匯流排通常應用於如下領域

  • 乘用車、卡車、公共汽車(汽油車及電動車)
  • 航空、航海電子儀器
  • 工業自動化及機械控制
  • 電梯、扶梯
  • 建築自動化
  • 醫療儀器及裝置

汽車

現代的汽車可能為其子系統配備多達70個電子控制器(ECU)。[6]最常見的控制器為發動機控制器。除此以外,變速器安全氣囊防鎖死煞車系統/ABS、定速巡航動力方向盤、音響系統、動力車窗英語Power window、車門、後視鏡調整、電池和混合動力電動汽車的充電系統等等均使用電子控制器。這其中,有的是獨立的子系統,有些需要跟其他子系統進行通訊,控制驅動器或接收感測器的反饋資訊。為此設計了控制器區域網絡絡,將汽車的不同系統相互連接在一起。傳統的「電纜直連」成本高,布線複雜,而控制器區域網絡絡僅需軟件就可實現,不僅安全、經濟還十分便利。

  • 自動啟動/停止:車輛各處的各種感測器(速度感測器、轉向角、空調關閉,發動機溫度)所發出的各種訊號可由CAN匯流排收集並用於決定是否可以在停車時關閉發動機,進而改善燃油效率和尾氣排放。
  • 電子駐車制動系統:"斜坡駐車"的功能需要車輛的傾斜感測器(同時用於防盜報警器)和道路的速度感測器(同時用於防鎖死制動、發動機控制和牽引力控制)通過CAN匯流排傳輸採樣訊號並決定車輛是否停在斜坡上。同樣,安全帶的感測器(安全氣囊的一部分)通過CAN匯流排傳輸訊號,以確定安全帶是否扣上,然後泊車的剎車會自動在移動時關閉。
  • 駐車輔助系統英語Automatic parking:當司機切換至倒檔,變速器控制單元可以通過CAN匯流排傳送訊號,啟用停車感測器系統和車門控制模組,使副駕駛側的後視鏡向下傾斜顯示路涯。 CAN匯流排也可以從雨水感測器取得訊號,在倒車時自動觸發後擋風玻璃雨刮。
  • 車道偏離警示/防撞系統英語Collision avoidance:車道偏離警示/駐車感測器的訊號也可通過CAN匯流排用於駕駛輔助系統判斷附近物體,比如車道偏離警示。最近,這些訊號可以通過CAN匯流排觸發防撞系統中的電子剎車系統。
  • 汽車剎車清掃:雨水感測器(主要用於自動擋風玻璃雨刷)通過CAN匯流排將訊號送達防抱死制動系統模組中,在行駛中輕微觸發一次人體不會察覺的剎車來清除剎車片上的液體。奧迪寶馬的某些高效能型號搭配有這一功能。

近些年又開發出了LIN(區域互聯網絡)標準,用在非關鍵系統中的應用,例如空調和資訊娛樂系統等數據傳輸速度和可靠性不是很重要的系統中。

其他

  • CAN匯流排協定自2009年後被用於禧瑪諾DI2的公路自行車電子變速系統上。同樣的,Ansmann和BionX英語BionX在它們的直驅電機中使用CAN協定。
  • 由於CAN控制器和處理器價格低廉,CAN匯流排同樣可應用於普通自動化環境的現場匯流排中。
  • 包括NISMO英語Nismo在內的開發商致力於使用CAN匯流排數據在GT賽車6中利用遊戲內的GPS數據,重建真實的賽車視覺動態模糊,玩家將獲得真實的賽車動態模糊效果。[7]
  • 約翰·霍普金斯大學應用物理學實驗室的模組化假肢(MPL)使用局域CAN匯流排使假肢上的伺服電機和控制器的溝通更容易。

架構

CAN是一個用於連接電子控制單元(ECU)的多主機英語Multi-master bus串行匯流排標準。電子控制單元有時也被稱作節點。CAN網絡上需要至少兩個節點才可進行通訊。節點的複雜程度可以只是簡單的輸入輸出裝置,也可以是包含有CAN互動器並搭載了軟件的嵌入式元件。節點還可能是一個閘道器,允許普通電腦通過USB或乙太網路埠與CAN網絡上的裝置通訊。

所有節點通過兩根平行的匯流排連接在一起。兩條電線組成一條雙絞線,並且接有120Ω的特性阻抗。

ISO 11898-2,也稱為高速度CAN。它在匯流排的兩端均接有120Ω電阻。

Thumb
高速CAN網絡。ISO 11898-2

高速CAN匯流排在傳輸顯性(0)訊號時,會將CAN_H端抬向5V高電平,將CAN_L拉向0V低電平。當傳輸隱性(1)訊號時,並不會驅動CAN_H或者CAN_L端。 顯性訊號CAN_H和CAN_L兩端差分標稱電壓為2V。 終端電阻在沒有驅動時,將差分標稱電壓降回0V。顯性訊號(0)的共模電壓需要在1.5V到3.5V之間。隱性訊號(1)的共模電壓需要在+/-12V。

Thumb
高速CAN信令。ISO 11898-2

ISO 11898-3,也被稱作低速或者容錯CAN。它使用線性主線,星形主線或者連接到一個線性主線上的多星結構主線著稱。每個節點都有終端電阻作為全域終端電阻的一部分。全域終端電阻不應低於100 Ω。

Thumb
低速容錯CAN網絡。ISO 11898-3

低速/容錯CAN訊號在傳輸顯性訊號(0)時,驅動CANH端抬向5V,將CANL端降向0V。在傳輸隱性訊號(1)時並不驅動CAN 匯流排的任何一端。在電源電壓Vcc為5V時,顯性訊號差分電壓需要大於2.3V,隱性訊號的差分電壓需要小於0.6V。CAN匯流排兩端未被驅動時,終端電阻使CANL端回歸到RTH電壓(當電源電壓Vcc為5V時,RTH電壓至少為Vcc-0.3V=4.7V),同時使CANH端回歸至RTL電壓(RTL電壓最大為0.3V)。兩根線需要能夠承受-27V至40V的電壓而不被損壞。

Thumb
低速CAN信令。ISO 11898-3

在高速和低速CAN中,從隱性訊號向顯性訊號過渡的速度更快,因為此時CAN線纜被主動積極地驅動。顯性向隱性的過渡速度主要取決於CAN網絡的長度和導線的電容。

高速CAN通常被用於汽車和工業應用,在這些應用環境中,匯流排通常從一端橫跨至另一端。容錯CAN匯流排則經常被用在需要連接在一起的一組節點。

ISO規格只要求匯流排共模電壓必須保持在最小和最大範圍內,但不定義如何將匯流排電壓保持在這個範圍。

CAN匯流排必須使用終端電阻。終端電阻可以用來抑制訊號反射英語Signal reflection,同時可以使匯流排電壓回到隱性狀態或者閒置狀態。

高速CAN在匯流排兩端使用120Ω電阻。低速CAN在每個節點均使用電阻。也有其他類型的終端,例如ISO 11783英語ISO 11783中定義了終端偏壓電路。 [8]

終端偏壓電路使用由4條導線組成的線纜,除了CAN訊號線以外還有電源線和地線。這在每段匯流排兩端提供自動偏壓終端功能。ISO11783網絡是專為熱拔插匯流排段和電子控制單元設計的。

Thumb
CAN匯流排節點

每個節點需要:

  • 中央處理器、微處理器或主處理器
    • 處理主機決定收到的資訊的意思以及想要傳輸的資訊。
    • 感測器、驅動器和控制裝置可以與主處理器連接。
  • CAN控制器;通常是整合單晶片的一部分
    • 接收:CAN控制器將從匯流排上接收的串位位元組儲存直到整個訊息可用,之後主處理器可以取得這個訊息(通常由於CAN控制器觸發一個中斷)。
    • 傳送:主處理器傳送傳遞資訊到CAN控制器,之後當匯流排空閒時將串位資訊傳遞至匯流排。
  • 收發器;由ISO11898-2/3媒介訪問單元(MAU)標準定義
    • 接收:把數據流從CAN匯流排層轉換成CAN控制器可以使用的標準。 CAN控制器通常配有保護電路。
    • 傳輸:把來自CAN控制器的數據流轉換至CAN匯流排層。

每個節點能夠傳送和接收資訊,但不是同時進行的。 一個訊息或主要包括識別碼(ID),它表示資訊的優先級,最多八個數據位元組。CRC、ACK和其他幀部分也是訊息的一部分。改進了的CAN FD將每個幀拓展至最多64位元組。 訊息採用不歸零(NRZ)格式串聯傳送到主線並可被所有節點接收。

被CAN網絡連接的裝置通常是感測器驅動器和其他控制裝置。 這些裝置通過一個中央處理器、一個CAN控制器,和一個CAN接收器連接至匯流排。

數據傳輸

CAN數據傳輸如果出現爭執,將會使用無失真位仲裁解決辦法。該仲裁法要求CAN網絡上的所有節點同步,對每一位的採樣都在同一時間。這就是為什麼有人稱之為CAN同步。然而,同步這個術語在此並不精確,因為數據以非同步格式傳輸而不包含時鐘訊號。

CAN規範中使用術語"顯性"位和"隱性"位來表示邏輯高低。顯性是邏輯0(由發信器積極驅動通過電壓)而隱性是邏輯1(被動地通過電阻返回到一個電壓)。 閒置狀態代表隱性的水平,也就是邏輯1。如果一個節點傳送了顯性位而另一個節點傳送一個隱性位,那麼匯流排上就有衝突,最終結果是顯性位「獲勝」。這意味着,更高優先級的資訊沒有延遲。較低優先級的節點資訊自動在顯性位傳輸結束,6個時鐘位之後嘗試重新傳輸。這使得CAN適合成為一個即時優先通訊系統。

邏輯0或1的確切電壓取決於所使用的實體層,但CAN的基本原則要求每個節點監聽CAN網絡上的數據,包括發信節點本身。如果所有節點都在同時傳送邏輯1,所有節點都會看到這個邏輯1訊號,包括發信節點個接受節點。如果所有發信節點同時傳送邏輯0訊號,那麼所有節點都會看到這個邏輯0訊號。當一個或多個發信節點傳送邏輯0訊號,但是有一個或多個發信節點傳送了邏輯1訊號,所有節點包括傳送邏輯1訊號的節點也會看到邏輯0訊號。當一個節點傳送邏輯1訊號但是看到一個邏輯0訊號,它會意識到線上有爭執並退出發射。通過這個過程,任何傳送邏輯1的節點在其他節點傳送邏輯0時退出或者失去仲裁。失去仲裁的節點會在稍後把資訊重新加入佇列,CAN幀的位元流保持沒有故障繼續進行直到只剩下一個發信節點。這意味着傳送第一個邏輯1的節點喪失仲裁。由於所有節點在開始CAN幀時傳輸11位(或CAN 2.0B中是29位)識別碼,擁有最低識別碼的發信節點在起始處擁有更多0。那個節點贏得仲裁併且擁有最高優先級。

例如,一個11位識別碼的CAN網絡,有兩個節點,他們的ID分別為15(二進制表示為00000001111)和16(二進制表示為00000010000)。如果這兩個節點同時傳輸,每個都會優先傳輸它們識別碼中的前6個0而不觸發仲裁。

More information 起始位, ID位 ...
起始位 ID位 幀剩下的部分
10 9 8 7 6 5 4 3 2 1 0
節點15 0 0 0 0 0 0 0 0 1 1 1 1
節點16 0 0 0 0 0 0 0 1 停止傳輸
CAN數據 0 0 0 0 0 0 0 0 1 1 1 1
Close

當ID中的第7位傳輸時,節點16為其ID傳送1(隱性),而節點15為其ID傳送0(顯性)。當這種情況發生時,該節點16知道自己傳送了1,但在匯流排上看到了0,意識到有衝突發生並且自己失去仲裁。節點16停止傳送而節點15繼續傳輸自己的ID,沒有遺失任何數據。擁有最低ID的節點總是贏得仲裁,因此具有最高優先級。

長度小於40m的網絡最高支援的位元速率高達1百萬位元/秒。降低位元速率可以允許使用更長的網絡距離(例如,125千位元/秒支援最大500米)。改進的CAN FD標準允許仲裁後升高位元速率,可以將數據區段速度增加至仲裁位速率的八倍。

ID分配

資訊ID在單條CAN匯流排上必須是唯一的,否則兩個節點將在仲裁位(ID)傳送結束後繼續傳輸,造成錯誤。

1990年代早期,為資訊選擇標誌符(ID)的準則僅僅基於數據的種類和發信節點。但是,當標誌符同樣代表着資訊的優先級時,這會帶來不好的即時響應。在這種情況下,通常要求CAN匯流排只能使用大概30%才能保證資訊可以在截止時間之前到達。然而,如果資訊的標誌符根據資訊的優先級決定,更低標誌符的資訊獲得更高優先級,那麼在不損失數據的前提下,匯流排的使用率可以達到70%到80%。

位時序

CAN網絡上的所有節點必須執行在相同的標稱位元速率下,但噪音、相移、振盪頻率容差和振盪頻率漂移導致實際的位元速率可能與標稱位元速率不同。[9]由於沒有使用一個單獨的時鐘訊號,需要一個同步節點方法。同步在仲裁機制中十分重要,因為仲裁中的節點需要能夠同時看到它們傳輸數據的數據和其他節點的傳輸數據。 同步在確保節點間震盪時間不同時不發生錯誤上十分重要。

匯流排閒置一段時間後,在第一個隱性訊號向顯性訊號轉換時(起始位) 進行硬同步。再次同步發生在傳輸幀期間的每次從隱性向顯性轉換時。CAN控制器期望在標稱位時間內發生多次轉換。如果並沒有在期望的確定時間發生,控制器將根據這調整標稱位時間。

調整是通過將每一位劃分成多個稱為量子的時間段,並分配一定數量的量子到位中的四個階段完成的。這四個階段分別為:同步、傳播、相位元欄1和相位元欄2。

Thumb
每位10個量子的CAN位時序的例子。

位被分成的量子數量會因控制器的不同而不同,每一個階段分配的量子數會因位元速率和網絡狀況的不同而改變。

在預期時刻之前或之後發生的過渡會促使控制器計算時間差,並根據計算所得的時間差延長相位元欄1或者縮短相位元欄2。這有效地改變接收器到發信器的時序,將它們同步在一起。這個重新同步過程不斷地在每次隱性向顯性過渡時進行已確保發信器和接收器保持同步。不斷地重新同步降低了噪聲產生的錯誤,讓同步至已經失去仲裁的節點的接收節點重新同步到贏得仲裁的節點。

層級

CAN協定與很多網絡協定相似,可以被分解為下列抽象層

應用層
對象層
  • 資訊過濾
  • 訊息和狀態處理
傳輸層

大多數CAN標準應用在傳輸層。傳輸層從實體層接收訊息並將這些資訊傳遞給對象層。傳輸層負責特定時序、同步、資訊位構架、仲裁、確認、錯誤檢測及發信和故障約束。它的職責為:

  • 故障約束
  • 錯誤監測
  • 訊息驗證
  • 資訊確認
  • 仲裁
  • 資訊幀
  • 傳輸速率和時間
  • 路由資訊
實體層
Thumb
CAN匯流排包含終端電阻的電氣連接樣例。

CAN匯流排(ISO11898-1:2003)最初指定的鏈路層協定僅包括對實體層的抽象需求。 實體層關於電氣方面的(電壓,電流,數量導體)規定來自於ISO11898-2:2003,該協定目前被廣泛接受。但是,實體層關於機械方面的(接頭種類和數量、顏色、標籤、標準輸出)尚未被正式指定。因此,汽車的電子控制單元(ECU)通常會有客製化的介面和各種線纜組成CAN匯流排。儘管如此,領域中已經出現若干機械方面的標準,最常見的是使用9個引腳的D-sub型插頭,擁有以下引腳分佈:

  • 引腳2:CAN-Low (CAN−)
  • 引腳3:GND (地線)
  • 引腳7:CAN-High (CAN+)
  • 引腳9:CAN V+ (供電)
Thumb
DB-9連接器(插頭)

這個CAN的機械標準可以用於D-sub介面的插頭和插座。匯流排電流從插座流向插頭。這遵循了電源在插座處截止的電氣工程慣例。採用本標準避免了為將節點連接到同一個D介面而製作客製化分離器。非標準(自訂)線束(分離器),線上纜上分離CAN分支,減少匯流排的可靠性、消除電纜可交換性、減少線束的相容性並且增加成本。


完整的實體層規範的缺失(電氣和機械方面)減少了CAN匯流排的限制,降低了實現功能時實體層面的複雜度。但它讓CAN匯流排在互動時因為機械原因不相容。為了提高互用性,許多汽車製造商制定了描述可相容使用的CAN接收器的一套參數規範。最大寄生電容包括電容本身以及靜電保護(ESD)(靜電保護[10]在ISO 7637-3中定義)。除了寄生電容、12V和24V系統因為最大電壓不同有不同的標準。事實上,在助推啟動(jump start)時,輕型車輛的先電壓可以達到24V,而卡車系統可以達到36V。新的解決方案,允許同樣的元件使用於CAN和CAN FD(詳見[11])即將投入市場。

ISO11898-2:2003中的噪聲免疫是通過在匯流排兩端使用低電阻值(120歐姆)維持匯流排兩條線間的差分阻抗實現的。然而,當處於休眠狀態時,例如CAN匯流排的低阻值匯流排會比其他基於電壓的訊號匯流排消耗更多電流。在CAN匯流排系統中,當一條訊號線中的電流於另一條反方向電流值一樣時,該平衡傳輸線為接收器提供穩定的0V參考電壓。最好的做法是在已經有很嘈雜的射頻干擾的汽車內,對CAN匯流排使用帶封鎖層的雙絞線,以儘量減少射頻訊號的發射,降低干擾的敏感性。

ISO11898-2在發信器和接收器之間提供一定的共模電壓免疫。通過一個0V的通路保持節點間的電壓關聯。此外,在上述的現有機械結構里,包含一個將電力分配到各個節點的收發器的供電軌通道。該設計為所有收發器提供了一個共用的電源。匯流排上應用的實際電壓由使用的收發器決定,並沒有統一規範。常見設計是,通過CAN匯流排為每個與自身節點電氣隔離的收發器提供電壓驅動5V變壓器。這通常提供足夠多的冗餘度來保證節點間的互用性。 這種網絡的典型供電電壓在7V到30V之間。但是,通用標準的缺失導致系統的設計者要為供電軌道的相容性負責。

ISO 11898-2 中描述的電氣實施方法構建了一個在匯流排兩端使用終端電阻組成的多站單端平衡線路佈局。在這個結構中,顯性狀態由一個或多個傳輸器將CAN_L切換至0V,同時將CAN_H切換至5V匯流排電壓來形成通過終端電阻的電流通路。終端電阻在這種訊號系統中起到限制高頻反射波形的核心作用。

在隱性狀態時,訊號線和電阻相對於高低軌道保持在高阻抗狀態。CAN_H和CAN_L軌道的電壓趨向於中立。隱性狀態僅在匯流排上沒有任何傳輸器宣佈顯性狀態時出現。

在顯性狀態時,訊號線和電阻相對於高低軌道變為低阻抗狀態,因此電流能夠流過電阻。CAN_H電壓趨向於5V,同時CAN_L趨向於0V。

不管匯流排上訊號是什麼狀態,訊號線線上纜兩端因為電阻的存在,相互之間總是保持低阻抗。

這個訊號策略與例如RS-422/3和RS-485等等的其他平衡線路傳輸技術由顯著的不同。RS-422/3和RS-485擁有差分線纜驅動但是差分模式下電壓為一正一負。在這樣的系統多路通訊通常依靠在時域中支援三種狀態(高電平有效、低電平有效和不活動三種狀態)的媒介。在CAN匯流排上進行多路通訊只需要系統的電邏輯支援兩個狀態,在概念上與「由線纜構成的與門(wired AND)」網絡相似。

CAN網絡可以組態為使用兩種不同的訊息(或「幀」)格式:標準或基本幀格式(在CAN 2.0 A和CAN 2.0 B中描述)和擴充幀格式(僅由CAN 2.0 B描述)。兩種格式之間的唯一區別是,「CAN基本幀」支援識別碼長度為11位,「CAN擴充幀」支援識別碼長度為29位,由11位識別碼(「基本識別碼」)和一個18位元擴充(「識別碼擴充」)組成。CAN基本幀格式和CAN擴充幀格式之間的是通過使用IDE位進行區分的,該位在傳輸顯性時為11位幀,而在傳輸隱性時使用29位幀。支援擴充幀格式訊息的CAN控制器也能夠傳送和接收CAN基本幀格式資訊。所有的幀都以開始位(SOF)作為資訊傳輸的起始。

CAN有4種幀類型:

  • 數據幀:包含用於傳輸的節點數據的幀
  • 遠端幀:請求傳輸特定識別碼的幀
  • 錯誤幀:由任何檢測到錯誤的節點傳送的幀
  • 過載幀:在數據幀或遠端幀之間插入延遲的幀

數據幀

數據幀是唯一用於實際數據傳輸的幀。它有兩種資訊結構:

  • 基本幀格式:有11個識別碼位
  • 擴充幀格式:有29個識別碼位

CAN標準要求必須接受基本幀格式並可能接受擴充幀格式,但必須能承受擴充幀格式。

偵錯機制

確認槽(ACK)

幀間內容

位填充

CAN低層標準

基於CAN的高層協定

CANopen電梯

安全性

開發工具

許可

參見

參考文獻

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.