• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關 閉

    新聞中心

    EEPW首頁 > 工控自動化 > 設計應用 > CAN總線中節(jié)點ID相同會怎樣?

    CAN總線中節(jié)點ID相同會怎樣?

    作者:ZLG致遠電子 時間:2017-09-01 來源:電子產品世界 收藏

      -bus網絡中原則上不允許兩個節(jié)點具有相同的ID段,但如果兩個節(jié)點ID段相同會怎樣呢?

    本文引用地址:http://www.czjhyjcfj.com/article/201709/363785.htm

      實驗前,我們首先要對報文的結構組成、仲裁原理有清晰的認識。


      一、報文結構

      目前使用最廣泛的網絡標準是V2.0版本,該標準又分為A、B兩部分,它們主要的區(qū)別在仲裁區(qū)域的ID碼長度。其中CAN2.0A(標準幀)為11位ID,CAN2.0B(擴展幀)為29位ID。下表1為CAN報文結構:


      表1 CAN報文結構

      二、仲裁原理

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


      圖1 線“與”示意圖

      下面進入重點,如果兩個節(jié)點ID段相同會怎樣?我們用兩個CAN卡 和一臺CANScope開始實驗,CAN卡模擬CAN標準節(jié)點收發(fā)報文,CANScope做通信監(jiān)控,如圖2所示。(注:CAN卡為USB轉CAN工具,CANScope為CAN總線分析儀,產品詳見ZLG致遠電子官網)


      圖2 實驗平臺搭建

      三、實驗一“ID段相同但數(shù)據不同”

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


      圖3 數(shù)據場填充錯誤

      為什么會這樣呢?我們首先分別獲取兩個CAN卡發(fā)送報文對應的波形,如圖4。因為兩針報文同為標準數(shù)據幀,且每幀包含8個字節(jié)數(shù)據,所以兩幀報文對應的波形在ID段、RTR、IDE、R0以及DLC段完全一致。因此,仲裁作用失效,兩節(jié)點都認為自己獲得了優(yōu)先權,繼續(xù)發(fā)送數(shù)據。


      圖4 報文對應波形對比

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


      圖5 數(shù)據場沖突

      四、實驗二“ID相同數(shù)據也相同”

      同時使用兩個CAN卡發(fā)送ID為000H數(shù)據為01020304050607H的CAN幀,CANScope做通信監(jiān)控。首先,我們不勾選“總線應答”選項,使CANScope工作在僅監(jiān)聽模式。實驗結果如圖6所示,出現(xiàn)的是應答定界符格式錯誤。


      圖6 應答界定符格式錯誤

      為什么會發(fā)生這種錯誤呢?發(fā)送報文的節(jié)點會在ACK段發(fā)送兩個隱性位,若在第一個位期間接收到顯性電平則認為該幀被正確接收。由于仲裁段相同時兩節(jié)點都認為自己取得仲裁權,在ACK段等待應答,但該網絡中僅存在兩個節(jié)點,因此在ACK段不能收到應答,進而發(fā)生應答定界符錯誤。簡單說來這種情形就類似于總線中只有一個節(jié)點將不能實現(xiàn)數(shù)據發(fā)送。圖7是在ACK段有無應答時的波形對比。


      圖7 ACK應答

      我們勾選上總線應答,再次開始實驗(此時總線中相當于有3個節(jié)點)。這時如圖8所示,總線數(shù)據收發(fā)正常。


      圖8 啟動總線應答

      總結:當兩節(jié)點同時發(fā)送ID相同數(shù)據不同的報文時,將發(fā)生數(shù)據場填充錯誤;當兩節(jié)點同時發(fā)送ID相同數(shù)據也相同的報文時,若有其他節(jié)點應答則不發(fā)生錯誤,若無其他節(jié)點應答則發(fā)生應答錯誤。因此,我們在設計CAN總線時應避免ID段相同的情況出現(xiàn)。













    關鍵詞: CAN CAN-bus

    評論


    相關推薦

    技術專區(qū)

    關閉
    主站蜘蛛池模板: 安远县| 鸡西市| 论坛| 宜良县| 永吉县| 宁波市| 大田县| 海林市| 平塘县| 德江县| 崇明县| 元朗区| 叶城县| 平凉市| 会泽县| 抚松县| 宜春市| 瑞丽市| 淳安县| 巫山县| 长垣县| 仪征市| 朝阳县| 阿坝县| 盐津县| 资溪县| 舟曲县| 延庆县| 余姚市| 沽源县| 邵武市| 慈溪市| 内乡县| 建阳市| 客服| 淄博市| 昌宁县| 连南| 元氏县| 远安县| 木里|