can test 接收報文 獲取CAN報文並解析

2021-10-12 23:51:37 字數 2031 閱讀 4547

一、獲得can報文的過程

準備軟硬體環境,硬體周立功can卡,軟體使用zlgcantest,安裝在電腦上;通過can卡連線整車can或者除錯埠,通過軟體互動介面獲取can報文。

二、can2.0b報文基本格式

接收到的報文,是一串十六進製制的字元,而報文格式定義和位數是按照二進位制定義的。29位擴充套件識別符號,報文幀格式如下圖所示。**中,上面一行為字段代號,下面一行表示欄位的位數。sa為報文的源位址,有8位。

三、報文基本組成

初始能夠獲得的是幀id的一串字元,就是前面的29位擴充套件識別符號,通過幀id找到目標所在行,進而找到資料段。資料段包含的資訊,是我們需要的部分。

identifier 11bits

srride

identifier extension 18bitsrdp

pduformat(pf)

srride

pfpdu

specific(ps)

source

address(sa)

以上為29 識別符號的分配表:

其中,優先順序為3 位,可以有8 個優先順序;r 一般固定為0;dp 現固定為0;8 位的pf 為報文的**;8 位的ps 為目標位址或組擴充套件;8 位的sa 為傳送此報文的源位址。

四、資料段的組成

資料段由8個位元組組成,對應通訊協議中約定的含義。每個位元組有2個字元,前邊字元代表高4位,後邊字元代表低4位。

例如,一串報文1818d0f3 ce 0d 00 7d 00 6d 1100(id是1818d0f3)。第1個位元組ce中的c為高4位,e為低4位。如果通訊協議規定,第1、2位元組表示總電壓,而且註明byte1為低位元組,byte2為高位元組,那麼解析時就應該為:0dce。

例如 :

outin

id週期

bms儀表/車載終端

0x18b1d0f4

200ms

位置資料名

備註byte1

電池總電壓低位元組

0.1v/bit

資料範圍:0-10000(0-1000v)

byte2

電池總電壓高位元組

byte3

電池系統電流低位元組

0.1a/bit, 偏移:-400

資料範圍:0-8000(-400~400a)

byte4

電池系統電流高位元組

byte5

最高電池溫度

1℃/bit,偏移-40℃

資料範圍:0-250(-40℃-210℃)

byte6

最低電池溫度

byte7

電池系統剩餘電量

1%/bit, 資料範圍:0-100(0-100%)

byte8

電池系統故障

見附表4-1

五、具體can報文解析過程

收到的報文為:1818d0f3 ce 0d 00 7d 00 6d 11 00。

第一、二位元組,協議中規定了,1818d0f3  id幀內,第

一、二位元組表示電壓,並且,高位元組表示高位元組表示電壓數值的高位,低位元組表示電壓數值的低位,比例因子0.1v。

資料中0dce代表總電壓,轉為十進位制為3534,乘以0.1 v的單位,則得到總電壓值為353.4 v。

第三、四位元組,協議中規定報文的第

三、四位元組表示總電流,又總電流的單位為0.1 a,偏移量為32000。資料中7d00轉為十進位制為32000,乘以0.1再減去3200的偏移量0,則說明此時電池組沒有被充電或放電,電流為0。

第六、七位元組,協議中規定報文的第

六、七位元組表示最高單體電池電壓及位置。單體電池電壓單位為0.01 v,最高4位代表箱號。資料中116d,其中1代表箱號,即最高電池電壓在第1箱。16d代表最高電池電壓,轉為十進位制為365,乘以0.01 a的單位,則得到最高電池電壓為3.65 v。

十六進製制轉換成十進位制數的方法,從最低位開始,16的0次方加第一位+16的1次方加第二位數……比如前文中的116d,最高4位代表箱體編號,16^0+1=1,因此箱體號為1;後面的12位代表單體電壓,計算方式(16^0+13)+(16^1+6)+(16^2+1)=365,算式中的13是報文中的d。

can test 接收報文 CAN匯流排基礎(下)

吃完飯後不刷牙 can匯流排基礎 上 zhuanlan.zhihu.com can報文幀結構 在can匯流排上,報文是以 幀 來傳送的,每一幀都包含以下幾個部分 1 幀起始 在匯流排空閒時,匯流排為隱性狀態。幀起始由單個顯性位構成,標誌著報文的開始,並在匯流排上起著同步作用。2 仲裁段 仲裁的主要是...

can test 接收報文 一文搞懂CAN匯流排

最近在整理匯流排的基本知識,前幾天對lin匯流排進行了整理 lin匯流排。今天來整理一下can匯流排,首先回顧一下之前寫過的can相關的文章。can匯流排錯誤處理機制 基於can的刷寫流程 can訊息中的motorola和intel can一致性測試是什麼 can歷史 1983年,bosch開始著手...

CAN報文格式

can協議的報文傳輸過程中有 資料幀 遠端幀 錯誤幀 過載幀和幀間隔。1.資料幀 用於傳送節點向接收節點傳送資料的幀。2.遠端幀 用於接收節點向具有相同id的傳送節點傳送資料的幀。3.錯誤幀 用於當檢測出錯誤時向其他節點通知錯誤的幀。4.過載幀 用於接收節點通知其尚未做好準備的幀。5.幀間隔 用於將...