車載以太網網絡測試-21【傳輸層-DOIP協議-4】

目錄

  • 1 摘要
  • 2 DoIP entity status request/response(0x4001、0x4002)
    • 2.1 使用場景
    • 2.2 報文結構
      • 2.2.1 0x4001:DoIP entity status request
      • 2.2.2 0x4002:DoIP entity status response
  • 3 Diagnostic power mode information request/response(0x4003、0x4004)
    • 3.1 使用場景
    • 3.2 報文結構
      • 3.2.1 0x4003:Diagnostic power mode information request
      • 3.2.2 0x4004:Diagnostic power mode information response
  • 4 0x8001-0x8003:Diagnostic Message and Positive/Negetive Acknowledgment
    • 4.1 DOIP診斷報文處理流程
    • 4.2 報文結構
      • 4.2.1 診斷報文(0x8001-Diagnostic Message)
      • 4.2.2 診斷肯定確認報文(0x8002-Diagnostic message positive acknowledgment)
      • 4.2.3 診斷否定響應報文(0x8003-Diagnostic message negative acknowledgment)
  • 5 總結

1 摘要

本文接著對DOIP報文的車輛信息類以及診斷類報文進行介紹。主要從各類報文的使用場景、報文結構以及實例示例等方面進行詳細解析。建議大家回顧上文專題的介紹,有利于系統性學習。
上文回顧:
車載以太網網絡測試-20【傳輸層-DOIP協議-3】

2 DoIP entity status request/response(0x4001、0x4002)

2.1 使用場景

  1. 查詢DoIP實體的狀態
    該報文用于向目標DoIP實體(如車輛中的ECU)請求其當前的狀態信息。狀態信息可能包括DoIP實體的活動狀態、網絡配置、診斷能力等。

  2. 診斷系統監控
    診斷工具或測試設備可以通過發送DoIP entity status request報文,監控車輛中各個DoIP實體的運行狀態,確保它們正常工作。

  3. 故障排查
    當診斷系統出現通信問題時,可以通過發送該報文檢查目標DoIP實體的狀態,幫助排查問題。

  4. 支持動態配置
    在診斷過程中,診斷工具可能需要動態獲取DoIP實體的狀態信息,以調整通信參數或診斷策略。

  • 應用場景
    • 車輛診斷過程中,診斷工具需要檢查某個ECU的DoIP狀態。
    • 在車輛啟動或網絡初始化時,診斷系統需要確認所有DoIP實體的狀態。
    • 在通信故障時,診斷工具需要檢查目標DoIP實體的狀態以定位問題。

通過DoIP entity status request報文,診斷系統可以高效地獲取DoIP實體的狀態信息,確保診斷通信的可靠性和穩定性。

2.2 報文結構

2.2.1 0x4001:DoIP entity status request

在這里插入圖片描述
DoIP entity status request 報文的 Payload Type 為 0x0004,且沒有有效載荷(Payload Length 為 0x00000000)。因此,其幀結構如下:

字段描述
Protocol Version0x02DoIP 協議版本。
Inverse Version0xFD協議版本的反碼。
Payload Type0x0004報文類型,表示 DoIP entity status request。
Payload Length0x00000000有效載荷長度為 0。
Payload無有效載荷。

一個完整的 DoIP entity status request 報文的十六進制表示如下:

02 FD 00 04 00 00 00 00

2.2.2 0x4002:DoIP entity status response

該報文是DoIP entity status request的響應報文,DoIP節點用該響應報文來向診斷設備發送狀態信息。報文的數據段定義如下:
在這里插入圖片描述
DoIP實體狀態請求和應答報文通過UDP報文實現。

  • Node Type (1 byte)
    • 節點類型,表示實體的類型(如0x00表示未定義,0x01表示DoIP網關,0x02表示DoIP節點等)。
  • Max Concurrent TCP Data Connections (1 byte)
    • 最大并發TCP數據連接數,也即是最多允許同時多少個TCP的連接存在。
  • Currently Open TCP Data Connections (1 byte)
    • 當前打開的TCP數據連接數。
  • Max Data Size (4 bytes)
    • 最大數據大小(以字節為單位),DoIP實體在一次邏輯請求中能夠處理的最大數據量。

如下圖所示:
在這里插入圖片描述

3 Diagnostic power mode information request/response(0x4003、0x4004)

3.1 使用場景

