CAN協議是串行協議,能夠有效地支持具有高安全等級的分布實時系統。CAN多年來作為車身控制的主干網已經形成了從IC設計到軟件開發和測試驗證的完整產業鏈。
1. 簡介
CAN總線由德國BOSCH公司開發,最高速率可達到1Mbps。CAN的容錯能力特別強,CAN控制器內建了強大的檢錯和處理機制。另外不同于傳統的網絡(比如USB或者以太網),CAN節點與節點之間不會傳輸大數據塊,一幀CAN消息最多傳輸8字節用戶數據,采用短數據包也可以使得系統獲得更好的穩定性。CAN總線具有總線仲裁機制,可以組建多主系統。?
2. CAN標準
CAN是一個由國際化標準組織定義的串行通訊總線。最初是用于汽車工業,使用兩根信號總線代替汽車內復雜的走線。CAN總線具有高抗干擾性、自診斷和數據偵錯功能,這些特性使得CAN總線在各種工業場合廣泛使用,包括樓宇自動化、醫療和制造業。
CAN通訊協議ISO-11898:2003標準介紹網絡上的設備間信息是如何傳遞的,以及符合開放系統互聯參考模型(OSI)的哪些分層項。實際通訊是在連接設備的物理介質中進行,物理介質的特性由模型中的物理層定義。ISO11898體系結構定義七層,OSI模型中的最低兩層作為數據鏈路層和物理層,見圖2-1。
圖2-1:ISO 11898標準架構分層
在圖2-1中,應用程序層建立了上層應用特定協議,如CANopenTM協議的通訊鏈路。這個協議由全世界的用戶和廠商組織、CiA維護,詳情可訪問CiA網站:can-cia.de。許多協議是專用的,比如工業自動化、柴油發動機或航空。另外的工業標準例子,是基于CAN的協議的,由KVASER和Rockwell自動化開發的DeviceNetTM。
3. 標準CAN和擴展CAN
CAN通訊協議是一個載波偵聽, 基于報文優先級碰撞檢測和仲裁(CSMA/CD+AMP)的多路訪問協議。CSMA的意思是總線上的每一個節點在企圖發送報文前,必須要監聽總線,當總線處于空閑時,才可發送。CD+AMP的意思是通過預定編程好的報文優先級逐位仲裁來解決碰撞,報文優先級位于每個報文的標識域。更高級別優先級標識的報文總是能獲得總線訪問權,即:標識符中最后保持邏輯高電平的會繼續傳輸,因為它具有更高優先級。
ISO-11898:2003標準,帶有11位標識符,提供的最高信號速率從125Kbps到1Mbps。更遲一些的修訂標準使用了擴展的29位標識符。標準11位標識符位域參見圖3-1,提供2048個不同的報文標識符,擴展29位標識符位域參見圖3-2,提供537百萬個不同報文標識符。
3.1 標準CAN
標準CAN只有11位標識符,每幀的數據長度為51+(0~64)=(51~117)位。注:不計位填充(位填充將在本文第5節描述)。
圖3-1:標準CAN---11位標識符
SOF - 幀起始,顯性(邏輯0)表示報文的開始,并用于同步總線上的節點。
標識符 - 標準CAN具有11位標識符,用來確定報文的優先級。此域的數值越小,優先級越高。
RTR - 遠程發送請求位,當需要從另一個節點請求信息時,此位為顯性(邏輯0)。所有節點都能接收這個請求,但是幀標識符確定被指定的節點。響應數據幀同樣被所有節點接收,可以被有興趣的節點使用。
IDE - 標識符擴展位為顯性時表示這是一個標準CAN格式,為隱形表示這是擴展CAN格式。
r0 - 保留位(可能將來標準修訂會使用)
DLC - 4位數據長度代碼表示傳輸數據的字節數目,一幀CAN最多傳輸8字節用戶數據
數據0~8 – 最多可以傳輸8字節用戶數據
CRC - 16位(包括1位定界符)CRC校驗碼用來校驗用戶數據區之前的(包含數據區)傳輸數據段。
ACK - 2位,包含應答位和應答界定符。發送節點的報文幀中,ACK兩位是隱性位,當接收器正確地接收到有效的報文,接收器會在應答位期間向發送節點發送一個顯性位,表示應答。如果接收器發現這幀數據有錯誤,則不向發送節點發送ACK應答,發送節點會稍后重傳這幀數據。
EOF – 7位幀結束標志位,全部為隱性位。如果這7位出現顯性位,則會引起填充錯誤。
IFS – 7位幀間隔標志位,CAN控制器將接收到的幀正確的放入消息緩沖區是需要一定時間的,幀間隔可以提供這個時間。
3.2 擴展CAN
擴展CAN具有29位標識符,每幀數據長度為71+(0~64)=(71~135)位。注:不計位填充(位填充將在本文第5節描述)。
圖3-2:擴展CAN---29位標識符
擴展CAN消息相對于標準CAN消息增加的內容如下:
SRR – 代替遠程請求位,為隱性。所以當標準幀與擴展幀發送相互沖突并且擴展幀的基本標識符與標準幀的標識符相同時,標準幀優先級高于擴展幀。
IDE – 為隱性位表示標志位擴展幀,18位擴展標識符緊跟著IDE位。
r1 – 保留
4.CAN消息
4.1仲裁
典型CAN的基本原理見圖4-1所示,從圖中可以看出,總線邏輯狀態與驅動器輸入和接收器輸出邏輯是相反的。正常情況下,邏輯高電平為1,邏輯低電平為0,但是CAN總線卻是邏輯高電平為0,稱為顯性,邏輯低電平為1,稱為隱性。所以很多收發器的驅動器輸入端都會內置上拉電阻,在沒有任何輸入時,CAN總線就會表現為隱性(邏輯低電平)。??
圖4-1:反轉的CAN總線邏輯
在總線空閑時,最先開始發送報文的節點獲得發送權。
如果多個節點同時訪問總線,CAN使用非破壞式、逐位仲裁的方式決定哪個節點使用總線:各發送節點從仲裁域(標識符和RTR域)的第1位開始進行仲裁,連續輸出顯性電平(0)最多的節點可以繼續發送。因此標識符數值越低的CAN報文,優先級越高。標識符數值為0的CAN報文,具有最高優先級,因為它輸出的顯性電平最多。
4.2消息類型
CAN有四種不同的報文類型:數據幀、遠程幀、錯誤幀和過載幀。
5.位填充機
幀起始、仲裁域、控制域、數據域以及CRC校驗和域,均通過位填充方法編碼。位填充是指,無論何時,發送器只要檢測到位流中有5個連續相同邏輯的位,便會自動在位流中插入一個補碼位。舉例來說,如果連續5個顯性位,則在5個顯性位之后自動插入1個隱性位。接收器會自動刪除這個插入的填充位。
數據幀或遠程幀的剩余位域(CRC界定符、應答域和幀結尾域)形式固定,不填充。錯誤幀和過載幀也不填充。
CAN網絡同步需要足夠多的上升沿,這是CAN協議規定位填充的目的之一。位填充的其它作用:確保數據幀不會被當作錯誤幀(由6個連續的顯性或隱性位組成)、確保正確識別幀結束標志(7個連續隱性位)。
6. 錯誤檢測和故障界定
CAN總線具有很高的健壯性,這可能要歸功于CAN具有多種錯誤檢查機制。CAN協議制定了5種錯誤檢測方法:三種位于報文層,兩種位于位流層。如果一個數據幀出現錯誤,那么這個幀會被丟棄,并且接收節點還會發送一個錯誤幀。這會強制發送節點重復發送出錯的報文,直到接收節點正確接收。如果同一個報文重復出錯,達到一定次數后,發送節點可以關閉發送功能以降低對總線的影響。
報文層的錯誤檢測包括CRC和ACK。16位的CRC域包含15位校驗和、1位界定符。ACK域包括1位應答位、1位界定符。
CRC校驗錯誤很好理解,它對數據域以及數據域之前的位生產CRC校驗。由于一幀CAN報文數據流很小(最多8個用戶數據),所以15位CRC的偵錯能力非常優秀。
ACK域是怎么起作用的呢?這是由CAN協議規定的,即發送節點發送一幀數據后,接收節點必須向發送節點應答,如果發送節點沒有收到接收節點的應答信號,就會認為自己發送失敗,從而重傳數據。
報文層的第三種錯誤檢查方法是格式檢查。這種檢查會監控報文中那些一定為隱性位的域,如果這些域中出現顯性位,則檢測到格式錯誤。這些域包括SOF、EOF、ACK的界定符和CRC的界定符。
位流層的錯誤檢測之一是發送到總線上的每一個數據位,都會被監視,如果發現發送的位和總線上的位不相同時,產生位錯誤。這種監視機制并不會監視仲裁域的位,這是因為多個節點同時競爭總線時,優先級高的節點可能會覆寫總線上的仲裁域位。
位流層的另外一個錯誤檢測機制是位填充規則:5個連續相同邏輯位之后,如果第6個位的邏輯還和前五個相同,則產生位填充錯誤。
7.網絡拓撲
CAN使用差分信號,需要一對信號線,推薦使用雙絞線,網絡拓撲如圖7-1所示。使用差分信號可以抑制共模干擾、能夠增加系統可靠性,允許使用更高的速率。
高速ISO 11898標準規定了CAN傳輸最高速率為1Mbps,在這個速率下,傳輸距離最長40米(掛接30個節點,CAN信號不隔離)。推薦節點分支長度最大為0.3米、推薦使用帶屏蔽或不帶屏蔽的雙絞線,線纜特性阻抗為120歐姆。
圖7-1:CAN總線網絡拓撲結構圖
8. 終端匹配
終端匹配電阻大小等于傳輸電纜特性阻抗,傳輸電纜特性阻抗由電纜供應商提供,一般近似為Z=√(L/C)。其中L為電纜單位長度感抗,C為電纜單位長度電容。?由于CAN收發器結構,從隱性變成顯性由晶體管驅動,所以都是很陡的,但是從顯性回到隱性,卻需要終端電阻來放電,否則就會由于導線分布電容,緩慢放電,導致位寬錯誤。所以所謂的近距離、低波特率CAN總線不加終端電阻的做法,都是錯誤的。
RS485與CAN總線不同,由于RS485收發器中一般都內置失效保護電路,在近距離、低波特率下允許不加終端匹配電阻。
9. 電纜與接線
CAN總線采用差分信號傳輸,如果使用帶屏蔽雙絞線,屏蔽層應單點接地。
圖9-11列出帶單屏蔽層的CAN電纜剖析與連接線示范。
圖9-1:電纜信號分配、接地和終端匹配
通常電纜截面積越小,其分布電容、分布電感和直流電阻越大。當通訊距離較遠時,電容、電感和直流電阻會引起信號衰減,波形失真和抖動。
一般情況下,電纜供應商會提供信號衰減圖表。圖9-2所示的曲線顯示了24-AWG電纜衰減和頻率的關系。
圖9-2:信號衰減
10. 差分信號電壓幅值
如圖10-1所示,兩條信號線CAN_H和CAN_L靜態時均為2.5V左右,此時狀態表示邏輯1,稱作隱性;CAN_H比CAN_L高表示邏輯0,稱為顯性,此時通常CAN_H電壓3.5V、CAN_L電壓1.5V。
圖10-1:CAN電平幅值
CAN標準規定,CAN總線上的差分電壓>0.9V才能被識別成顯性電平,<0.5V才能被識別成隱性電平,0.5~0.9之間的電平不能確定電平極性。如表10-1所示。
表10-1:差分電壓幅值與電平極性關系
在實際項目布線時,容易漏加或者多加終端匹配電阻。我們可以通過測量CAN差分電壓幅值來評估是否漏加或多加終端匹配電阻。如果不計導線電阻,終端電阻固定為120歐姆,單節點CAN總線差分電壓如表10-2所示。
表10-2:終端匹配電阻數目與差分電壓幅值關系
11. 電纜截面積與通訊距離
電纜截面積對通訊距離影響很大,特別是遠距離通訊。遠距離傳輸線上的分布電容、分布電感和直流參數會引起信號衰減。很多CAN通訊應用都具有距離遠、波特率低的特性。比如本公司的KTC161通訊控制系統使用10kpbs,傳輸距離要不小于3km。這種情況下,傳輸電纜的直流電阻對傳輸距離影響非常大,因為這個直流電阻會和終端匹配電阻分壓。
如圖11-1所示,1號節點與2號節點相隔5km,使用的傳輸電纜直流電阻12.8歐姆/km,終端匹配電阻為124歐姆。1號節點發送的波形差分電壓幅值為2V,經過5km傳輸電纜到2號節點時,差分電壓幅值大約為1V,信號衰減了一半!我們在上文第10節中提到過:CAN總線上的差分電壓>0.9V才能被識別成顯性電平,現在2號節點只有1V差分電壓,其可靠性已經變的較低。
為了保證可靠的數據通訊,一個有用的經驗法則是:最末端節點差分電壓幅值不小于1.2V。
注意圖中故意忽略了分布電容和分布電感的影響,因此傳輸的波形沒有畸變。
圖11-1:傳輸電纜直流電阻分壓示意圖
對于雙絞線,假設其終端匹配電阻與電纜特性阻抗相同,則截面積與最大通訊距離可參考表11-1:
表11-1:截面積與最大通訊距離關系
為了把電纜直流電阻引起的電壓衰減降到最小,較大的終端電阻值(150~300歐姆)有助于增加總線長度。比如使用截面積為1.5 mm2的雙絞線電纜,電纜特性阻抗為120歐姆。傳輸波特率為5kpbs的數據時,使用120歐姆的匹配電阻最遠可以傳輸5km,但使用300歐姆的匹配電阻則可以傳輸7km!
12. 波特率、終端匹配電阻與通訊距離
上文第11節講述了傳輸線截面積與通訊距離的關系,本小節將保持傳輸線截面積不變,查看其它參數對通訊距離的影響。以截面積為1.5 mm2屏蔽雙絞線為例,其波特率、終端匹配電阻與通訊距離的關系如圖12-1所示。其中,當波特率較高,通訊距離有限。比如1Mbps,信號隔離后的CAN通訊距離大約為25~30米(大部分的實際項目中都會對CAN通訊模塊電氣隔離,隔離器件會降低通訊距離)。波特率較低并且將終端匹配電阻增大,可遠距離通訊。比如5kbps、終端匹配電阻為390歐姆時,通訊距離可達10km! ??
圖12-1:波特率、終端匹配電阻和通訊距離關系圖
13. 信號延遲與通訊距離
高波特率情況下,制約CAN通訊距離的,是信號延遲。信號經過隔離光耦、傳輸電纜、ESD器件時,都會引起信號延遲。如果CAN的重同步也不足以彌補這個延遲,就會導致采樣錯誤,最終CRC校驗錯誤。
圖12-1給出了截面積為1.5mm2傳輸電纜,在不同波特率和終端匹配電阻下的最大通訊距離。其中當波特率為1Mbps時,通訊距離大約為30米。30米的通訊電纜,其傳輸損耗可以忽略不計,此時影響通訊距離的主要是信號延遲。
通常,傳輸電纜延時為5ns/m、高速光耦延時可達25ns、磁耦合隔離器件延遲3~5ns。在CAN通訊系統中,一個優良的延遲標準是:
其中:
t l_MAX:最大延遲時間
tBIT:位時間
以1Mbps為例,其位時間為1us,則tl_MAX < 0.245 × tBIT = 0.245 × 1us = 245ns。信號在1.5mm2傳輸電纜上傳輸49米就能達到這個延遲時間,另外再加上信號上升/下降沿時間以及隔離器件、ESD器件、PCB走線延時,實際項目中,1Mbps波特率在1.5mm2傳輸電纜上只能傳輸30米。
這也是為什么RS485波特率可以達到10Mbps甚至50Mbps,而CAN標準最大速率只有1Mbps的原因。
表13-1給出了判定延遲的參考標準,在實際項目中,推薦信號延遲處于良好一欄標準。
表13-1:最大延遲參考標準
14. 節點最小間距
CAN總線是分布式參數電路,其電氣特性和響應主要由沿物理介質分布的電感和電容所決定。這里物理介質包括連接電纜、連接器、終端和沿總線掛接的CAN設備。
空載情況下,傳輸電纜的特性阻抗近似為Z=√(L/C),其中L為電纜單位長度感抗,C為電纜單位長度電容。隨著負載的增加,傳輸線上的電容增加(負載電容、負載與總線連接線電容),傳輸電纜特性阻抗相比空載情況下變小。如果負載比較集中,則負載區傳輸電纜特性阻抗和空閑區電纜特性阻抗相差較大,從而會引起阻抗不匹配。如圖14-1所示。??
圖14-1:負載不均衡的CAN總線原理示意圖
CAN總線阻抗不匹配會產生信號反射,雪上加霜的是CAN的仲裁機制:在仲裁期間,兩個或更多個節點可能同時發送多個顯性位。如圖14-1所示,當開關S1在t=0時刻從顯性狀態切換到隱性狀態,CAN驅動器差分輸出電壓為Vs,總線上的差分信號會由顯性狀態(Vs)變成穩定的隱性狀態(0V)。這個信號波形會沿著總線向下傳播,到達總線的負載區時,阻抗不匹配引起的反射電壓將返回到源端。
負載與負載之間的最小安全距離d是設備集總負載電容CL和電纜的單位長度分布電容C的函數,定義如下:
設備集總負載電容CL包括CAN收發器引腳、連接器、隔離器件、保護器件、印制電路板走線以及其它物理連線的電容總和。
3.3V的CAN收發器一般能達到16pF電容,具體可以參考收發器數據手冊;印制板走線一般0.5pF~0.8pF/cm,這取決于電路板的材質和結構;連接器和保護裝置(比如ESD器件)的電容值可能范圍會很大,具體要參考設備數據手冊;非屏蔽雙絞線介質的分布電容大約在40pF/m~70pF/m。
圖14-2給出了更明了的圖表顯示.
圖14-2:最小CAN設備間距
15. 信號位采樣點位置
信號位采樣點是指CAN節點識別一個電平邏輯的位置。CAN標準把總線上的每一位都細分為不同的階段,如圖15-1所示。在圖中可以看到,每個位被分為同步段、傳播段、相位緩沖段1和相位緩沖段2四個連續部分。其中采樣點位于相位緩沖段1之后,同步段、傳播段、相位緩沖段1和相位緩沖段2的持續時間都是可以編程的,因此采樣點位置也是間接可編程的。
圖15-1:每一個數據位的分段示意圖
一般CAN節點是每個位采樣一次(也可以采樣3次,多用于低速場合),采樣點位置都在一個位的50%以后的區域,這是為了讓信號電平趨于穩定。采樣點越靠后,波形越穩定。但也不是越靠后越好,采樣點位置超過95%時,因為傳輸過程中的位偏差,可能會引起錯誤。CIA推薦采樣點為一個位時間的87.5%處,實際項目中,一般設置為70%~90%,大部分汽車廠商規定采樣點為70~80%。
采樣點略靠后,比如80~90%,有利于遠距離傳輸。提高節點波特率寄存器中的同步跳轉寬度SJW值(加大到3個單位時間),可以加大位寬度和采樣點的容忍度。
16. 波特率偏差
由于受到晶振影響,CAN通訊波特率實際值與理論值會有偏差。如果兩個節點之間波特率偏差較大,容易造成誤碼率增大或通訊失敗等問題。
CAN標準規定,設定的理論波特率與實際波特率偏差不得超過±1%;節點需要容忍的波特率偏差不得小于±3%。
17. 節點容抗
在CAN通訊電路設計過程中,節點容抗是容易被忽略的。節點容抗包括收發器引腳電容、PCB走線電容、ESD器件電容以及其它連線電容。
CAN標準對節點容抗有嚴格定義,容抗影響上升沿下降沿斜率,節點容抗增大,上升沿和下降沿會變緩,導致位時間畸變,誤碼率增加。上升沿和下降沿變緩會使得信號延遲變大,在高波特率下,影響信號傳輸質量和通訊距離。
節點容抗不易測量,需要專門儀器。在電路設計時,要對結合數據手冊中給出的典型值,對CAN接口電路使用的器件總電容值進行估算。對于高波特率情況下,單節點電容推薦<100pF,多節點電容推薦值見表17-1所示。低波特率應用可以放寬要求。
表17-1:單節點電容最大值
18. 節點數量
可以連接到網絡上的節點數量由收發器可以驅動的最小負載阻抗來決定。最大節點數量由下面的公式給出(考慮最壞情況):
其中:
Rdiff_min:收發器差動輸入阻抗最小值
RL_min:收發器可驅動的負載電阻最小值
RT_min:終端匹配電阻最小值
在上式中,收發器差動輸入阻抗最小值(Rdiff_min)和收發器可驅動的負載阻抗最小值(RL_min)由收發器芯片決定,終端匹配電阻最小值(RT_min)由傳輸電纜特性阻抗以及具體應用決定。
以本公司使用的PCA82C251收發器為例,其收發器差動輸入阻抗最小值Rdiff_min = 20K歐姆,收發器可驅動的負載阻抗最小值RL_min = 45歐姆,假設終端匹配電阻最小值RT_min = 120歐姆,則最大節點數量為112個。
19. 共模電壓范圍
共模電壓是指總線上的發送節點地和接收節點地之間的電勢差。過高的共模電壓會對系統造成影響,可能造成間歇重啟、死鎖、誤碼率增高甚至損害設備。在遠距離通訊系統中,共模干擾的問題會更加突出,因為隨著通訊線距離的增加,地環路會拾取更多的噪聲,使得共模電壓增大。
目前的CAN收發器都可以容忍一定的共模電壓,ISO 11898標準規定,CAN收發器必須能容忍-2V~7V的共模電壓。對于長達數千米的CAN通訊系統來說,標準規定的共模電壓容忍能力遠遠達不到實際要求,因此電流隔離對于遠距離數據傳輸系統來說仍是必須的。
20. 總線短路保護和熱關斷保護
總線短路保護是指總線與電源或地短路后,CAN收發器不會損壞,短路故障解除后,CAN收發器能繼續工作。這個特性可以在總線極性反接、電纜絕緣層失效、意外短路到高壓源時對收發器提供保護。
熱關斷電路用于幫助CAN收發器防御因短路產生破壞性電流和高溫。一旦激活熱關斷電路,設備會進入關斷模式。當設備冷卻到正常操作溫度時,設備自動恢復運行。
本公司使用的PCA82C251收發器具有短路保護和熱關斷保護。短路保護允許總線與24V電源短接。
21. 電流隔離
遠距離數據傳輸可能會有較大的地電勢差、地環流等問題,會在CAN總線上形成高共模電壓。如果共模電壓超出CAN收發器容忍的最大限度,數據鏈路就會不正常。
解決這些問題的一個方法是使用電流隔離:隔離變壓器為系統提供電源,光耦或數字隔離器件提供數據隔離。電流隔離可以去除地環流,抑制噪聲電壓。采用電流隔離的電路如圖21-1所示,本公司CAN接口電路也采用了電流隔離處理。??
圖21-1:遠距離通訊電流隔離電路示意圖
22. CAN接口電路與RS485接口電路
CAN總線和RS485總線都是采用差分信號傳輸數據,它們在總線拓撲、終端匹配、信號衰減、隔離與接地、波特率與通訊距離關系等方面都是相似的。但是CAN有自己的一些特性,在接口設計中,不能照抄RS485接口電路。
CAN總線對信號延遲敏感,因此信號隔離必須使用高速光耦或者磁耦合器件,以減少信號延遲。公司大量使用的TLP521光耦因為延遲時間過大(微秒級)不可以用于CAN接口電路。
CAN總線對電容敏感,在設計CAN接口電路時,需要使用CAN專用共模電感、專業ESD器件;需要根據應用的最大波特率和通訊距離,來決定是否在CAN總線上增加濾波電容以及濾波電容的大小。
審核編輯:湯梓紅
評論
查看更多