一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探析CAN總線在駕駛系統(tǒng)中的重要作用

ml8z_IV_Technol ? 來源:cg ? 2018-12-17 16:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

CAN 是Controller AreaNetwork 的縮寫,中文名為控制器局域網(wǎng)絡(luò),是ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議,是一種用于實(shí)時(shí)應(yīng)用的串行通訊協(xié)議總線,它可以使用雙絞線來傳輸信號,是世界上應(yīng)用最廣泛的現(xiàn)場總線之一。

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

CAN 總線技術(shù)發(fā)展歷程

CAN 總線最早是由德國 Bosch 公司在 1986 年為汽車監(jiān)測和控制而設(shè)計(jì),主要用于汽車內(nèi)部測量與執(zhí)行部件之間的通信。自寶馬公司 1989 年推出第一款使用 CAN-BUS的汽車后,CAN 總線就開始了其輝煌的歷程。CAN 的高性能和可靠性已被認(rèn)同,并被廣泛地應(yīng)用于工業(yè)自動(dòng)化、船舶、醫(yī)療設(shè)備、工業(yè)設(shè)備等方面。CAN總線是當(dāng)今自動(dòng)化領(lǐng)域技術(shù)發(fā)展的熱點(diǎn)之一,被譽(yù)為自動(dòng)化領(lǐng)域的計(jì)算機(jī)局域網(wǎng)。它的出現(xiàn)為分布式控制系統(tǒng)實(shí)現(xiàn)各節(jié)點(diǎn)之間實(shí)時(shí)、可靠的數(shù)據(jù)通信提供了強(qiáng)有力的技術(shù)支持。

CAN通信實(shí)時(shí)性與可靠性

CAN 總線從誕生之初就憑借著其優(yōu)良的實(shí)時(shí)性與可靠性迅速發(fā)展成為現(xiàn)場總線的領(lǐng)航者,但它仍存在一些缺陷。CAN 總線通信采用載波監(jiān)聽無損的仲裁技術(shù),在網(wǎng)絡(luò)負(fù)載較小時(shí),CAN 總線實(shí)時(shí)性可以滿足各方面的需求,但隨著網(wǎng)絡(luò)負(fù)載不斷增大,信息在總線上碰撞的概率也隨之增大,如果繼續(xù)使用基本的 CAN 協(xié)議,優(yōu)先級較低的信息發(fā)送的實(shí)時(shí)性就會(huì)受到影響,網(wǎng)絡(luò)負(fù)載到達(dá)一定程度后甚至?xí)顺隹偩€競爭。CAN總線協(xié)議采用靜態(tài)固定優(yōu)先級分配方式,這樣不同優(yōu)先級的信息就很難公平的共享總線使用權(quán),這些缺陷成為制約其進(jìn)一步發(fā)展的問題。

CAN總線的基本工作原理

CAN協(xié)議的特性包括完整性的串行數(shù)據(jù)通訊、提供實(shí)時(shí)支持、傳輸速率高達(dá)1Mb/s、同時(shí)具有11位的尋址以及檢錯(cuò)能力。

CAN總線用戶接口簡單,編程方便。網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用總線式結(jié)構(gòu)。這種網(wǎng)絡(luò)結(jié)構(gòu)簡單、成本低,并且采用無源抽頭連接,系統(tǒng)可靠性高。通過CAN總線連接各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),形成多主機(jī)控制器局域網(wǎng)(CAN)。

信息的傳輸采用CAN通信協(xié)議,通過CAN控制器來完成。各網(wǎng)絡(luò)節(jié)點(diǎn)一般為帶有微控制器智能節(jié)點(diǎn)完成現(xiàn)場的數(shù)據(jù)采集和基于CAN協(xié)議的數(shù)據(jù)傳輸,節(jié)點(diǎn)可以使用帶有在片CAN控制器的微控制器,或選用一般的微控制器加上獨(dú)立的CAN控制器來完成節(jié)點(diǎn)功能。傳輸介質(zhì)可采用雙絞線、同軸電纜或光纖。

