農林漁牧網

您現在的位置是:首頁 > 農業

一文弄懂汽車CAN匯流排

2023-01-22由 歸藏的汽車世界 發表于 農業

共模干擾屬於以下什麼干擾

CAN是控制單元區域網路(Controller Area Network)的縮寫。控制單元透過CAN網路交換資料。它是由德國博世公司於上世紀80年代初,為了解決眾多感測器與執行器之間的資料交換而開發的一種序列通訊協議。

控制器區域網CAN( Controller Area Network)屬於現場匯流排的範疇,是一種有效支援分散式控制系統的序列通訊網路。是由德國博世公司在20世紀80年代專門為汽車行業開發的一種序列通訊匯流排。由於其高效能、高可靠性以及獨特的設計而越來越受到人們的重視,被廣泛應用於汽車業、航空業、工業控制、安全防護等領域。

隨著CAN匯流排在各個行業和領域的廣泛應用,對其的通訊格式標準化也提出了更嚴格的要求。1991年CAN匯流排技術規範(Version2。0)制定併發布。該技術規範共包括A和B兩個部分。其中2。0A給出了CAN報文標準格式,而2。0B給出了標準的和擴充套件的兩種格式。

匯流排將汽車上的各種電子裝置與裝置連成一個網路,實現相互之間的資訊共享,既減少了線束,又可更好地控制和協調汽車的各個系統,使汽車效能達到最佳

CAN

匯流排的特點:

匯流排是一組能為多個部件

分時共享

的公共資訊傳送線路。

共享

是指總線上可以掛接多個部件,各個部件之間互相交換的資訊都可以透過這組線路分時共享。

分時

是指同一時刻只允許有一個部件匯流排傳送資訊,如果系統中有多個部件,則它們只能分時地向匯流排傳送資訊。

CAN

匯流排的

構成

CAN匯流排由1個控制器,1個收發器,2個數據傳輸終端和2條傳輸線構成。

CAN控制器:接收在控制單元中的微處理器中的資料,處理資料並傳給CAN收發器。同時,控制器接收收發器的資料,處理並傳給微處理器。

CAN收發器:是一個傳送器和接收器的組合。它將CAN控制器提供的資料轉化為電訊號並透過資料線傳送出去。同時,它接收資料,並將資料傳到CAN控制器。

資料傳輸終端:是一個電阻。阻止資料在傳輸終了被反射回來併發生反射波,這將破壞資料。

資料傳輸線:用以傳輸資料的雙向資料線。分為CAN高位資料線和CAN低位資料線。

一文弄懂汽車CAN匯流排

每個控制器都集成了微處理器、CAN控制器、CAN收發器。它們又被稱作CAN網路節點。資料傳輸線有雙絞線、同軸電纜或光纖。車輛多使用雙絞線。

雙絞線的作用是使外部干擾在兩根導線上產生的噪聲(在專業領域裡,把無用的訊號叫做噪聲)相同,以便後續的差分電路提取出有用訊號,差分電路是一個減法電路,兩個輸入端同相的訊號(

共模訊號

)相互抵消(m-n),反相的訊號相當於x-(-y),得到增強。理論上,在雙絞線及差分電路中m=n,x=y,相當於干擾訊號被完全消除,有用訊號加倍,但在實際執行中是有一定差異的。

簡單來說就是消除共模干擾。

汽車類匯流排通訊速率多為

500kbps,250kbps,125kpbs

一文弄懂汽車CAN匯流排

CAN

匯流排的基本工作原理

跟其他匯流排一樣,CAN匯流排的通訊也是透過一種類似於“會議”的機制實現的,只不過會議的過程並不是由一方(節點)主導,而是,每一個會議參加人員都可以自由的提出會議議題(多主通訊模式),二者對應關係如下:

一文弄懂汽車CAN匯流排

1、多個控制單元以並聯方式經收發器與匯流排連線。

2、每個控制單元都有權向匯流排傳送資訊(多主處理器結構)。

3、同一時刻只有一個控制單元向匯流排傳送資訊。其它的控制單元接收資訊,其中一些控制單元對這些資料感興趣並採用這些資料,而另一些控制單元則可能不理會這些資料。

一文弄懂汽車CAN匯流排

CAN被細分為三個層次:

(1)CAN物件層(the object layer);

(2)CAN傳輸層(the transfer layer);

(3)CAN物理層(the phyical layer);

物件層和傳輸層包括所有由ISO/OSI模型定義的資料鏈路層的服務和功能。

