當前位置:網站首頁>UDS-如何在CAPL中實現診斷服務的請求和響應

UDS-如何在CAPL中實現診斷服務的請求和響應

2022-05-15 00:37:15jasonj33

在以太網中,如果想實現雙方通信,簡單點可以把數據傳給socket對象,然後調用函數send(),把數據發出去,這樣協議棧會自行進行封裝、連接、分片、傳送、接收、解封裝、獲取數據、回複等操作;複雜點可以自定義一個報文,從數據鏈路層、網絡層到傳輸層頭部都需要自己定義,然後通過網卡發出去。對於診斷來說也一樣,由於診斷服務屬於應用層,下面就是網絡層,你既可以在網絡層定義CAN報文實現診斷請求和響應,也可以在應用層通過某個接口來實現診斷請求和響應

CAN報文實現診斷服務

診斷數據,映射到網絡層後,報文結構是什麼樣的,首先需要知道這個,才能把診斷數據組裝成一條CAN報文

如果你還不了解UDS的四層結構,請閱讀文章《UDS-網絡層和數據鏈路層》

網絡層的標准幀是8個byte,診斷服務根據請求數據的大小,也需要在網絡層决定是否進行分片,由此又分為單幀和多幀,這是不是和以太網相似,以太網由於網絡接口的的最大值限制(MTU),也是需要在網絡層進行分片

單幀

一條CAN報文標准長度是8個字節,對於以診斷數據為payload的單幀報文來說,第一個字節錶示診斷數據的長度,所以診斷數據只能有7個字節,這是對於單幀來說的

我們拿請求ECU擴展診斷模式為例,完整的診斷請求應該 10 03,由於它只有兩個字節,可以用單幀來錶示,映射到網絡層後,完整的CAN報文是:02 10 03 ** ** ** ** **(報文字節數不足的用某個固定值錶示)

確定完C

版權聲明
本文為[jasonj33]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/135/202205142000048754.html

隨機推薦