如果需要進(jìn)一步提高系統(tǒng)的抗干擾能力,還可以在控制器和傳輸介質(zhì)之間加接光電隔離,電源采用DC-DC變換器等措施。這樣可方便構(gòu)成實(shí)時(shí)分布式測控系統(tǒng)。微控制器,或選用一般的微控制器加上獨(dú)立的CAN控制器來完成節(jié)點(diǎn)功能。傳輸介質(zhì)可采用雙絞線、同軸電纜或光纖。如果需要進(jìn)一步提高系統(tǒng)的抗干擾能力,還可以在控制器和傳輸介質(zhì)之間加接光電隔離,電源采用DC-DC變換器等措施。這樣可方便構(gòu)成實(shí)時(shí)分布式測控系統(tǒng)。

自動(dòng)駕駛系統(tǒng)如何解析CAN總線的數(shù)據(jù)

本段主要討論無人駕駛系統(tǒng)獲取到CAN消息后,如何根據(jù)CAN協(xié)議,解析出想要的數(shù)據(jù)?

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

認(rèn)識CAN消息

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

可以看到這個(gè)名為CanFrame的消息結(jié)構(gòu)中包含4個(gè)關(guān)鍵信息,分別是:

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

由于CAN總線上傳播著大量CAN消息,因此兩個(gè)節(jié)點(diǎn)進(jìn)行通信時(shí),會(huì)先看id號,以確保這是節(jié)點(diǎn)想要的CAN消息。最初的CAN消息id號的范圍是000-7FF(16進(jìn)制數(shù)),但隨著汽車電控信號的增多,需要傳遞的消息變多,信息不太夠用了。工程師在CAN消息基礎(chǔ)上,擴(kuò)展了id號的范圍,大大增加了id號的上限,并將改進(jìn)后的CAN消息稱為“擴(kuò)展幀”,舊版CAN消息稱為“普通幀”。

如果拿寫信做比較,這個(gè)id就有點(diǎn)類似寫在信件封面上的名字。

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

每一幀CAN消息能夠傳遞最多8個(gè)無符號整形數(shù)據(jù),或者說能夠傳遞8*8的bool類型的數(shù)據(jù)。這里的len最大值為8,如果該幀CAN消息中有些位沒有數(shù)據(jù),這里的len就會(huì)小于8。

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

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

在沒有CAN協(xié)議幫助我們解析的情況下,這里的數(shù)據(jù)無異于亂碼,根本無法得到有用的消息,這也是CAN消息難以破解的原因之一。

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

時(shí)間戳表示的是收到該CAN消息的時(shí)刻。通過連續(xù)多幀的時(shí)間戳,可以計(jì)算出CAN消息的發(fā)送周期,也可以用于判斷CAN消息是否被持續(xù)收到。

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

認(rèn)識CAN協(xié)議

目前業(yè)界的CAN協(xié)議,都是以后綴名為dbc的文件進(jìn)行存儲的。德國Vector公司提供CANdb++ Editor是一款專門用于閱讀dbc文件的軟件。

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

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

每個(gè)信號的具體描述顯示在軟件右側(cè),其中與解析直接相關(guān)的三個(gè)要素已用綠色框選中。

1.Value Type(Unsigned或Signed)

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

2.Factor 和 Offset

這兩個(gè)參數(shù)需要參與實(shí)際的物理量運(yùn)算,F(xiàn)actor是倍率,Offset是偏移量。例如Lane_Type和Quality信號的Factor為1,Offset為0,而其他信號的Factor均為小數(shù)。具體的計(jì)算方法請往下看。

雙擊LKA_Left_Lane_A,打開Layout頁,會(huì)發(fā)現(xiàn)很熟悉的方塊陣列,如下圖所示。