在 DoIP 協議中,Diagnostic power mode information request/response 是用于獲取或設置車輛電源模式信息的診斷服務。

  1. Diagnostic power mode information request (0x4003)

    • 作用:客戶端(如診斷工具)使用此請求向車輛電子控制單元(ECU)查詢當前的電源模式狀態。
    • 使用場景:在診斷過程中,診斷工具可能需要了解車輛的電源模式(如點火狀態、休眠狀態等),以便執行適當的診斷操作。
    • 數據格式:通常是一個簡單的請求報文,不包含額外的數據參數
  2. Diagnostic power mode information response (0x4004)

  • 作用:ECU 對 Diagnostic power mode information request 的響應,返回當前車輛的電源模式信息。
  • 數據內容:響應報文通常包含以下信息:
    • 電源模式狀態:如“點火開關打開”、“點火開關關閉”、“休眠模式”等。
    • 其他相關信息:如電源模式的轉換狀態或時間戳等(具體取決于實現)。
  • 使用場景:診斷工具根據返回的電源模式信息,決定下一步的診斷操作。例如,如果車輛處于休眠模式,診斷工具可能需要先喚醒車輛。
  1. 電源模式的意義
    車輛的電源模式是診斷通信的重要參數,因為它直接影響診斷操作的可行性和安全性。例如:
    • 在點火開關關閉的情況下,某些 ECU 可能無法響應診斷請求。
    • 在休眠模式下,車輛可能處于低功耗狀態,診斷工具需要發送喚醒信號才能進行通信。

3.2 報文結構

3.2.1 0x4003:Diagnostic power mode information request

在這里插入圖片描述
該報文可以被診斷設備用來請求DoIP節點的電源模式信息,報文數據段沒有數據

3.2.2 0x4004:Diagnostic power mode information response

該報文是Diagnostic power mode information request的響應報文。報文的數據段定義如下:

在這里插入圖片描述
示例如下圖:
在這里插入圖片描述

4 0x8001-0x8003:Diagnostic Message and Positive/Negetive Acknowledgment

0x8001到0x8003是用于診斷報文和確認的報文類型。

4.1 DOIP診斷報文處理流程

  • DoIP遵循如下流程:
  1. 診斷設備發送一條診斷請求(0x8001-Diagnostic Message),該請求報文中包含有UDS診斷數據(DOIP報文的Payload);
  2. DoIP節點收到后先對DoIP幀頭、診斷數據長度等做判斷,先返回一個DoIP層(傳輸層)的響應,如果各個條件都滿足,則返回肯定響應(0x8002-Diagnostic message positive acknowledgment),否則返回否定響應(0x8003-Diagnostic message negative acknowledgment)。
  3. 當DoIP節點的DOIP傳輸層返回肯定響應后,再將診斷請求報文中包含的UDS診斷數據上報給UDS應用程序(應用層)進行處理,處理完成后,**不論是UDS肯定響應還是UDS否定響應,都用診斷報文(0x8001-Diagnostic Message)**將UDS診斷響應數據發送給診斷設備。

4.2 報文結構

4.2.1 診斷報文(0x8001-Diagnostic Message)

  • 用于發送診斷請求或響應消息。診斷請求通常由診斷客戶端(如診斷工具)發送,診斷響應由診斷服務器(如車輛ECU)返回。
  • 典型場景包括讀取故障碼、讀取傳感器數據、執行診斷例程等。
字段長度 (字節)描述
Source Address(SA)2發送診斷報文的源地址(通常是測試設備的地址)。
Target Address(TA)2接收診斷報文的目標地址(通常是ECU的地址)。
User Data(UD)可變實際的診斷數據(如 UDS 請求或響應)。

以下是一條包含UDS診斷請求數據的DoIP診斷報文示例:
在這里插入圖片描述
說明:

  • 診斷請求報文:
  協議版本:02協議版本取反:FDPayload type:8001(診斷報文)Payload Length:00 00 00 06源邏輯地址:0E 80(診斷設備邏輯地址)目標邏輯地址:10 21(DOIP節點邏輯地址)UDS數據:3E 00(請求UDS的3E服務)
  • 診斷肯定響應
  協議版本:02協議版本取反:FDPayload type:8002(診斷肯定確認報文)Payload Length:00 00 00 05源邏輯地址:10 21目標邏輯地址:0E 80UDS數據:00(診斷請求報文爭取被處理)
  • 診斷響應響應
  協議版本:02協議版本取反:FDPayload type:8001(診斷報文)Payload Length:00 00 00 06源邏輯地址:10 21(DOIP節點邏輯地址)目標邏輯地址:0E 80(診斷設備邏輯地址)UDS數據:7E 00(肯定響應UDS的3E服務)

4.2.2 診斷肯定確認報文(0x8002-Diagnostic message positive acknowledgment)

  • 用于確認成功接收到診斷消息。例如,當診斷服務器成功接收到診斷請求后,可以發送一個Positive Acknowledgment作為確認。
  • 這種確認通常用于確保消息的可靠傳輸。

