探析CAN總線在駕駛系統中的重要作用

2021-01-11 電子發燒友

CAN總線目前已廣泛應用在汽車電子領域,在整個自動駕駛駕駛系統中也有著十分重要的作用,自動駕駛汽車上的某些傳感器(如雷達、Mobileye)的信號傳遞也是通過CAN實現的。本文就帶大家了解一下CAN總線。

CAN 是Controller AreaNetwork 的縮寫,中文名為控制器區域網路,是ISO國際標準化的串行通信協議,是一種用於實時應用的串行通訊協議總線,它可以使用雙絞線來傳輸信號,是世界上應用最廣泛的現場總線之一。

因其具有高性能、高可靠性的通信機制,目前已廣泛應用在汽車電子領域,CAN協議用於汽車中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束。因此CAN總線在整個自動駕駛系統中也有著十分重要的作用,自動駕駛汽車上的某些傳感器(如雷達、Mobileye)的信號傳遞也是通過CAN實現的。

CAN 總線技術發展歷程

CAN 總線最早是由德國 Bosch 公司在 1986 年為汽車監測和控制而設計,主要用於汽車內部測量與執行部件之間的通信。自寶馬公司 1989 年推出第一款使用 CAN-BUS的汽車後,CAN 總線就開始了其輝煌的歷程。CAN 的高性能和可靠性已被認同,並被廣泛地應用於工業自動化、船舶、醫療設備、工業設備等方面。CAN總線是當今自動化領域技術發展的熱點之一,被譽為自動化領域的計算機區域網。它的出現為分布式控制系統實現各節點之間實時、可靠的數據通信提供了強有力的技術支持。

CAN通信實時性與可靠性

CAN 總線從誕生之初就憑藉著其優良的實時性與可靠性迅速發展成為現場總線的領航者,但它仍存在一些缺陷。CAN 總線通信採用載波監聽無損的仲裁技術,在網絡負載較小時,CAN 總線實時性可以滿足各方面的需求,但隨著網絡負載不斷增大,信息在總線上碰撞的概率也隨之增大,如果繼續使用基本的 CAN 協議,優先級較低的信息發送的實時性就會受到影響,網絡負載到達一定程度後甚至會退出總線競爭。CAN總線協議採用靜態固定優先級分配方式,這樣不同優先級的信息就很難公平的共享總線使用權,這些缺陷成為制約其進一步發展的問題。

CAN總線的基本工作原理

CAN協議的特性包括完整性的串行數據通訊、提供實時支持、傳輸速率高達1Mb/s、同時具有11位的尋址以及檢錯能力。

CAN總線用戶接口簡單,編程方便。網絡拓撲結構採用總線式結構。這種網絡結構簡單、成本低,並且採用無源抽頭連接,系統可靠性高。通過CAN總線連接各個網絡節點,形成多主機控制器區域網(CAN)。

信息的傳輸採用CAN通信協議,通過CAN控制器來完成。各網絡節點一般為帶有微控制器的智能節點完成現場的數據採集和基於CAN協議的數據傳輸,節點可以使用帶有在片CAN控制器的微控制器,或選用一般的微控制器加上獨立的CAN控制器來完成節點功能。傳輸介質可採用雙絞線、同軸電纜或光纖。

如果需要進一步提高系統的抗幹擾能力,還可以在控制器和傳輸介質之間加接光電隔離,電源採用DC-DC變換器等措施。這樣可方便構成實時分布式測控系統。微控制器,或選用一般的微控制器加上獨立的CAN控制器來完成節點功能。傳輸介質可採用雙絞線、同軸電纜或光纖。如果需要進一步提高系統的抗幹擾能力,還可以在控制器和傳輸介質之間加接光電隔離,電源採用DC-DC變換器等措施。這樣可方便構成實時分布式測控系統。

自動駕駛系統如何解析CAN總線的數據

本段主要討論無人駕駛系統獲取到CAN消息後,如何根據CAN協議,解析出想要的數據?

從CAN總線中解析出傳感器的信息,是每個自動駕駛工程師,甚至每一個汽車電子工程師必備的技能。

認識CAN消息

以百度推出的Apollo開源的代碼為例做CAN消息的講解,我們先看到每一幀的CAN消息是如何被定義的。

可以看到這個名為CanFrame的消息結構中包含4個關鍵信息,分別是:

1.uint32_t id (CAN消息的ID號)

由於CAN總線上傳播著大量CAN消息,因此兩個節點進行通信時,會先看id號,以確保這是節點想要的CAN消息。最初的CAN消息id號的範圍是000-7FF(16進位數),但隨著汽車電控信號的增多,需要傳遞的消息變多,信息不太夠用了。工程師在CAN消息基礎上,擴展了id號的範圍,大大增加了id號的上限,並將改進後的CAN消息稱為「擴展幀」,舊版CAN消息稱為「普通幀」。