物件層的作用範圍包括:

(1)查詢被髮送的報文。

(2)確定由實際要使用的傳輸層接收哪一個報文。(即選擇報文物件)

(3)為應用層相關硬體提供介面

傳輸層的作用主要是:

(1)傳送規則,也就是控制幀結構、執行仲裁、錯誤檢測、出錯標定、故障界定。

(2)總線上什麼時候開始傳送新報文及什麼時候開始接收報文,均在傳輸層裡確定。

(3)位定時的一些普通功能也可以看作是傳輸層的一部分。

(4)傳輸層的修改是受到限制的。

物理層的作用:

在不同節點之間根據所有的電氣屬性進行位資訊的實際傳輸。當然,同一網路內,物理層對於所有的節點必須是相同的。儘管如此,在選擇物理層方面還是很自由的。

一文弄懂汽車CAN匯流排

CAN具有以下的屬性:

(1)報文(Messages):簡單來說就是具有固定格式的資料包。

(2)資訊路由(Information Routing):即,報文尋找結點的方式。

(3)位速率(Bit rate):資料位的傳輸速度。

(4)優先權(Priorities):即報文傳送的優先權。

(5)遠端資料請求(Remote Data Request):透過傳送遠端幀,需要資料的節點可以請求另一節點發送相應的資料幀。

(6)多主機(Multimaster):匯流排空閒時,任何結點都可以開始傳送報文。

(7)仲裁(Arbitration):當2個及以上的單元同時開始傳送報文,那麼就會有匯流排訪問衝突。仲裁是確定哪個單元的具有傳送優先權。

(8)安全性(Safety):CAN的每一個節點均採取了強有力的措施以進行錯誤檢測、錯誤標定及錯誤自檢。

(9)錯誤檢測(Error Detection):包括監視、迴圈冗餘檢查、位填充、報文格式檢查。

(10)錯誤檢測的執行(Performance of Error Detection)

(11)錯誤標定和恢復時間(Error Sinalling and Recovery Time):任何檢測到錯誤的結點會標誌出已損壞的報文。此報文會失效並將自動地開始重新傳送。如果不再出現新的錯誤,從檢測到錯誤到下一報文的傳送開始為止,恢復時間最多為29個位的時間。

(12)故障界定(Fault Confinement):CAN結點能夠把永久故障和短暫擾動區分開來。永久故障的結點會被關閉。

(13)連線(Connections):CAN序列通訊鏈路是可以連線許多結點的匯流排。理論上,可連線無數多的結點。但由於實際上受延遲時間或者匯流排線路上電氣負載的影響,連線結點的數量是有限的。

(14)單通道(Single Channel):匯流排是由單一進行雙向位訊號傳送的通道組成。

(15)匯流排值(Bus value):匯流排可以具有兩種互補的邏輯值之一:“顯性”(可表示為邏輯0)或“隱性”(可表示為邏輯1)。

(16)應答(Acknowledgment):所有的接收器檢查報文的連貫性。對於連貫的報文,接收器應答;對於不連貫的報文,接收器作出標誌。

(17) 睡眠模式/喚醒(Sleep Mode / Wake-up):為了減少系統電源的功率消耗,可以將CAN器件設為睡眠模式以便停止內部活動及斷開與匯流排驅動器的連線。CAN器件可由匯流排啟用,或系統內部狀態而被喚醒。

一文弄懂汽車CAN匯流排

一文弄懂汽車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

一文弄懂汽車CAN匯流排

CAN傳輸的報文,可分為五種型別:

(1)資料幀:用於傳送結點向接收結點傳送資料的幀。

(2)遠端幀:匯流排結點發出遠端幀,請求傳送具有同一識別符的資料幀。

(3)錯誤幀:任何結點檢測到一匯流排錯誤就發出錯誤幀。

(4)過載幀:過載幀用以在先行的和後續的資料幀(或遠端幀)之間提供一附加的延時。

(5)幀間隔:用於將資料幀及遠端幀與前面的幀分離開來的幀。

資料幀由7個不同的位場組成:

一文弄懂汽車CAN匯流排

資料幀有標準格式和和遠端格式,以下是其格式表示:

一文弄懂汽車CAN匯流排

資料幀格式

遠端幀由6個不同的位場組成:

一文弄懂汽車CAN匯流排

一文弄懂汽車CAN匯流排

遠端幀格式

