一、獲得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.幀間隔 用於將...