工程師真正關(guān)心的恰好是這塊彩色圖,因?yàn)樵搱D上的每個(gè)小方塊和data中的每一個(gè)bool量一一對應(yīng)。這就是CAN協(xié)議的真面目。

解析CAN信號

由于彩色方塊圖與data是一一對應(yīng)的,我們將兩個(gè)圖疊加,將得到如下圖所示的data圖。

每個(gè)信號物理量的計(jì)算公式為:

1.Factor為1的物理量

由于Lane_Type和Quality的Factor為1,Offset為0,因此十進(jìn)制值為多少,實(shí)際物理量即為多少。

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

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

2.Factor為小數(shù)的物理量

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

這里的bytes即為CAN消息中的data,首先將Position信號所在的行取出來,將第1行的8個(gè)bool值存儲在變量t1中,將第二行的8個(gè)bool值存儲在變量t0中。由于在這條CAN消息中,Position同時(shí)占據(jù)了高8位和低8位,因此需要將第一行和第二行的所有bool位拿來計(jì)算,高8位存儲在32位的變量x中,低8位存儲在32位的變量t中。

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

與CAN類似的通信協(xié)議

VCU、雷達(dá)等通過CAN總線傳遞信號,隨著CAN的負(fù)載越來越高,很多傳感器選擇了其他通信方式。比如激光雷達(dá)的點(diǎn)云數(shù)據(jù)量太過龐大,使用的是局域網(wǎng)的方式進(jìn)行傳遞;再比如GPS和慣導(dǎo)使用的是串口進(jìn)行通信。

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

最后,提醒一下,由于不同ID的CAN消息的結(jié)構(gòu)不一樣,因此工程師在寫解析代碼時(shí),需要十分仔細(xì),否則會(huì)給后續(xù)處理帶來想不到的bug。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • CAN總線
    +關(guān)注

    關(guān)注

    145

    文章

    1986

    瀏覽量

    132809
  • 自動(dòng)駕駛
    +關(guān)注

    關(guān)注

    788

    文章

    14312

    瀏覽量

    170561

原文標(biāo)題:自動(dòng)駕駛之——CAN總線簡介

