《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > CAN總線中節(jié)點(diǎn)ID相同會(huì)怎樣

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

2017-08-30
來(lái)源:ZLG致遠(yuǎn)電子

  CAN-bus網(wǎng)絡(luò)中原則上不允許兩個(gè)節(jié)點(diǎn)具有相同的ID段,但如果兩個(gè)節(jié)點(diǎn)ID段相同會(huì)怎樣呢?

1.png

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

  一,、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):

2.png

  表1  CAN報(bào)文結(jié)構(gòu)

  二,、仲裁原理

  CAN總線的仲裁是基于“線與原理”,如圖1所示,。當(dāng)個(gè)收發(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ò)誤。

3.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)ZLG致遠(yuǎn)電子官網(wǎng))

4.png

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

  三、實(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ò)誤。

5.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ù),。

6.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,。

7.png

  圖5  數(shù)據(jù)場(chǎng)沖突

  四、實(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ò)誤,。

8.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ì)比,。

9.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ā)正常。

proxy.png

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

  總結(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)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]