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

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

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

【CAN總線知識(shí)】為什么CAN節(jié)點(diǎn)ID不能相同?

ZLG致遠(yuǎn)電子 ? 2024-08-30 12:48 ? 次閱讀

CAN-bus網(wǎng)絡(luò)中原則上不允許兩個(gè)及以上節(jié)點(diǎn)具有相同的ID段,但如果兩個(gè)及以上節(jié)點(diǎn)ID相同會(huì)怎樣呢?資深強(qiáng)迫癥患者想一探究竟!


實(shí)驗(yàn)前,我們首先要對(duì)CAN報(bào)文的結(jié)構(gòu)組成、仲裁原理有清晰的認(rèn)識(shí)。


24a157dc-668b-11ef-89ff-92fbcf53809c.jpg ?CAN報(bào)文結(jié)構(gòu)

目前使用最廣泛的CAN-bus網(wǎng)絡(luò)標(biāo)準(zhǔn)是V2.0版本,該標(biāo)準(zhǔn)又分為A、B兩部分,它們主要的區(qū)別在仲裁區(qū)域的ID碼長(zhǎng)度。其中CAN2.0A(標(biāo)準(zhǔn)幀)為11位ID,CAN2.0B(擴(kuò)展幀)為29位ID。下表1為CAN報(bào)文結(jié)構(gòu):圖1CAN報(bào)文結(jié)構(gòu) 24b85ca2-668b-11ef-89ff-92fbcf53809c.png

仲裁原理

CAN總線的仲裁是基于“線與原理”,如圖1所示。當(dāng)收發(fā)器同時(shí)發(fā)出不同電平信號(hào)時(shí),隱性電平總是被顯性電平覆蓋。CAN控制器在發(fā)送報(bào)文的同時(shí)會(huì)監(jiān)聽(tīng)總線狀態(tài)與自己發(fā)送的電平是否一致,如果不一致發(fā)生在ID段則會(huì)發(fā)生仲裁,如果發(fā)生在其他區(qū)域則會(huì)觸發(fā)相應(yīng)錯(cuò)誤。

24dec180-668b-11ef-89ff-92fbcf53809c.png

圖1 線“與”示意圖下面進(jìn)入重點(diǎn),如果兩個(gè)節(jié)點(diǎn)ID段相同會(huì)怎樣?我們用兩個(gè)CAN卡和一臺(tái)CANScope開(kāi)始實(shí)驗(yàn),CAN卡模擬CAN標(biāo)準(zhǔn)節(jié)點(diǎn)收發(fā)報(bào)文,CANScope做通信監(jiān)控,如圖2所示。(注:CAN卡為USB轉(zhuǎn)CAN工具,CANScope為CAN總線分析儀,產(chǎn)品詳見(jiàn)致遠(yuǎn)電子官網(wǎng)zlg.cn

24fbc94c-668b-11ef-89ff-92fbcf53809c.png

圖2 實(shí)驗(yàn)平臺(tái)搭建


24a157dc-668b-11ef-89ff-92fbcf53809c.jpg ?實(shí)驗(yàn)一:ID段相同但數(shù)據(jù)不同

使用一個(gè)CAN卡發(fā)送ID為000H數(shù)據(jù)為01020304050607H的CAN幀,使用另一個(gè)CAN卡發(fā)送ID為000H數(shù)據(jù)為02020304050607H的CAN幀。CANScope監(jiān)聽(tīng)的數(shù)據(jù)如圖3所示,可以觀察到有大量的數(shù)據(jù)場(chǎng)填充錯(cuò)誤。

25264c1c-668b-11ef-89ff-92fbcf53809c.png

圖3 數(shù)據(jù)場(chǎng)填充錯(cuò)誤為什么會(huì)這樣呢?我們首先分別獲取兩個(gè)CAN卡發(fā)送報(bào)文對(duì)應(yīng)的波形,如圖4。因?yàn)閮蓭瑘?bào)文同為標(biāo)準(zhǔn)數(shù)據(jù)幀,且每幀包含8個(gè)字節(jié)數(shù)據(jù),所以兩幀報(bào)文對(duì)應(yīng)的波形在ID段、RTR、IDE、R0以及DLC段完全一致。因此,仲裁作用失效,兩節(jié)點(diǎn)都認(rèn)為自己獲得了優(yōu)先權(quán),繼續(xù)發(fā)送數(shù)據(jù)。

2541febc-668b-11ef-89ff-92fbcf53809c.png

圖4 報(bào)文對(duì)應(yīng)波形對(duì)比現(xiàn)在我們聚焦數(shù)據(jù)段,第一個(gè)字節(jié)數(shù)據(jù)相同,均為為00H;第二個(gè)字節(jié)數(shù)據(jù)不同,分別為01H、02H。圖5箭頭標(biāo)示處可以看到兩者對(duì)應(yīng)位的邏輯分別為0和1。前面我們提到CAN節(jié)點(diǎn)在發(fā)送報(bào)文的同時(shí)會(huì)檢測(cè)總線電平是否與自己發(fā)送的電平一致,若不一致發(fā)生在非仲裁區(qū)域則觸發(fā)相應(yīng)錯(cuò)誤,因此若這兩幀報(bào)文同時(shí)發(fā)送到總線上必將發(fā)生位發(fā)送錯(cuò)誤。因?yàn)槲话l(fā)送錯(cuò)誤會(huì)引起節(jié)點(diǎn)發(fā)送違反填充規(guī)則的6個(gè)顯性位(主動(dòng)錯(cuò)誤破壞該幀數(shù)據(jù)),故出現(xiàn)數(shù)據(jù)場(chǎng)填充錯(cuò)誤,如圖3。