錯誤幀用於在接收和傳送訊息時檢測出錯誤,通知錯誤的幀。錯誤幀由錯誤標誌和錯誤界定符構成。

錯誤標誌包括主動錯誤標誌和被動錯誤標誌兩種。

主動錯誤標誌:6個位的顯性位,處於主動錯誤狀態的單元檢測出錯誤時輸出的錯誤標誌。

被動錯誤標誌:6個位的隱性位,處於被動錯誤狀態的單元檢測出錯誤時輸出的錯誤標誌。

錯誤界定符由8個位的隱性位構成。

錯誤幀格式如下表示:

一文弄懂汽車CAN匯流排

錯誤幀格式

過載幀是用於接收單元通知其尚未完成接收準備的幀。過載幀由過載標誌和過載界定符構成。過載幀格式如下表示:

一文弄懂汽車CAN匯流排

過載幀格式

幀間隔是用於分隔資料幀和遠端幀的幀。資料幀和遠端幀可透過插入幀間隔將本幀與前面的任何幀(資料幀、遠端幀、錯誤幀、過載幀)分開。過載幀和錯誤幀前不能插入幀間隔。幀間隔如下圖所示:

一文弄懂汽車CAN匯流排

幀間隔格式

位填充(BitStuffing)

位填充是為了防止突發錯誤而設定的功能。位填充的規則如下:

(1)5位連續相同電平之後,必須填充一位反向位,即不允許有6個連續相同位;

(2)SOF之前為匯流排空閒狀態,不需要同步,因此不需要位填充;

(3)CRC之後為固定格式,不允許填充;

(4)由CAN控制器自動實現;

CAN的錯誤處理

CAN控制器檢測錯誤共有以下5種:

(1)位填充錯誤;

在使用位填充的幀場內,結點如果檢測到6個連續相同的位值,則產生位填充錯誤,在下一位開始時,該結點將傳送一個錯誤幀。

(2)位錯誤;

在傳送期間,結點檢測到匯流排的位值與自身傳送的位值不一致時,則產生位錯誤,在下一位開始時,該結點將傳送一個錯誤幀。

(3)CRC錯誤;

接收結點計算的CRC碼與資料幀本身自帶的CRC碼不一致,接收結點將丟棄該幀,並在ACK界定符之後傳送一個錯誤幀。

(4)應答錯誤;

傳送結點在ACK Slot位會發送隱性位,同時監聽匯流排是否為顯性位,如果是顯性位,則表明至少一個節點正確收到該幀;如果是隱性位,將產生ACK錯誤,傳送結點發送一個錯誤幀。

(5)格式錯誤;

傳送結節在(CRC界定符、ACK界定符、幀結束EOF)固定格式的位置檢測到顯性位時,將發生格式錯誤,併發送一個錯誤幀。

CAN匯流排同步

CAN匯流排的通訊方式為NRZ方式。各個位的開關或者結尾都沒有附加同步訊號。傳送結點以與位時序同步的方式開始傳送資料。另外,接收結點根據總線上電平的變化進行同步並進行接收工作。

但是,傳送結點和接收結點存在的時鐘頻率誤差及傳輸路徑上的(電纜、驅動器等)相位延遲會引進同步偏差。因此接收結點需要透過同步的方式調整時序進行接收。

同步的作用是儘量使本地位時序與總結訊號的位時序一致(本地同步段與總結訊號邊沿同步)。只有接收結點需要同步;同步只會發生在隱性到顯性電平的跳沿。

同步的方式為硬體同步和再同步。

CAN通訊速率計算與應用

,計算通訊負載

一文弄懂汽車CAN匯流排

一幀CAN報文(標準幀)包含大約125bit(這是一個大概數值,方便下面計算)。

假定我們的通訊波特率是500kpbs(一秒可以傳輸500k bit):

那麼傳輸1bit資料的時間:位元時間 = 1 / 位元率 =1 / (500 * 1000) s = 2 * 10-6 s = 2 μs

也就是當波特率為500kbps1bit將需要花2 μs時間把1bit資料傳輸到總線上。

所以傳輸一幀報文(2 μs/bit* 125 bit)需要的時間等於250 μs。

那麼對於一個週期為100 ms的報文在波特率為500kbps下傳輸的busload可以計算如下:

假定每100 ms一幀報文將被髮送,那麼在這100ms中,該幀報文佔用了250μs。

這個週期報文的busload是:

250μs /100 ms = (250 / (100*1000)) * 100 % = 25000 / 100000 % = 0。25 %。