文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    氧化層制備芯片制造重要作用

    本文簡單介紹了氧化層制備芯片制造重要作用。
    的頭像 發(fā)表于 05-27 09:58 ?554次閱讀
    氧化層制備<b class='flag-5'>在</b>芯片制造<b class='flag-5'>中</b>的<b class='flag-5'>重要作用</b>

    淺談?wù)箷?huì)宣傳推廣的重要作用

    本帖最后由 coolgua 于 2021-8-26 14:41 編輯 展會(huì)推廣對于現(xiàn)階段幾乎所有的商業(yè)性展會(huì)都有重要作用,展會(huì)宣傳推廣關(guān)鍵在于如何詮釋展會(huì)的內(nèi)容與目標(biāo),按照展會(huì)規(guī)模的大小
    發(fā)表于 08-26 11:56

    CAN總線機(jī)車監(jiān)控系統(tǒng)的應(yīng)用

    CAN總線機(jī)車監(jiān)控系統(tǒng)的應(yīng)用 以Philips公司的SJA1000為例,介紹了CAN現(xiàn)場
    發(fā)表于 05-04 22:36 ?1234次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>在</b>機(jī)車監(jiān)控<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>中</b>的應(yīng)用

    日志系統(tǒng)應(yīng)用重要作用

    日志系統(tǒng)應(yīng)用重要作用  日志系統(tǒng)管理的意義     一個(gè)完整的信息
    發(fā)表于 01-29 14:01 ?9389次閱讀

    通信電源通信機(jī)房重要作用

    通信電源整體通信機(jī)房占據(jù)重要作用。面對
    發(fā)表于 11-16 11:55 ?2388次閱讀

    CAN總線無人駕駛上的應(yīng)用

    CAN總線整個(gè)無人駕駛系統(tǒng)中有著十分重要作用。除
    的頭像 發(fā)表于 07-15 09:02 ?7078次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>在</b>無人<b class='flag-5'>駕駛</b>上的應(yīng)用

    究竟終端電阻對CAN總線有什么重要作用和影響呢?

    總線末端的終端電阻不可忽略,每個(gè)節(jié)點(diǎn)的終端內(nèi)阻阻值也不可忽略,很多車廠的CAN節(jié)點(diǎn)測試規(guī)范專門有一項(xiàng)內(nèi)阻測試項(xiàng),包括:電源和地正常連接的CAN_H內(nèi)阻、電源和地正常連接的CAN_L內(nèi)阻
    的頭像 發(fā)表于 09-30 15:06 ?3.5w次閱讀
    究竟終端電阻對<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>有什么<b class='flag-5'>重要作用</b>和影響呢?

    電容開關(guān)電源重要作用

    電容開關(guān)電源重要作用(羅馬仕電源技術(shù)偏執(zhí)狂價(jià)格)-電容開關(guān)電源重要作用,電容的各種用
    發(fā)表于 09-29 13:39 ?30次下載
    電容<b class='flag-5'>在</b>開關(guān)電源<b class='flag-5'>中</b>的<b class='flag-5'>重要作用</b>

    淺析風(fēng)速傳感器氣象監(jiān)測重要作用

    淺析風(fēng)速傳感器氣象監(jiān)測重要作用
    發(fā)表于 11-03 17:25 ?12次下載

    CAN總線通訊終端電阻的作用

    終端電阻CAN總線通信中起著重要作用,它可以穩(wěn)定信號傳輸,提高抗干擾能力。使用CAN
    的頭像 發(fā)表于 08-08 15:32 ?4878次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b>通訊<b class='flag-5'>中</b>終端電阻的<b class='flag-5'>作用</b>

    大氣環(huán)境監(jiān)測儀環(huán)境保護(hù)重要作用

    大氣環(huán)境監(jiān)測儀環(huán)境保護(hù)重要作用
    的頭像 發(fā)表于 05-13 14:50 ?837次閱讀
    大氣環(huán)境監(jiān)測儀<b class='flag-5'>在</b>環(huán)境保護(hù)<b class='flag-5'>中</b>的<b class='flag-5'>重要作用</b>

    can總線隔離模塊的作用

    據(jù)傳輸?shù)目煽啃浴?一、CAN總線隔離模塊的作用 防止電氣干擾 CAN總線系統(tǒng)在運(yùn)行過程
    的頭像 發(fā)表于 06-16 10:32 ?2802次閱讀

    DCAC電源模塊工業(yè)科技重要作用

    滿足各種設(shè)備和系統(tǒng)的電力需求。本文中,我們將探討DC/AC電源模塊工業(yè)科技重要作用。 DC/AC電源模塊
    的頭像 發(fā)表于 07-10 09:35 ?927次閱讀
    DCAC電源模塊<b class='flag-5'>在</b>工業(yè)科技<b class='flag-5'>中</b>的<b class='flag-5'>重要作用</b>

    激光焊錫溫度控制系統(tǒng)重要作用

    激光焊錫溫度控制系統(tǒng)是非常重要的配置。松盛光電來給大家介紹什么是激光錫焊溫度控制系統(tǒng),以及溫度控制系統(tǒng)
    的頭像 發(fā)表于 12-03 16:51 ?634次閱讀
    激光焊錫<b class='flag-5'>中</b>溫度控制<b class='flag-5'>系統(tǒng)</b>的<b class='flag-5'>重要作用</b>

    CAN總線工業(yè)自動(dòng)化作用

    CAN(Controller Area Network)總線工業(yè)自動(dòng)化中發(fā)揮著至關(guān)重要作用。它是一種高效的現(xiàn)場
    的頭像 發(fā)表于 12-23 09:12 ?1424次閱讀