1. 簡介 CAN總線由德國BOSCH公司開發,最高速率可達到1Mbps。CAN的容錯能力特別強,CAN控制器內建了強大的檢錯和處理機制。另外不同于傳統的網絡(比如USB或者以太網),CAN節點與節點之間不會傳輸大數據塊,一幀CAN消息最多傳輸8字節用戶數據,采用短數據包也可以使得系統獲得更好的穩定性。CAN總線具有總線仲裁機制,可以組建多主系統。? 2. CAN標準 CAN是一個由國際化標準組織定義的串行通訊總線。最初是用于汽車工業,使用兩根信號總線代替汽車內復雜的走線。CAN總線具有高抗干擾性、自診斷和數據偵錯功能,這些特性使得CAN總線在各種工業場合廣泛使用,包括樓宇自動化、醫療和制造業。
圖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的意思是通過預定編程好的報文優先級逐位仲裁來解決碰撞,報文優先級位于每個報文的標識域。更高級別優先級標識的報文總是能獲得總線訪問權,即:標識符中最后保持邏輯高電平的會繼續傳輸,因為它具有更高優先級。
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總線邏輯 在總線空閑時,最先開始發送報文的節點獲得發送權。
4.2消息類型 CAN有四種不同的報文類型:數據幀、遠程幀、錯誤幀和過載幀。 5.位填充機制 幀起始、仲裁域、控制域、數據域以及CRC校驗和域,均通過位填充方法編碼。位填充是指,無論何時,發送器只要檢測到位流中有5個連續相同邏輯的位,便會自動在位流中插入一個補碼位。舉例來說,如果連續5個顯性位,則在5個顯性位之后自動插入1個隱性位。接收器會自動刪除這個插入的填充位。
6. 錯誤檢測和故障界定 CAN總線具有很高的健壯性,這可能要歸功于CAN具有多種錯誤檢查機制。CAN協議制定了5種錯誤檢測方法:三種位于報文層,兩種位于位流層。如果一個數據幀出現錯誤,那么這個幀會被丟棄,并且接收節點還會發送一個錯誤幀。這會強制發送節點重復發送出錯的報文,直到接收節點正確接收。如果同一個報文重復出錯,達到一定次數后,發送節點可以關閉發送功能以降低對總線的影響。
7.網絡拓撲 CAN使用差分信號,需要一對信號線,推薦使用雙絞線,網絡拓撲如圖7-1所示。使用差分信號可以抑制共模干擾、能夠增加系統可靠性,允許使用更高的速率。
?圖7-1:CAN總線網絡拓撲結構圖 8. 終端匹配 終端匹配電阻大小等于傳輸電纜特性阻抗,傳輸電纜特性阻抗由電纜供應商提供,一般近似為Z=√(L/C)。其中L為電纜單位長度感抗,C為電纜單位長度電容。
9. 電纜與接線 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才能被識別成顯性電平,<> 表10-1:差分電壓幅值與電平極性關系 在實際項目布線時,容易漏加或者多加終端匹配電阻。我們可以通過測量CAN差分電壓幅值來評估是否漏加或多加終端匹配電阻。如果不計導線電阻,終端電阻固定為120歐姆,單節點CAN總線差分電壓如表10-2所示。 表10-2:終端匹配電阻數目與差分電壓幅值關系 11. 電纜截面積與通訊距離 電纜截面積對通訊距離影響很大,特別是遠距離通訊。遠距離傳輸線上的分布電容、分布電感和直流參數會引起信號衰減。很多CAN通訊應用都具有距離遠、波特率低的特性。比如本公司的KTC161通訊控制系統使用10kpbs,傳輸距離要不小于3km。這種情況下,傳輸電纜的直流電阻對傳輸距離影響非常大,因為這個直流電阻會和終端匹配電阻分壓。
?圖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校驗錯誤。
其中:
表13-1:最大延遲參考標準 14. 節點最小間距 CAN總線是分布式參數電路,其電氣特性和響應主要由沿物理介質分布的電感和電容所決定。這里物理介質包括連接電纜、連接器、終端和沿總線掛接的CAN設備。
?圖14-1:負載不均衡的CAN總線原理示意圖 CAN總線阻抗不匹配會產生信號反射,雪上加霜的是CAN的仲裁機制:在仲裁期間,兩個或更多個節點可能同時發送多個顯性位。如圖14-1所示,當開關S1在t=0時刻從顯性狀態切換到隱性狀態,CAN驅動器差分輸出電壓為Vs,總線上的差分信號會由顯性狀態(Vs)變成穩定的隱性狀態(0V)。這個信號波形會沿著總線向下傳播,到達總線的負載區時,阻抗不匹配引起的反射電壓將返回到源端。 負載與負載之間的最小安全距離d是設備集總負載電容CL和電纜的單位長度分布電容C的函數,定義如下: 設備集總負載電容CL包括CAN收發器引腳、連接器、隔離器件、保護器件、印制電路板走線以及其它物理連線的電容總和。
?圖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%。
16. 波特率偏差 由于受到晶振影響,CAN通訊波特率實際值與理論值會有偏差。如果兩個節點之間波特率偏差較大,容易造成誤碼率增大或通訊失敗等問題。 17. 節點容抗 在CAN通訊電路設計過程中,節點容抗是容易被忽略的。節點容抗包括收發器引腳電容、PCB走線電容、ESD器件電容以及其它連線電容。
表17-1:單節點電容最大值 18. 節點數量 可以連接到網絡上的節點數量由收發器可以驅動的最小負載阻抗來決定。最大節點數量由下面的公式給出(考慮最壞情況): 其中:
19. 共模電壓范圍 共模電壓是指總線上的發送節點地和接收節點地之間的電勢差。過高的共模電壓會對系統造成影響,可能造成間歇重啟、死鎖、誤碼率增高甚至損害設備。在遠距離通訊系統中,共模干擾的問題會更加突出,因為隨著通訊線距離的增加,地環路會拾取更多的噪聲,使得共模電壓增大。
20. 總線短路保護和熱關斷保護 總線短路保護是指總線與電源或地短路后,CAN收發器不會損壞,短路故障解除后,CAN收發器能繼續工作。這個特性可以在總線極性反接、電纜絕緣層失效、意外短路到高壓源時對收發器提供保護。
21. 電流隔離 遠距離數據傳輸可能會有較大的地電勢差、地環流等問題,會在CAN總線上形成高共模電壓。如果共模電壓超出CAN收發器容忍的最大限度,數據鏈路就會不正常。
?圖21-1:遠距離通訊電流隔離電路示意圖 22. CAN接口電路與RS485接口電路 CAN總線和RS485總線都是采用差分信號傳輸數據,它們在總線拓撲、終端匹配、信號衰減、隔離與接地、波特率與通訊距離關系等方面都是相似的。但是CAN有自己的一些特性,在接口設計中,不能照抄RS485接口電路。
|
|