在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CAN總線報文數據一致性校驗

jf_EksNQtU6 ? 來源:古德曼汽車工業 ? 2024-01-24 10:03 ? 次閱讀

01不安全的CAN總線

1、如何保證ECU接收到的數據是合法的?

比如ECU1接收ECU2發出的一幀0x100報文,協議層是不會區分是ECU1發的,還是非法接入OBD的CAN盒發的?如果ECU1接收到非ECU2發出的0x100報文豈不是很危險?

2、ECU如何知道另一個節點掛死

比如ECU1還是接收ECU2發出的一幀0x100報文,但是由于某些神秘原因(程序跑飛了)導致ECU2掛死或者掉線,那ECU1如何知道此時的接收到0x100無效?

CAN通訊是一種廣播形式的通訊方式,自然協議層是無法做到數據合法性的校驗,這部分工作需要應用層來完成。由此就出現了RollingCounter與Checksum。這兩個東西好像也是功能安全的一部分,本期只是介紹這兩個東西的原理,不對功能安全做過多討論。

1e5c61b4-b9d9-11ee-8b88-92fbcf53809c.png

一個規范的CAN矩陣協議,每一幀報文都會要求有這個兩個信號。如上圖,從bit52到bit55是RollingCounter,取值范圍0~15,ECU沒發一次自動累加,滿15就歸零。從bit56到bit63(byte8)都是Checksum,取值范圍0x00~0xFF,用來表示該條報文的校驗值。

對于判斷發送報文ECU有沒有掛死很簡單,只要在接收端對RollingCounter進行判斷,幾個周期內協議棧上的buff沒有得到更新則就能判斷為節點異常。

對于報文合法性的判斷則就要負責得多,且會有各種花樣

1e7fe1ca-b9d9-11ee-8b88-92fbcf53809c.png

車企制定的通訊協議時,除了制定矩陣信號外,會規定Checksum的計算方法,比如這個是采用多項式的CRC校驗算法

1eac986e-b9d9-11ee-8b88-92fbcf53809c.png

并且規定出需要校驗的數據,有的是對矩陣的前7個byte進行校驗,有的則要增加報文ID作為校驗計算的輸入,各種花樣都有。

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * CRC8校驗子程序0x1D(x8+x4+x3+x2+1)  * * * * * * * * * * * *
* * 參數1,uint8_t *data:需要計算的數據  * * * * * * * * * * *
* * 參數1,uint16_t len:需要計算的數據字節長度 * * * * * * * *
* * 返回值,uint8_t crc8:計算出的CRC值 * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
uint8_t crc_8find(uint8_t *data, uint16_t len)
{
uint8_tcrc8=0x00;
    while( len-- ) 
    {
        crc8 = crc_table[crc8 ^ *data];
        data++;
}
    return crc8;
}

甚至貼心的給出校驗計算的偽代碼,這函數寫法C、C++應該都可以直接運行的。理解下上面的代碼!

當ECU2發出0x100之前,會對RollingCounter累加,并且通過計算包含RollingCounter的前七個字節的CRC值,填充到數據域的第8個字節;

ECU1接收到0x100的時候使用同樣的校驗算法,計算數據域的前7個字節,并且與第8個字節發送源計算的CRC值進行比較。如果兩者相同,則數據合法。

02CANOE仿真

接下來在CANOE的CAPL進行RollingCounter與Checksum的模擬

1eddafbc-b9d9-11ee-8b88-92fbcf53809c.png

創建兩個ECU節點,ECU1為發送節點,ECU2為接收節點。ECU2會對ECU1的節點做Checksum,如果非法數據會在log窗口中打印出來。ECU1會而這個IG是用來模擬非法的數據發送。

int GetCrcChecksum (int crc_position ,message *data)
{
  byte checksum;
  byte bitIndex;
  byte byteIndex;
  byte tdata;
  checksum = 0x00;
  for (byteIndex = DBLookup(data).dlc; byteIndex >= 1; byteIndex--)
  {
    if(byteIndex-1 != crc_position)
    {
      tdata = data.byte(byteIndex-1);
    }
    else
    {
      tdata = 0;
    }
    checksum ^= tdata;


    for (bitIndex = 0; bitIndex < 8; bitIndex++)
    {
      if ((checksum & 0x80) != 0)
      {
            checksum = (checksum << 1) ^ 0x1D; // cb_CRC_POLY: 0x1D
      }
      else
      {
            checksum = (checksum << 1);
      }
    }
  }
  checksum &= 0xFF;
  return (checksum);
}