在這里插入圖片描述

  • SA以及TA:和上文一致,為源和目標邏輯地址;
  • ACK code:包含診斷報文的肯定確認碼;
  • Previous diagnostic message data:用于攜帶先前發送的診斷消息的相關數據。它通常包含了導致當前錯誤響應的原始診斷消息的內容或部分內容。這個參數的存在有助于診斷系統或測試工具識別和定位問題的根源。

對于診斷肯定確認報文的ACK code應置為0x00,具體定義如下:
在這里插入圖片描述

  • 備注:
    0x00:路由確認(ACK)報文,表示診斷報文已正確接收、處理并放入目標網絡的傳輸緩沖區。
    每個DoIP實體應在正確處理診斷報文并將其復制到目標網絡傳輸緩沖區后,立即發送診斷消息的肯定確認(ACK),并將ACK代碼設置為0x00(參見表29)。

4.2.3 診斷否定響應報文(0x8003-Diagnostic message negative acknowledgment)

  • 用于指示接收到的診斷報文存在問題,例如格式錯誤、不支持的功能等。
  • 當診斷服務器無法處理接收到的診斷請求時,會發送Negative Acknowledgment,并附帶錯誤原因。

在這里插入圖片描述
與肯定響應報文的區別就是響應碼變成了否定響應碼,用來指示否定響應的原因,定義如下:
在這里插入圖片描述

  1. 示例1:(無效的SA地址NACK為0x02)
    建立TCP連接且路由激活后,使用無效的SA地址發送診斷請求,DoIP實體返回NACK為0x02的否定響應報文,并主動斷開TCP連接(ISO 13400-2 強制要求)
    在這里插入圖片描述
  2. 示例2:診斷否定報文示例(目的邏輯地址無效NACK為0x03)
    建立TCP連接且路由激活后,使用無效的TA地址發送診斷請求,DoIP實體返回NACK為0x03的否定響應報文(無需斷開TCP連接)
    在這里插入圖片描述

5 總結

上文對DOIP協議定義的車輛信息類以及診斷類報文進行了介紹,主要包含各類報文的使用場景、報文結構以及實例示例。希望能對大家學習DOIP協議有所幫助!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73095.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73095.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73095.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CH347使用筆記:CH347結合STM32CubeIDE實現單片機下載與調試

目錄 基于 STM32CubeIDE的 CH347 JTAG/SWD調試器使用說明1. CH347驅動安裝與配置2. STM32CubeIDE調試器配置2.1 打開相關工程后,進行以下操作2.2 openocd.exe替換2.3 腳本添加2.4 更改調試器選擇 3. 下載程序4. 使用過程中可能遇到的問題4.1 CH347未插入4.2 Openocd…

LVGL常用功能備忘

概述 本文選用LVGL 8.3版本 8.3版本實測幀率比起9版本高,多個GUI工具支持 相關鏈接 LVGL官網 https://lvgl.io/ LVGL 文檔 https://docs.lvgl.io/8.3/ LVGL倉庫 https://github.com/lvgl LVGL移植 獲取源碼 https://github.com/lvgl/lvgl/tree/release/v8.3 下載文件即可 文件…

k8s搭建kube-prometheus

后續再補一個k8s集群搭建的博客,從0開始搭建k8s集群。使用kube-prometheus非常方便,主要問題只在于拉取鏡像。除了拉取鏡像外其他時間5分鐘即可。耐心等待拉取鏡像。 一.kube-prometheus簡介 kube-prometheus 是一個專為 Kubernetes 設計的開源監控解決…

uni-app——數據緩存API

數據緩存API 在 uni-app 開發中,數據緩存 API 起著重要作用,它能夠將需要的數據保存到本地,同時也提供了獲取本地緩存數據、移除緩存數據以及清理緩存數據的功能。在實際項目里,數據緩存 API 常被用于存儲會員登錄狀態信息、購物…

突破時空邊界:Java實時流處理中窗口操作與時間語義的深度重構

一、流處理范式的革命性演進 在數字化浪潮的推動下,數據處理范式正經歷著從批量到實時的根本性轉變。這種轉變不僅改變了數據處理的時效性特征,更重新定義了時間維度在計算模型中的戰略地位。Apache Flink的統計數據顯示,現代流處理系統每秒…

【2025 深圳大學-騰訊云程序設計競賽(熱身賽)】題解

比賽鏈接 A. Cloud Studio的共享連接 題目大意 && Solution 給定 T T T 組長度均為 12 12 12 的字符串 s s s。 對每個 s s s,將其按從左到右的順序兩兩分組形成 6 6 6 個 A S C I I \rm{ASCII} ASCII 碼,對這 6 6 6 個 A S C I I \…

APScheduler - 用戶指南

本文翻譯整理自:https://apscheduler.readthedocs.io/en/3.x/userguide.html 文章目錄 一、安裝 APScheduler二、代碼示例三、基本概念四、選擇合適的 scheduler, job store(s), executor(s) and trigger(s)五、配置調度器方法 1:方法 2:方法 3: 六、啟動調度器七、…

