1. 程式人生 > 實用技巧 >汽車儀表盤CAN匯流排實現

汽車儀表盤CAN匯流排實現

汽車儀表盤CAN匯流排實現

一、CAN匯流排控制器框圖

CAN匯流排是一種多主控(Multi-Master)的匯流排系統,CAN網路的訊息是廣播式的,亦即在同一時刻網路上所有節點偵測的資料是一致的,因此比較適合傳輸諸如控制、溫度、轉速等短訊息。

CAN匯流排的物理層是將ECU(電子控制單元)連線至匯流排的驅動電路。ECU的總數將受限於總線上的電氣負荷。物理層定義了物理資料在總線上各節點間的傳輸過程,主要是連線介質、線路電氣特性、資料的編碼/解碼、位定時和同步的實施標準。

理論上,CAN總線上的節點數幾乎不受限制,可達到2000個,實際上受電氣特性的限制,最多隻能接100多個節點。

CAN的資料鏈路層是其核心內容,其中邏輯鏈路控制(LOagie Link Control,LLC)完成過濾、過載通知和管理恢復等功能。

CAN匯流排使用序列資料傳輸方式,可以1Mb/s的速率在40m的雙絞線上執行,也可以使用光纜連線,而且在這種總線上匯流排協議支援多主控制器。

CAN匯流排的特點:

  • 1、具有實時性強、傳輸距離較遠、抗電磁干擾能力強、成本低等優點;
  • 2、採用雙線序列通訊方式,檢錯能力強,可在高噪聲干擾環境中工作;
  • 3、具有優先權和仲裁功能,多個控制模組通過CAN 控制器掛到CAN-bus 上,形成多主機區域性網路;
  • 4、可根據報文的ID決定接收或遮蔽該報文;
  • 5、可靠的錯誤處理和檢錯機制;
  • 6、傳送的資訊遭到破壞後,可自動重發;
  • 7、節點在錯誤嚴重的情況下具有自動退出匯流排的功能;
  • 8、報文不包含源地址或目標地址,僅用標誌符來指示功能資訊、優先順序資訊。

CAN匯流排的優點:

  • 1、CAN為多主方式工作,網路上任一節點均可在任一時刻主動地向網路上其他節點發送資訊,而不分主從。
  • 2、在報文識別符號上,CAN上的節點分成不同的優先順序,可滿足不同的實時需要,優先順序高的資料最多可在134μs內得到傳輸。
  • 3、CAN採用非破壞匯流排仲裁技術。當多個節點同時向匯流排傳送資訊發生衝突時,優先順序較低的節點會主動退出傳送,而最高優先順序的節點可不受影響地繼續傳輸資料,從而大大節省了匯流排衝突仲裁時間。尤其是在網路負載很重的情況下,也不會出現網路癱瘓的情況(乙太網則可能)。
  • 4、CAN節點只需要通過對報文的識別符號濾波即可實現點對點、一點對多點及全域性廣播等幾種方式傳送接收資料。
  • 5、CAN的直接通訊距離最遠可達10km(速率5kbps以下)通訊速率最高可達1Mbps(此時通訊距離最長為40m)。
  • 6、CAN上的節點數取決於匯流排驅動電路,目前可達110個。標準幀報文識別符號有11位、擴充套件幀的報文識別符號(29位)的個數幾乎不受限制。
  • 7、報文采用短幀結構、傳輸時間短,受干擾概率低,保證了資料出錯率極低。
  • 8、CAN的每幀資訊都有CRC校驗及其他檢錯措施,具有極好的檢錯效果。
  • 9、CAN通訊介質可為雙絞線、同軸電纜或光纖,選擇靈活。
  • 10、CAN節點在錯誤嚴重的情況下可自動關閉輸出功能,以使總線上其他節點的操作不受影響。

汽車CAN匯流排節點ECU的硬體設計:
 
汽車CAN匯流排研發的核心技術就是對帶有CAN介面的ECU進行設計,其中ECU的CAN匯流排模組由CAN控制器和CAN收發器構成。CAN控制器執行完整的CAN協議,完成通訊功能,包括資訊緩衝和接收濾波。CAN控制器與物理匯流排之間需CAN收發器作為介面,它實現CAN控制器與匯流排之間邏輯電平信 號的轉換。

二、Linux下的 Soxket CAN 匯流排分層模型

CAN被細分為三個層次:

(1)CAN物件層(the object layer);
(2)CAN傳輸層(the transfer layer);
(3)CAN物理層(the phyical layer);

它在ISO/OSI模型中的分層如圖:

三、CAN分層模型以及功能描述

物件層的作用範圍包括:

(1)查詢被髮送的報文。
(2)確定由實際要使用的傳輸層接收哪一個報文。(即選擇報文物件)
(3)為應用層相關硬體提供介面。

傳輸層的作用主要:

(1)傳送規則,也就是控制幀結構、執行仲裁、錯誤檢測、出錯標定、故障界定。
(2)總線上什麼時候開始傳送新報文及什麼時候開始接收報文,均在傳輸層裡確定。
(3)位定時的一些普通功能也可以看作是傳輸層的一部分。
(4)傳輸層的修改是受到限制的。

物理層的作用:

在不同節點之間根據所有的電氣屬性進行位資訊的實際傳輸。同一網路內,物理層對於所有的節點必須是相同的。

四、Linux Socket CAN驅動模型

五 OBD介面

車載自動診斷系統。這套系統能在汽車執行過程中實時監測發動機電控系統及車輛的其它功能模組的工作狀況,如有發現工況異常,則根據特定的演算法判斷出具體的故障,並以診斷故障程式碼(DTC,Diagnostic Trouble Codes)的形式儲存在系統內的儲存器上。

系統自診斷後得到的有用資訊可以為車輛的維修和保養提供幫助,維修人員可以利用汽車原廠專用儀器讀取故障碼,從而可以對故障進行快速定位,以便於對車輛的修理,減少人工診斷的時間。

由於初期不同廠商的OBD系統之問各行其是、互不相容,所以為了統一標準,美國汽車工程師協會(SAE,Society of Automotive Engineers)1988年制定了OBD-II標準。OBD—II實行標準的檢測程式,並且具有嚴格的排放針對性,用於實時監測汽車尾氣排放情況。

作為一個監測尾氣排放的系統,OBD在後來的發展中開始逐漸擴大了自己的控制範圍,隨著車輛的各種感測器及電子化程度的提高,OBD將各項監測功能都納入到了自己的管轄範圍內。現在我們說到OBD一般都會用OBD介面這個詞,因為我們在車輛上只能看到這個系統的傳輸介面,但它背後其實整個車輛控制系統的集合體。

六 OBD模擬器的使用

在除錯汽車儀表盤時,使用汽車模擬器是必要的。
淘寶網上買了OBD模擬器,它包括三個部分:模擬汽車ECU主機板,OBD分析儀,OBD診斷儀。

汽車ECU主機板模擬汽車的各項資料,如車速,轉速,油量,故障碼等等;OBD分析儀分析CAN資料,(各種協議分析);診斷儀用來收發命令,設定和接收命令和資料的。

儀表盤APP開發完成後,執行在開發板上,再連結CAN匯流排,通過調節 汽車ECU主機板的各類引數,結果就顯示在儀表盤上。

APP見上一章節<QT3D實現一個汽車儀表盤>