在理解了CAN總線之後,我們就需要學習UDS協議了。百度一下UDS協議,出現很多的兩個標準是ISO14229,ISO15765。ISO14229就是我們說的UDS診斷協議了,那還有一個ISO15765又是什麼呢?這麼多的標準要把腦袋都搞大了。那我們就從實際的數據包進行分析吧,讓我們知道這兩個協議的對數據包的影響,那我們就很容易的理解這兩個標準了。
首先我們要知道無論是UDS協議還是ISO15765,這兩個都只對幀中的數據域進行定義,相對於對CAN總線的進一步封裝。以下就是CAN總線中的數據域
請求 02 10 02 xx xx xx xx xx
肯定響應 02 50 02 xx xx xx xx xx
否定響應 03 7F 10 22 xx xx xx xx
第一眼看上去,這些字符串很迷茫,不過很容易能夠看出每幀都包含了八字節數據,同時第一個字節表示的是餘下的七個字節中的有效數據。而這個表示方法是通過ISO15765封裝的,而後面的10通過UDS查閱可以知道是診斷會話控制,02則是編程子服務。因此當診斷機想要對控制器進行切換診斷狀態爲編程模式時,應該發送1002數據,然後通過ISO15765封裝成“021002”,最後就發送到CAN總線上。看完這個是不是就很好理解了呢?參考文章
在看完這個的時候,你的腦海裏面就應該產生一個框架了,數據是怎麼產生的?當應用想要讓控制器切換狀態時,然後一層層的封裝數據。接下來的介紹就是從網絡層到應用層再到應用。
那麼接下來就介紹ISO15765了