汽車診斷協議,(K線/CAN總線、kwp2000、ISO14230、ISO1575...)轉載

K線學習博客來自:https://blog.csdn.net/haha1fan/article/details/78007839

針對自己不會的進行記錄(省的回顧看的時候還要重複記錄)

6、數據格式

發送一字節的數據格式爲(重點):
起始位 + 數據 + 停止位
1 + 8 + 1
如下:

å¨è¿éæå¥å¾çæè¿°
7、實訓
從最底層開始,直接看K線的電平變化吧
截一段設備向ECU發送請求的數據:

è¿éåå¾çæè¿°
**IO[0]:**用作K線通訊發送和接收數據的端口,變化電平高低(1,0)表示數據位的值
T:表示電平持續的時間

一個數據位的時間 = 1/波特率即: 1 / 10416 = 95 ns(約等於)

那就簡單了,把上面電平持續時間時間除以95,可以得出K線的電平變化情況:

è¿éåå¾çæè¿°

單位:一個數據位的時間單位

把每字節的起始位和結束位去掉,可以很容易看出,這個設備發送命令字節間的時間間隔P1,爲4.5ms
所以解析一下電平圖代表的數據實際是:

å¨è¿éæå¥å¾çæè¿°

這邊要怎麼看!!!

0 0000 0001 1 (對於47中的1還有45個)

即是0000 0001

1 1000 1000 1(對於46的1還有45個)

即是1000 1000

0 1000 1111 1 (對於50的1還有45個) 

即是1000 1111

對於0 1000 0000 1(對於46的1還有45個)

得到1000 0000

因爲45/10 = 4.5 所以是4.5ms~

 


注意:數據先從低位開始發送,0000 0001 實際爲 1000 0000 則 0x80

向ECU發送請求的數據爲:0x80,0x11,0xF1,0x01
這段數據是沒實際作用的,因爲原地址後面沒有命令字,沒發實有用的命令

隨便再搞一段ECU返回設備的數據:

è¿éåå¾çæè¿°
電平持續時間時間除以95,可以得出K線的電平變化情況:

å¨è¿éæå¥å¾çæè¿°
可知ECU返回命令字節間的時間間隔P2,爲0ms
同上解析方法,很容易得出實際的數據爲:

å¨è¿éæå¥å¾çæè¿°
ECU返回設備的數據爲:0x81,0xF1,0x11,0x7E
意思:ECU返回鏈路保持

大家對比發來的數據,是不是發現問題,校驗位呢???

實際ECU返回設備的數據是:0x81,0xF1,0x11,0x7E,0x01 ,因爲取的電平圖漏了一字節,還有一個校驗位沒截完…好吧我也懶得從新取數據了,大家知道就好

注意:這兩段電平不是對應的一發一收的,是我取兩條簡單的來解析,所以請求和返回沒對應起來,大家不要誤會

 

 

CAN線導師推薦學習:https://blog.csdn.net/langshi_2011/category_8936756.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章