CAN(“Controller Area Network”,控制器局域網)
作用:将整車中各種不同的控制器連接起來,實現信息的可靠共享,并減少整車線束數量。可以設想一種極端情況,如下圖所示:
如:果整車上所有的用電設備都是一個獨立的Can總線節點,并且每一個節點都向外發送自己當前的狀态,并接受來自外部的信息, 那麼整車的控制隻需要一條CAN總線控制線和電源線就可以了!
CAN總線的基本工作原理
CAN總線的通信通過一種類似于“會議” 的機制實現的,隻不過會議的過程并不是由一方(節點)主導,而 是,每一個會議參加人員都可以自由的提出會議議題(多主通信模式),二者對應關系如下:
CAN總線工作流程
CAN總線的優勢
01 CAN總線網絡節點結構
02 為何CAN收發器
照BOSCH CAN總線标準将0或1邏輯信号轉換為标準中規定的電平,同時有反饋功能
CAN總線上的電平
CAN2.0A/B标準規定:總線空閑時,CAN_H和CAN_L上的電壓為2.5V
在數據傳輸時,顯性電平(邏輯 0):CAN_H 3.5V CAN_L 1.5V
隐性電平(邏輯 1):CAN_H 2.5V CAN_L 2.5V
03總線長度的思考
影響總線長度的主要因素:
(1)CAN總線通信的應答機制,即成功接收到一幀報文的節點必須在 應答場的”應答間隙“期間發送一位“顯性位”表示成功接收到一幀數據
如:通信速率為250Kbit/s,傳送一個bit所需時間為:1/250×1000 = 4μ 那麼,該信号在總線上的延時時間必須小于(2μ?)才能保證發送節點成功的在應答間隙期間接收到該“顯性電平”。
任何一根導線都可以簡化為左圖所示的電路模型,可以看到,其中既有電感又有電容,因此,電流在其中傳輸并不是光速,而是需要一定的時間。
對于雙絞線而言,信号在其中的傳播延時時間約為,5ns/m(典型值)。當通信速率達到1Mbit/s時,40m的總線長度, 延時時間就達到200ns,而允許延時時間為600ns左右,還是不能不考慮的!
由上面的分析可知:
總線通信速率越高,通信距離越短,對物理傳輸線的要求就越高,在雙絞線、屏蔽線還是其他的傳輸線選擇上,通信速率是一個很關鍵的參數。
影響總線長度的其他因素:
CAN總線的硬件抗幹擾
共模電感作用:共模電壓有較大的感 抗,差模電壓感抗為零,相當于電感濾波。對共模電流有較大的阻礙作用。
終 端 電阻 120 歐姆并非固定不變,這跟使用的導線有關!
總線長度的限制——位定時、同步
CAN總線控制器按照時間片的概念将每一個bit的時間劃分成了n個時間片。這樣做的目的就是為了實現CAN總線的同步、保證不同節點間時間的一緻性。
如:晶振和CAN CLOCK,頻率均為4MHz,那麼每一個時間片最小時間就為0.25μs,通信波特率為250Kbit/s,那麼每一個bit的時間就為4μs, 因此,每一個bit的總的時間片數目就為16。當然可以進一步提高晶振頻率,使得每一個bit被劃分的更加細緻。
CAN2.0A/B将每一個bit的時間劃分成了4段,同步段、傳輸段、相位段1和相位段2,每一段占用一定的時間片
Can總線報文幀結構CAN總線共有四種報文:
1 數據幀
2 遠程幀
3 錯誤幀
4 過載幀
數據幀定義
幀起始:1bit。從圖中看出,在幀間隙後由邏輯1(至少兩個bit)向邏輯 0 的跳變就被認為是幀起始,它的作用就是為了硬同步。
仲裁場:由29bit的ID标示符和IDE、SRR、RTR位構成。IDE位用于标示該幀是擴展幀(29bit ID)還是标準幀(11bit ID);SRR在擴展幀 中 為 一 隐 性 位 ; R T R 位 為 遠 程 幀 标 志 位 。
由上圖可以看出,11bit的基本ID首先被發送(ID28~ID18),然後在發送18bit的擴展ID(ID17~ID0)
CAN總線的仲裁機制要點
(1)首先發送ID的29位,優先級問題
(2)總線電平由誰決定
CAN總線總裁機制的實現也就實現了CAN總線的多主機模式,總線節點不存在誰主誰從的概念
注意:我們可以人為的給29位的ID賦予一定的意義從而區分不同的報文類型!
報文濾波報文濾波可以通過軟件編程的方式實現,也可以通過硬件(芯片内部的報文濾波寄存器)實現,但二者實現的原理是相同的,如下圖所示:
數據幀中的其他場作用
控制場:包括兩位保留位(必須為0),和數據長度位(DLC0~DLC3) 數據場:包括最多8個字節的數據
CRC場:是一種算法,對數據進行CRC校驗,共15bit,其後跟了一位CRC界定符——為1(隐性電平)
應答場:為兩個1(總線電平為低電平),其中一位為應答間隙,另一位為應答界定符。成功接收到數據的節點必須發送一位顯性位(總線電平為高電平)
來應答該發送節點,必須注意:該顯性位必須在應答間隙期間, 即1bit的時間内将總線電平拉高。幀結尾:7個連續的1組成(隐性電平)
CAN總線的偵聽機制—支持仲裁及錯誤檢查幀聽就是發出去的數據再采樣回來,比較采樣回來的數據是否和發出的數據一緻!
CAN總線錯誤檢測
CAN總線通過如下幾個方面進行錯誤檢測
另:總線同步機制也是CAN總線容錯的一種方式
注意:通過上面5種錯誤檢測機制,發送節點和接收節點均可以檢測到總線上的錯誤,并通過錯誤的累加來實現總線節點的關閉等操作
CAN總線負載率計算計算例子:
假設CAN總線波特率為250Kbit/s,總線報文發送時間間隔為10ms, 報文為數據幀(8個字節數據),那麼10ms内總線能夠支持的最大報文數量為多少?
第一步:根據通信波特率計算10ms總共可以發送多少bit (250000/1000)*10 = 2500bit
第二步:計算最長的一幀報文有多少個bit
1sof 29id 1ide 1rtr 1srr 2r 4dlc 8*8data
16crc 2ack 7eof = 128bit
第三步:計算10ms内可以支持的報文數目
2500/128 ≈ 19
由上面的計算可知,當10ms間隔的報文數量超過19條時,就會出現丢幀,總線飽和。
計算報文數量也是設計CAN網絡所要考慮的,可以查閱相關文獻看負載率在多少時合适
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!