2569bee8-668b-11ef-89ff-92fbcf53809c.png

圖5 數(shù)據(jù)場(chǎng)沖突
24a157dc-668b-11ef-89ff-92fbcf53809c.jpg ?實(shí)驗(yàn)二:ID相同數(shù)據(jù)也相同同時(shí)使用兩個(gè)CAN卡發(fā)送ID為000H數(shù)據(jù)為01020304050607H的CAN幀,CANScope做通信監(jiān)控。首先,我們不勾選“總線應(yīng)答”選項(xiàng),使CANScope工作在僅監(jiān)聽(tīng)模式。實(shí)驗(yàn)結(jié)果如圖6所示,出現(xiàn)的是應(yīng)答定界符格式錯(cuò)誤。

258c6100-668b-11ef-89ff-92fbcf53809c.png

圖6 應(yīng)答界定符格式錯(cuò)誤為什么會(huì)發(fā)生這種錯(cuò)誤呢?發(fā)送報(bào)文的節(jié)點(diǎn)會(huì)在ACK段發(fā)送兩個(gè)隱性位,若在第一個(gè)位期間接收到顯性電平則認(rèn)為該幀被正確接收。由于仲裁段相同時(shí)兩節(jié)點(diǎn)都認(rèn)為自己取得仲裁權(quán),在ACK段等待應(yīng)答,但該網(wǎng)絡(luò)中僅存在兩個(gè)節(jié)點(diǎn),因此在ACK段不能收到應(yīng)答,進(jìn)而發(fā)生應(yīng)答定界符錯(cuò)誤。簡(jiǎn)單說(shuō)來(lái)這種情形就類似于總線中只有一個(gè)節(jié)點(diǎn)將不能實(shí)現(xiàn)數(shù)據(jù)發(fā)送。圖7是在ACK段有無(wú)應(yīng)答時(shí)的波形對(duì)比。

25ad9406-668b-11ef-89ff-92fbcf53809c.png

圖7 ACK應(yīng)答我們勾選上總線應(yīng)答,再次開(kāi)始實(shí)驗(yàn)(此時(shí)總線中相當(dāng)于有3個(gè)節(jié)點(diǎn))。這時(shí)如圖8所示,總線數(shù)據(jù)收發(fā)正常。

25ccd6a4-668b-11ef-89ff-92fbcf53809c.png

圖8 啟動(dòng)總線應(yīng)答

24a157dc-668b-11ef-89ff-92fbcf53809c.jpg ?總結(jié)