如果拿寫信做比較,這個id就有點類似寫在信件封面上的名字。

2.uint8_t len(CAN消息的有效長度)

每一幀CAN消息能夠傳遞最多8個無符號整形數據,或者說能夠傳遞8*8的bool類型的數據。這裡的len最大值為8,如果該幀CAN消息中有些位沒有數據,這裡的len就會小於8。

3.uint8_t data[8](CAN消息的實際數據)

正如剛才提到的,每一幀CAN消息都包含至多8*8個bool類型的數據,因此可以通過8*8個方格,可視化CAN消息中的data。如下圖所示:

在沒有CAN協議幫助我們解析的情況下,這裡的數據無異於亂碼,根本無法得到有用的消息,這也是CAN消息難以破解的原因之一。

4.timestamp(CAN消息的時間戳)

時間戳表示的是收到該CAN消息的時刻。通過連續多幀的時間戳,可以計算出CAN消息的發送周期,也可以用於判斷CAN消息是否被持續收到。

綜上,每幀CAN消息中最重要的部分其實是data,即8*8的bool值。所謂解析CAN消息,其實就是解析這8*8個bool類型的值。

認識CAN協議

目前業界的CAN協議,都是以後綴名為dbc的文件進行存儲的。德國Vector公司提供CANdb++ Editor是一款專門用於閱讀dbc文件的軟體。

如下圖所示,為Mobileye提供的車道線的dbc文件。(文末提供CANdb++ Editor安裝包和Mobileye車道線的dbc文件的獲取方法)

以id號為0x766的LKA_Left_Lane_A為例,這是Mobileye檢測無人車左側車道線的部分信息,包括了左側車道線的偏移量,曲率等。該幀CAN消息(Message)中的五個信號(Signal),分別是Lane_Type、Quality、Curvature、Curvature_Derivative、Width_left_marking、Position。

每個信號的具體描述顯示在軟體右側,其中與解析直接相關的三個要素已用綠色框選中。

1.Value Type(Unsigned或Signed)

某些物理量在描述時是有符號的,比如溫度。而描述另外一些量時,是沒有符號的,即均為正數,比如說曲率。

2.Factor 和 Offset

這兩個參數需要參與實際的物理量運算,Factor是倍率,Offset是偏移量。例如Lane_Type和Quality信號的Factor為1,Offset為0,而其他信號的Factor均為小數。具體的計算方法請往下看。

雙擊LKA_Left_Lane_A,打開Layout頁,會發現很熟悉的方塊陣列,如下圖所示。

工程師真正關心的恰好是這塊彩色圖,因為該圖上的每個小方塊和data中的每一個bool量一一對應。這就是CAN協議的真面目。

解析CAN信號

由於彩色方塊圖與data是一一對應的,我們將兩個圖疊加,將得到如下圖所示的data圖。

每個信號物理量的計算公式為:

1.Factor為1的物理量

由於Lane_Type和Quality的Factor為1,Offset為0,因此十進位值為多少,實際物理量即為多少。

從圖中就能直接看出Quality這個信號佔據兩個位,二進位數11,換算為十進位是3(1*2 + 1*1);Lane_Type佔據四個位,二進位數為0010,換算為十進位是2(0*8 + 0*4 + 1*2 + 0*1)。

所以這一幀信號表示此時的左車道線Lane_Type值為2,Quality值為3。對於整數值,通信雙方可以約定規則,比如Mobileye就規定了,Quality為0或者1時表示車道線的置信度較低,不推薦使用此時的值;2表示置信度中等,3表示置信度較高,請放心使用。

2.Factor為小數的物理量

對於Factor不為1的物理量,比如Position,需要使用移位的方法進行解析,但解析公式保持不變。以百度 Apollo提供的源碼為例進行講解。

這裡的bytes即為CAN消息中的data,首先將Position信號所在的行取出來,將第1行的8個bool值存儲在變量t1中,將第二行的8個bool值存儲在變量t0中。由於在這條CAN消息中,Position同時佔據了高8位和低8位,因此需要將第一行和第二行的所有bool位拿來計算,高8位存儲在32位的變量x中,低8位存儲在32位的變量t中。

現在需要將高8位和低8位拼接,將高8位左移8位,然後與低8位求或運算,即可得到Position的二進位值。隨後進行的左移16位,再右移16位的操作是為了將32位的變量x的高16位全部初始化為0。之後將x乘以Factor再加上Offset即可得到真實的Position值,給真實值加上單位meter,即可獲取實際的物理量。