vue3:十一、主頁面布局(優化頁面跳轉方式)

:router"true" 一、參考文章 vue3:十一、主頁面布局(實現基本左側菜單右側內容效果)-CSDN博客 參考上述文章可知,頁面跳轉是通過在js中定義的菜單中攜帶的path,然后通過菜單的點擊事件完成的跳轉,現在可以進行優化,直…

每日一題--C與C++的差別

C與C的差別 1. 編程范式 C 純 過程式編程語言,強調函數和結構化編程。 代碼通過函數和順序步驟組織,適合底層系統開發。 C 支持 多范式編程: 過程式編程 面向對象編程(OOP)(類、繼承、多態) …

Etcd 服務搭建

💢歡迎來到張胤塵的開源技術站 💥開源如江河,匯聚眾志成。代碼似星辰,照亮行征程。開源精神長,傳承永不忘。攜手共前行,未來更輝煌💥 文章目錄 Etcd 服務搭建預編譯的二進制文件安裝下載 etcd 的…

玩轉C#函數:參數、返回值與游戲中的攻擊邏輯封裝

Langchain系列文章目錄 01-玩轉LangChain:從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊:四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain:從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

WebRTC建立Description的通信的實際的原理

一、正確流程的核心邏輯 // 發送端正確代碼示例 const senderPC new RTCPeerConnection();// 生成Offer時立即開始收集候選 ? senderPC.createOffer().then(offer > {await senderPC.setLocalDescription(offer); // 觸發icecandidate事件sendToReceiver(offer); });// …

EmbodiedSAM:在線實時3D實例分割,利用視覺基礎模型實現高效場景理解

2025-02-12,由清華大學和南洋理工大學的研究團隊開發 一種名為 EmbodiedSAM(ESAM)的在線3D實例分割框架。該框架利用2D視覺基礎模型輔助實時3D場景理解,解決了高質量3D數據稀缺的難題,為機器人導航、操作等任務提供了高…

信創-人大金倉數據庫創建

一. 官文 資源下載地址 https://download.kingbase.com.cn/xzzx/index.htm 下載安裝文件 下載授權文件 產品文檔地址:https://help.kingbase.com.cn/v8/index.html 二. 概念 2.1 體系結構 ? 實例結構 ?:由數據庫文件和 KingbaseES 實例組成。數據…

C++第三種異質集合 std::any方式實現

#include <type_traits> #include <any> #include <functional> #include <iomanip> #include <iostream> #include <typeindex> #include <typeinfo> #include <unordered_map> #include <vector> //any是編譯期的異質…

Springboot實現使用斷點續傳優化同步導入Excel

springboot實現使用斷點續傳優化同步導入Excel 需求前言斷點續傳前端實現后端實現完結撒花&#xff0c;如有需要收藏的看官&#xff0c;順便也用發財的小手點點贊哈&#xff0c;如有錯漏&#xff0c;也歡迎各位在評論區評論&#xff01; 需求前言 在跨境電商系統中&#xff0c…

mysql 對json的處理?

MySQL從5.7版本開始支持JSON數據類型&#xff0c;并提供了多種函數來查詢和處理JSON數據。以下是一些基本的操作和函數&#xff1a; 創建包含JSON列的表&#xff1a; 可以直接在表定義中指定某列為JSON類型。 CREATE TABLE my_table (id INT NOT NULL AUTO_INCREMENT,data JSON…

Nexus L2 L3基本配置

接口基本配置 N7K上所有端口默認處于shutdown狀態; N5K上所有端口默認處于no shutdown狀態(所有端口都是switchport) 默認所有接口都是三層route模式, 只有當線卡不支持三層的時候, 接口才會處于二層switchport模式 show run all | in “system default” 創建SVI口需要提前打…

HCIA-AI人工智能筆記3:數據預處理

統講解數據預處理的核心技術體系&#xff0c;通過Python/Pandas與華為MindSpore雙視角代碼演示&#xff0c;結合特征工程優化實驗&#xff0c;深入解析數據清洗、標準化、增強等關鍵環節。 一、數據預處理技術全景圖 graph TD A[原始數據] --> B{數據清洗} B --> B1[缺…

G-Star 校園開發者計劃·黑科大|開源第一課之 Git 入門

萬事開源先修 Git。Git 是當下主流的分布式版本控制工具&#xff0c;在軟件開發、文檔管理等方面用處極大。它能自動記錄文件改動&#xff0c;簡化合并流程&#xff0c;還特別適合多人協作開發。學會 Git&#xff0c;就相當于掌握了一把通往開源世界的鑰匙&#xff0c;以后參與…