车载以太网网络测试-21【传输层-DOIP协议-4】

news2025/3/24 18:37:35

目录

  • 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
  协议版本取反:FD
  Payload type:8001(诊断报文)
  Payload Length:00 00 00 06
  源逻辑地址:0E 80(诊断设备逻辑地址)
  目标逻辑地址:10 21(DOIP节点逻辑地址)
  UDS数据:3E 00(请求UDS的3E服务)
  • 诊断肯定响应
  协议版本:02
  协议版本取反:FD
  Payload type:8002(诊断肯定确认报文)
  Payload Length:00 00 00 05
  源逻辑地址:10 21
  目标逻辑地址:0E 80
  UDS数据:00(诊断请求报文争取被处理)
  • 诊断响应响应
  协议版本:02
  协议版本取反:FD
  Payload 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.coloradmin.cn/o/2320296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring AI Alibaba ChatModel使用

一、对话模型(Chat Model)简介 1、对话模型(Chat Model) 对话模型(Chat Model)接收一系列消息(Message)作为输入,与模型 LLM 服务进行交互,并接收返回的聊天…

基于FPGA频率、幅度、相位可调的任意函数发生器(DDS)实现

基于FPGA实现频率、幅度、相位可调的DDS 1 摘要 直接数字合成器( DDS ) 是一种通过生成数字形式的时变信号并进行数模转换来产生模拟波形(通常为正弦波)的方法,它通过数字方式直接合成信号,而不是通过模拟信号生成技术。DDS主要被应用于信号生成、通信系统中的本振、函…

k8s高可用集群安装

一、安装负载均衡器 k8s负载均衡器 官方指南 1、准备三台机器 节点名称IPmaster-1192.168.1.11master-2192.168.1.12master-3192.168.1.13 2、在这三台机器分别安装haproxy和keepalived作为负载均衡器 # 安装haproxy sudo dnf install haproxy -y# 安装Keepalived sudo yum …

3DMAX曲线生成器插件CurveGenerator使用方法

1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具,用户可以通过简单的UI界面输入参数,快速生成多条样条线。每条样条线的高度值随机生成,且可以自定义以下参数: 顶点数量:每条…

六十天前端强化训练之第二十六天之Vue Router 动态路由参数大师级详解

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、知识讲解 1. Vue Router 核心概念 2. 动态路由参数原理 3. 参数传递方案对比 二、核心代码示例 1. 完整路由配置 2. 参数接收组件 3. 导航操作示例 三、实现效果示…

Model Context Protocol:下一代AI系统集成范式革命

在2023年全球AI工程化报告中,开发者面临的核心痛点排名前三的分别是:模型与业务系统集成复杂度(58%)、上下文管理碎片化(42%)、工具调用标准化缺失(37%)。传统API集成模式在对接大语言模型时暴露明显短板:RESTful接口无法承载动态上下文,GraphQL缺乏工具编排能力,gR…

Java多线程与高并发专题——Future 是什么?

引入 在上一篇Callable 和 Runnable 的不同?的最后,我们有提到和 Callable 配合的有一个 Future 类,通过 Future 可以了解任务执行情况,或者取消任务的执行,还可获取任务执行的结果,这些功能都是 Runnable…

DeepSeek本地搭建

1. 软件下载安装 Miniconda Miniconda下载地址 选择对应的版本下载,此处下载如下版本 Python 3.10 conda 25.1.1 安装完成后,配置环境变量,打开cmd命令窗口验证 Python Python的版本为 3.10 PyTorch PyTorch下载地址 后面通过命令下…

维普AIGC降重方法有哪些?

在学术写作和论文创作中,重复率过高是许多人面临的一大难题。随着科技的发展,维普 AIGC 为我们提供了一系列有效的降重方法。那么,维普AIGC降重方法有哪些呢?接下来就为大家详细介绍。 语义理解与改写 维普 AIGC 具备强大的语义理…

南京审计大学:《 面向工程审计行业的DeepSeek大模型应用指南》.pdf(免费下载)

大家好,我是吾鳴。 今天吾鳴要给大家分享的是由南京审计大学出品的《面向工程审计行业的DeepSeek大模型应用指南》,这份报告与《面向审计行业DeepSeek大模型操作指南》不同,这份报告更多的讲述DeepSeek怎么与工程审计行业结合,应该…

【前端】Canvas画布实现在线的唇膏换色功能

【前端】Canvas画布实现在线的唇膏换色功能 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 【前端】Canvas画布实现在线的唇膏换色功能背景概述以下是我们的实现方法!第一步 — 找…

arcgispro加载在线地图

World_Imagery (MapServer)https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer添加arcgis server WMTS 服务 by xdcxdc.at xdc的个人站点。博客请转至 http://i.xdc.at/ http://xdc.at/map/wmts 添加WMTS服务器

华为网路设备学习-16 虚拟路由器冗余协议(VRRP)

VRRP是针对干线上三层网络设备(如:路由器、防火墙等)的网络虚拟化技术,提供冗余和状态监测等功能。确保在网络中的单点故障发生时,能够快速切换到备份设备,从而保证网络通信的连续性和可靠性。‌ VRRP通过…

封装一个分割线组件

最终样式 Vue2代码 <template><div class"sep-line"><div class"sep-label"><span class"sep-box-text"><slot>{{ title }}</slot> <!-- 默认插槽内容&#xff0c;如果没有传递内容则使用title -->&…

网络HTTPS协议

Https HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是 HTTP 协议的加密版本&#xff0c;它使用 SSL/TLS 协议来加密客户端和服务器之间的通信。具体来说&#xff1a; • 加密通信&#xff1a;在用户请求访问一个 HTTPS 网站时&#xff0c;客户端&#x…

OSASIS(One-Shot Structure-Aware Stylized Image Synthesis)

文章目录 摘要abstract论文摘要方法损失函数实验结论 总结 摘要 本周阅读了一篇关于新型图像风格化的论文《One-Shot Structure-Aware Stylized Image Synthesis》&#xff0c;旨在解决现有GAN模型在风格化过程中难以保持输入图像结构的问题。通过分离图像的结构和语义信息&am…

C++学习之网盘项目单例模式

目录 1.知识点概述 2.单例介绍 3.单例饿汉模式 4.饿汉模式四个版本 5.单例类的使用 6.关于token的作用和存储 7.样式表使用方法 8.qss文件中选择器介绍 9.qss文件样式讲解和测试 10.qss美化登录界面补充 11.QHTTPMULTIPART类的使用 12.文件上传协议 13.文件上传协议…

Apache Flink技术原理深入解析:任务执行流程全景图

前言 本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 思维导图 📌 引言 Apache Flink 作为一款高性能的分布式流处理引擎,其内部执行机制精妙而复杂。本文将…

RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”与“陷阱”

嘿&#xff0c;亲爱的算法工程师们&#xff01;今天咱们聊一聊PDF解析的那些事儿&#xff0c;简直就像是在玩一场“信息捉迷藏”游戏&#xff01;PDF文档就像是个调皮的小精灵&#xff0c;表面上看起来规规矩矩&#xff0c;但当你想要从它那里提取信息时&#xff0c;它就开始跟…

C语言【文件操作】详解中(会使用fgetc,fputc,fgets,fputs,fscanf,fprintf,fread,fwrite函数)

引言 介绍和文件操作中文件的顺序读写相关的函数 看这篇博文前&#xff0c;希望您先仔细看一下这篇博文&#xff0c;理解一下文件指针和流的概念&#xff1a;C语言【文件操作】详解上-CSDN博客文章浏览阅读606次&#xff0c;点赞26次&#xff0c;收藏4次。先整体认识一下文件是…