與CAN類似的通信協議

VCU、雷達等通過CAN總線傳遞信號,隨著CAN的負載越來越高,很多傳感器選擇了其他通信方式。比如雷射雷達的點雲數據量太過龐大,使用的是區域網的方式進行傳遞;再比如GPS和慣導使用的是串口進行通信。

雖然通信方式和通信協議千差萬別,但解析的方法都是一樣的。

最後,提醒一下,由於不同ID的CAN消息的結構不一樣,因此工程師在寫解析代碼時,需要十分仔細,否則會給後續處理帶來想不到的bug。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • CAN總線錯誤幀長得啥樣?怎麼產生?
    推薦閱讀 採用can總線技術解決電動汽車充電機模塊間的通信問題 ,方案改變、升級容易實現等優點,所以在實現的過程中採用軟體均流的方法,但是實現過程中需要解決的關鍵問題是模塊間的通信問題。
  • CAN總線在汽車行駛記錄儀中的應用
    汽車行駛記錄儀的使用對遏制疲勞駕駛、車輛超速等交通違章、約束駕駛人員的不良駕駛行為、保障車輛行駛安全以及道路交 通事故的分析鑑定具有重要的作用。本文引用地址:http://www.eepw.com.cn/article/276021.htm  汽車行駛記錄儀(以下簡稱記錄儀)由汽車行駛記錄儀的主機部分和計算機終端的數據分析軟體部分構成。
  • 什麼是CAN總線,CAN總線的優勢和特點
    而且,CAN具有的完善的通信協議可由CAN控制器晶片及其接口晶片來實現,從而大大降低系統開發難度,縮短了開發周期,這些是僅有電氣協議的RS-485所無法比擬的。已形成國際標準的現場總線  另外,與其它現場總線比較而言,CAN總線是具有通信速率高、容易實現、且性價比高等諸多特點的一種已形成國際標準的現場總線。這些也是目前 CAN總線應用於眾多領域,具有強勁的市場競爭力的重要原因。
  • can總線基本概念
    在汽車產業中,出於對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統被開發了出來。由於這些系統之間通信所用的數據類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,線束的數量也隨之增加。為適應「減少線束的數量」、「通過多個LAN,進行大量數據的高速通信」的需要,1986 年德國電氣商博世公司開發出面向汽車的CAN 通信協議。
  • CAN總線在變電站高壓開關櫃在線檢測系統中的應用
    引言本文引用地址:http://www.eepw.com.cn/article/195734.htm高壓開關櫃在電力系統中擔負控制和保護的雙重作用由於電子信息技術的進步,現場總線技術已經在高壓開關櫃功能智能化系統中得到了廣泛應用,使高壓開關櫃的在線檢測系統形成了一個分布式的監測系統,並使整個系統較傳統的集中監測系統性能增強,功能更為完善。1.
  • CAN總線系統結構與原理
    汽車為例介紹CAN總線系統結構與原理。  馬自達CAN數據傳輸總線系統由每個控制單元(例如,ABS、PCM、BCM等控制單元)內部的1 個CAN控制器和1個收發器,在每個控制單元外部連接的2 條CAN數據總線和整個系統中的2 個終端組成,如圖1所示。
  • 基於CAN總線的分布式監控系統設計
    引 言 鍋爐是通過燃燒加熱工質來提供熱能動力的重要設備,同時又是承壓、受火、有爆炸危險而又被各行各業普遍使用的特殊設備。所以實時監控鍋爐的運行狀態,及時、準確地發現鍋爐運行中的事故至關重要。傳統的鍋爐監控系統在測量手段和使用的傳感器方面都存在很大的缺陷。
  • CAN-BUS為何物?詳解車載網絡總線系統
    車載網絡系統中很重要的一個控制單元就是「網關」,它同時連接多種不同的CAN數據總線,並在傳遞數據時起翻譯作用。『網關在車載網絡中起到的「翻譯」作用』  在這裡可以給大家舉一個例子,比如從屬於驅動總線系統的室外溫度傳感器將檢測到的溫度信號發送給儀錶盤控制單元,然後儀錶板控制單元會將此信號發送到驅動總線系統上
  • 多路UART總線與CAN總線通訊系統設計
    摘要:主要利用TI公司的多路異步收發器TL16C554和PHILIPS公司的SJA1000設計一個多路總線協議轉換通訊系統。為了實現4路UART總線與CAN總線之間的相互轉換過程,採用微控制器AT89S51來控制通訊數據轉換,通過硬體電路實驗和軟體調試算法,得到了4路串行總線與CAN總線之間的相互透明轉換過程。該電路系統大大方便了具有UART接口的設備進行遠距離、多節點傳輸,增強了系統的通訊可靠性。
  • 現場總線CAN-bus在智能樓宇中的應用
    在整個小區系統越來越大、功能越來越多的情況下,各系統之間和系統內部起連接作用的通訊(Communication)系統環節的作用和重要性日益增強,並在很大程度上影響到整個小區系統的性能。  通訊系統也根據功能分為:監測控制通訊、音頻與視頻通訊、電信通訊、網際網路等。其中「監測控制通訊」的通訊方式是本文討論的重點。
  • can總線故障一般原因及問題解決方法
    一、CAN總線簡介   CAN總線即控制器區域網,為串行通信協議,能有效的支持具有很高安全等級的分布實時控制,在汽車電子行業中,使用CAN連接發   動機控制單元,傳感器,防剎車系統等等,其傳輸速度可達到1Mbit/S。
  • can總線通訊協議
    CAN總線作為一種有效支持分布式控制或實時控制的串行通信網絡,應用範圍遍及從高速網絡到低成本的多線路網絡。如:CAN在汽車中的發動機控制部件、ABS、抗滑系統等應用中的位速率可高達1Mbps。同時,它可以廉價地用於交通運載工具電器系統中,例如電氣窗口、燈光聚束、座椅調節等,以替代所需要的硬體連接。
  • CAN總線的工作原理
    CAN總線是一種多主方式的串行通訊總線,基本設計規範要求有高的位速率,高抗電子幹擾性,並且能夠檢測出產生的任何錯誤。CAN總線可以應用於汽車電控制系統、電梯控制系統、安全監測系統、醫療儀器、紡織機械、船舶運輸等領域。
  • CAN總線和RS485總線的定義
    在RS232或RS485設備聯成的設備網中,如果設備數量超過2臺,就必須使用RS485做通訊介質,RS485網的設備間要想互通信息只有通過「主(Master)」設備中轉才能實現,這個主設備通常是PC,而這種設備網中只允許存在一個主設備,其餘全部是從(Slave)設備。而現場總線技術是以ISO/OSI模型為基礎的,具有完整的軟體支持系統,能夠解決總線控制、衝突檢測、鏈路維護等問題。
  • 神馬是CAN總線?CAN總線抗幹擾6要素是什麼?
    什麼是CAN總線?   CAN 是Controller Area Network 的縮寫(以下稱為CAN),是ISO國際標準化的串行通信協議。在汽車產業中,出於對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統被開發了出來。由於這些系統之間通信所用的數據類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,線束的數量也隨之增加。
  • Android系統下CAN總線驅動程序的設計與實現
    摘要 嵌入式作業系統Android下CAN驅動程序的實現,不但需要在Linux內核中添加CAN驅動設備,還要實現Android HAL層的調用。
  • 基於AT89C52的CAN總線分布式測控系統的研製
    1CAN總線網絡的技術特點    用通訊數據塊編碼,可實現多主工作方式,數據收發方式靈活,可實現點對點、一點對多點及全局廣播等多種傳輸方式;可將DCS結構中主機的常規測試與控制功能分散到各個智能節點
  • 車載CAN總線網絡數據訪問及研究意義
    2020年國內智能汽車硬體市場預計規模為2000億,其中安全系統和自主駕駛相應空間為1128億、415億。2020年全球智能硬體市場規模可達7000億,以安全系統和自主駕駛為代表的智能駕駛系統佔半壁江山。計算機電子通信技術極大提高了人們的駕乘體驗,信息技術在汽車上的運用越來越廣,汽車將越來越變得智能。所有與智能相關的,隨之而來的安全問題也愈發突出。
  • CAN總線接口電路原理圖和注意事項
    CAN 總線是一種有效支持分布式控制和實時控制的串行通信網絡,以其高性能和高可靠性在自動控制領域得到了廣泛的應用。為提高系統的驅動能力,增大通信距離,實際應用中多採用Philips公司的82C250作為CAN控制器與物理總線間的接口,即CAN收發器,以增強對總線的差動發送能力和對CAN控制器的差動接收能力。
  • 基於CAN現場總線技術的機艙報警系統
    2 CAN總線在船舶中的應用目前, CAN總線應用於船舶的基本網絡模型如圖 1所示。模型中網絡分為2層結構,分別為上層網和下層 網(子網) ,子網通過網橋與上層網相連接。採用這種 結構,網絡中節點數理論上可以達到1000個,大大擴 充了CAN網絡容量,完全可以滿足船舶監控系統的需 要。