當(dāng)兩節(jié)點(diǎn)同時(shí)發(fā)送ID相同數(shù)據(jù)不同的報(bào)文時(shí),將發(fā)生數(shù)據(jù)場(chǎng)填充錯(cuò)誤;當(dāng)兩節(jié)點(diǎn)同時(shí)發(fā)送ID相同數(shù)據(jù)也相同的報(bào)文時(shí),若有其他節(jié)點(diǎn)應(yīng)答則不發(fā)生錯(cuò)誤,若無(wú)其他節(jié)點(diǎn)應(yīng)答則發(fā)生應(yīng)答錯(cuò)誤。因此,我們?cè)谠O(shè)計(jì)CAN總線時(shí)應(yīng)避免ID段相同的情況出現(xiàn)。

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

    關(guān)注

    10

    文章

    3428

    瀏覽量

    105999
  • CAN總線
    +關(guān)注

    關(guān)注

    145

    文章

    1951

    瀏覽量

    130753
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7565

    瀏覽量

    88773
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CAN總線節(jié)點(diǎn)ID相同會(huì)怎樣?

    CAN-bus網(wǎng)絡(luò)中原則上不允許兩個(gè)節(jié)點(diǎn)具有相同ID段,但如果兩個(gè)節(jié)點(diǎn)ID
    發(fā)表于 08-31 15:38 ?2779次閱讀

    CAN-bus網(wǎng)絡(luò)中,出現(xiàn)具有相同ID段的兩個(gè)節(jié)點(diǎn)會(huì)發(fā)生什么?

    CAN-bus網(wǎng)絡(luò)中原則上不允許兩個(gè)節(jié)點(diǎn)具有相同ID段,但如果兩個(gè)節(jié)點(diǎn)ID
    的頭像 發(fā)表于 09-14 14:03 ?1.1w次閱讀
    <b class='flag-5'>CAN</b>-bus網(wǎng)絡(luò)中,出現(xiàn)具有<b class='flag-5'>相同</b><b class='flag-5'>ID</b>段的兩個(gè)<b class='flag-5'>節(jié)點(diǎn)</b>會(huì)發(fā)生什么?

    基于CAN總線的煤礦瓦斯報(bào)警節(jié)點(diǎn)系統(tǒng)的設(shè)計(jì)

    文章介紹了一種基于CAN 總線的煤礦瓦斯報(bào)警節(jié)點(diǎn)系統(tǒng)的設(shè)計(jì),給出了基于CAN 總線的智能監(jiān)控節(jié)點(diǎn)
    發(fā)表于 03-30 16:40 ?47次下載

    CAN總線節(jié)點(diǎn)電路的設(shè)計(jì)與實(shí)現(xiàn)

    CAN 總線作為一種現(xiàn)場(chǎng)總線,應(yīng)用極為普及。本文給出了一種基于AT89C51 和SJA1000 的CAN 總線
    發(fā)表于 05-25 13:26 ?60次下載

    基于CAN總線智能節(jié)點(diǎn)設(shè)計(jì)

    CAN總線是一種應(yīng)用極為普及的現(xiàn)場(chǎng)總線。文中提出了一種CAN總線通信接口的設(shè)計(jì)方案。CAN
    發(fā)表于 01-25 15:04 ?52次下載

    CAN總線系統(tǒng)智能節(jié)點(diǎn)設(shè)計(jì)

    摘要:CAN總線上的節(jié)點(diǎn)是網(wǎng)絡(luò)上的信息接收和發(fā)送站;智能節(jié)點(diǎn)能通過(guò)編程設(shè)置工作方式、ID、地址、波特率等參數(shù)。它主要由單片機(jī)和可編程的
    發(fā)表于 12-20 22:18 ?45次下載

    基于CAN總線的智能節(jié)點(diǎn)設(shè)計(jì)

    應(yīng)用51單片機(jī)為控制核心結(jié)合其他的器件設(shè)計(jì)了一種能連接于CAN總線上的智能節(jié)點(diǎn)。通過(guò)單片機(jī)控制CAN總線控制器SJA1000,并進(jìn)一步通過(guò)
    發(fā)表于 01-10 16:54 ?120次下載

    CAN總線節(jié)點(diǎn)ID相同會(huì)出現(xiàn)什么

    CAN-bus網(wǎng)絡(luò)中原則上不允許兩個(gè)節(jié)點(diǎn)具有相同ID段,但如果兩個(gè)節(jié)點(diǎn)ID
    發(fā)表于 11-12 10:52 ?8次下載
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b>中<b class='flag-5'>節(jié)點(diǎn)</b><b class='flag-5'>ID</b><b class='flag-5'>相同</b>會(huì)出現(xiàn)什么

    can總線id如何定義設(shè)置?

    can總線ID是指標(biāo)識(shí)符。也就是一個(gè)can節(jié)點(diǎn)的地址或者說(shuō)名字。網(wǎng)絡(luò)中識(shí)別某一節(jié)點(diǎn)的信息。
    發(fā)表于 11-27 10:30 ?10.5w次閱讀

    CAN總線節(jié)點(diǎn)軟件的設(shè)計(jì)與實(shí)現(xiàn)

    CAN總線節(jié)點(diǎn)軟件的設(shè)計(jì)與實(shí)現(xiàn)說(shuō)明。
    發(fā)表于 04-19 16:59 ?20次下載

    關(guān)于CAN總線錯(cuò)誤的相關(guān)知識(shí)

    在本系列文章中,我們將為您詳細(xì)介紹CAN總線錯(cuò)誤的相關(guān)知識(shí),包括CAN總線錯(cuò)誤的基礎(chǔ)概念、CAN
    的頭像 發(fā)表于 05-27 17:56 ?3114次閱讀

    CAN總線錯(cuò)誤的類型介紹

    在本系列文章中,我們將為您詳細(xì)介紹CAN總線錯(cuò)誤的相關(guān)知識(shí),包括CAN總線錯(cuò)誤的基礎(chǔ)概念、CAN
    的頭像 發(fā)表于 06-13 16:08 ?8228次閱讀

    CAN總線基礎(chǔ)知識(shí)

    CAN總線是一種常用的總線,對(duì)于剛開(kāi)始接觸CAN總線的,面對(duì)著各式各樣的資料,可能不知道從何看起,今天科普一下
    的頭像 發(fā)表于 02-09 15:43 ?4035次閱讀

    基于FPGA的CAN總線通信節(jié)點(diǎn)設(shè)計(jì)

    點(diǎn)擊上方 藍(lán)字 關(guān)注我們 摘要:以FPGA 代替?zhèn)鹘y(tǒng)的單片機(jī)和外圍擴(kuò)展芯片, 給出了CAN 總線通信節(jié)點(diǎn)的詳細(xì)設(shè)計(jì)方案。其中以SJA1000為CAN
    的頭像 發(fā)表于 06-18 11:15 ?2984次閱讀

    基于CAN總線的智能節(jié)點(diǎn)設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于CAN總線的智能節(jié)點(diǎn)設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-20 14:44 ?21次下載
    基于<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>的智能<b class='flag-5'>節(jié)點(diǎn)</b>設(shè)計(jì)