CAPL計算Checksum的函數,在ECU1與ECU2里都存在

on timer Timer1
{
   Req.rollingCounter_0x100=LiveCount;
   Req.checksum_0x100=GetCrcChecksum(7,Req);
   output(Req);
   setTimer(Timer1,20);  
   LiveCount=LiveCount+1;
     if(LiveCount==16)
   {
    LiveCount=0;
   }

ECU1的定時器函數,發送前調用GetCrcChecksum函數生成Checksum

on message RCTest1
{
  if(this.checksum_0x100==GetCrcChecksum(7,this))
  {
      Rep=this;


  }else
  {
    write("Invaild Message");
  }
}

ECU2接收事件中重新計算Checksum跟發送報文里的Checksum進行比較,不同則拋出錯誤

1f17f62c-b9d9-11ee-8b88-92fbcf53809c.png

按F2,開始仿真,可以監控到ECU1發送出來的rollingCounter與Checksum

1f3bbb52-b9d9-11ee-8b88-92fbcf53809c.png

在Write窗口中打印ECU2接收到的數據

1f59749e-b9d9-11ee-8b88-92fbcf53809c.png

在IG節點設置一個非法的報文,rollingcounter與Checksum都設置0

1f8505a0-b9d9-11ee-8b88-92fbcf53809c.png

對非法數據進行拋出。

來源:古德曼汽車工業

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • CAN總線
    +關注

    關注

    145

    文章

    1954

    瀏覽量

    130920
  • 仿真
    +關注

    關注

    50

    文章

    4111

    瀏覽量

    133793
  • ecu
    ecu
    +關注

    關注

    14

    文章

    890

    瀏覽量

    54604
  • 通訊協議
    +關注

    關注

    10

    文章

    278

    瀏覽量

    20386

原文標題:CAN總線報文數據一致性校驗

文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CAN一致性測試內容及解決方案

    新能源汽車行業的迅速發展,CAN總線問題日益突出,總線故障潛在問題極其嚴重。那么,如何保證CAN總線穩定,為何主機廠愈來愈重視
    的頭像 發表于 05-29 09:14 ?2.1w次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>一致性</b>測試內容及解決方案

    CANDT一致性測試系統發布 保障CAN總線安全

    CAN總線已經成為新能源汽車、軍工、航空等行業的主控系統應用總線,ZLG致遠電子致力于構建CAN總線安全保障體系,震撼發布CANDT
    的頭像 發表于 08-29 09:54 ?6542次閱讀

    串行數據一致性測試和驗證測量基礎知識

    小弟這次給大家帶來了串行數據一致性測試和驗證測量基礎知識其中提到了些高速串行信號的測試測量方法和簡單的原理性介紹,適合初學者使用。PS。這其中提到的些測量設備現在已經升級為最新的儀器設備,但是測試的原理和技術還是可以讓大家閑
    發表于 04-16 16:17

    CAN一致性測試—容錯測試

    ,就可以進行鍵自動化測試,完整顯示測試結果、數據、波形截圖等數據內容,工程師可快速判斷被測設備的CAN總線質量。 CANDT
    發表于 11-22 16:36

    如何解決stm32 H7 DMA串口發送數據一致性問題?

    如何解決stm32 H7 DMA串口發送數據一致性問題?
    發表于 12-06 06:05

    VxWorks中主備數據一致性功能組件的設計與實現

    數據一致性是主備用系統必須解決的問題。目前主備系統的一致性都采用手工編程來實現。導致代碼結構繁雜,且效率不高。利用VxWorks的異常處理機制,結合RISC CPU的特性.設
    發表于 12-16 14:21 ?5次下載

    VxWorks中主備數據一致性功能組件的設計與實現

    數據一致性是主備用系統必須解決的問題。目前主備系統的一致性都采用手工編程來實現,導致代碼結構繁雜,且效率不高。利用VxWorks 的異常處理機制,結合RISC CPU 的特性,設計實
    發表于 09-22 11:32 ?8次下載

    VxWorks中主備數據一致性功能組件的設計與實現

    數據一致性是主備用系統必須解決的問題。目前主備系統的一致性都采用手工編程來實現。導致代碼結構繁雜,且效率不高。利用VxWorks的異常處理機制,結合RISC CPU的特性.設計
    發表于 11-28 16:47 ?11次下載

    P2P平臺上的數據一致性研究

    P2P網絡是個自組織的動態網絡,對等點可以隨意的加入或者離開網絡,因此如何控制數據一致性成了P2P網絡平臺應用擴展應用的關鍵點,本文引入數據一致性算法到P2P網絡平臺中來,
    發表于 02-25 16:06 ?15次下載

    電能質量監測數據一致性定義及檢測方法_邱麗羚

    電能質量監測數據一致性定義及檢測方法_邱麗羚
    發表于 01-08 11:07 ?0次下載

    分布式系統的CAP和數據一致性模型

    CAP理論的核心思想是任何基于網絡的數據共享系統最多只能滿足數據一致性(Consistency)、可用(Availability)和網絡分區容忍(Partition Tolerance)三個特性中的兩個。
    的頭像 發表于 05-05 23:20 ?2303次閱讀

    AMAZINGIC晶焱科技CAN 總線收發器一致性測試

    AMAZINGIC晶焱科技CAN 總線收發器一致性測試
    的頭像 發表于 05-26 15:49 ?894次閱讀
    AMAZINGIC晶焱科技<b class='flag-5'>CAN</b> <b class='flag-5'>總線</b>收發器<b class='flag-5'>一致性</b>測試

    AMAZINGIC晶焱科技CAN 總線收發器一致性測試

    AMAZINGIC晶焱科技CAN 總線收發器一致性測試
    的頭像 發表于 08-29 15:36 ?772次閱讀
    AMAZINGIC晶焱科技<b class='flag-5'>CAN</b> <b class='flag-5'>總線</b>收發器<b class='flag-5'>一致性</b>測試

    為什么主機廠愈來愈重視CAN一致性測試?

    新能源汽車迅猛發展下整車CAN網絡架構日益復雜,總線故障等潛在問題時刻影響著運行安全。整車零部件通過CAN一致性測試必將是安全保障的第道門
    的頭像 發表于 05-29 08:24 ?1233次閱讀
    為什么主機廠愈來愈重視<b class='flag-5'>CAN</b><b class='flag-5'>一致性</b>測試?

    新品發布 | 同星智能正式推出CAN總線一致性測試系統

    CAN總線一致性測試系統CANFD/CAN總線一致性測試系統,在硬件系統上基于同星自主研發的
    的頭像 發表于 07-06 08:21 ?548次閱讀
    新品發布 | 同星智能正式推出<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>一致性</b>測試系統
    主站蜘蛛池模板: 天天操天天干天天透| 亚洲午夜久久久久国产| 日本动漫在线看| 日韩a无吗一区二区三区| 日本欧美一级| 久久综合一| 国产片一区二区三区| 97影院理论| 亚洲卡1卡2卡新区网站| 91在线免费看| 久热99| 伊人久久成人| 天堂网色| 你懂得在线| 国产一级毛片外aaaa| l欧美18一19sex性| 手机在线看片国产日韩生活片| 狠狠ri| 亚洲一区三区| 一级日本高清视频免费观看| 添人人躁日日躁夜夜躁夜夜揉| 青青草国产三级精品三级| 久久综合狠狠综合狠狠| chinese国产videoxx实拍| 手机看片福利日韩国产| 四虎影视永久在线 yin56xyz| 亚洲一区免费观看| 亚洲电影一区二区| 青楼社区51在线视频视频| 国产色吧| 日韩一级片免费| 亚洲精品午夜视频| 失禁h啪肉尿出来高h受| 中国性猛交xxxx乱大交| 久久国产热| 日韩污| 成人在线视频网| 久久黄色录像| 男女互插小说| 日本三级全黄三级a| 丁香婷婷在线|