车载以太网网络测试-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.rhkb.cn/news/38113.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS学习笔记

【1】CSS样式规则 【2】CSS样式表引入方式 1、行内式 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"/><meta name"vi…

医学交互作用分析步骤和目的(R语言)

医学交互作用分析的目的和用途&#xff08;R语言&#xff09; 医学交互作用分析一直是医学数据分析的组成部分&#xff0c;总结最近的一些认识。 目的&#xff1a; 在独立危险因素鉴定的研究中&#xff0c;&#xff08;独立危险因素的&#xff09;交互作用可以作为独立危险因…

『uniapp』简单文本复制文字 富文本内容复制文字(详细图文注释)

目录 text组件错误代码示例成功代码总结 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 text组件 官方文档可知app端用selectable可实现文本选中进而可复制,也就是说text标签内部的文本就可以复制了 https://uniapp.dclou…

C# SolidWorks 二次开发 -各种菜单命令增加方式

今天给大家讲一讲solidworks中各种菜单界面&#xff0c;如下图&#xff0c;大概有13处&#xff0c;也许还不完整哈。 1.CommandManager选项卡2.下拉选项卡3.菜单栏4.下级菜单5.浮动工具栏6.快捷方式工具栏7.FeatureManager工具栏区域8.MontionManager区域 ModelView?9.任务窗…

SAP Commerce(Hybris)PCM模块(一):商品批量导入导出

PCM&#xff08;Product Content Management&#xff09;是一个基于Backoffice&#xff0c;利于管理员直接页面操作的Hybris商品管理模块。 前置准备 在启动Hybris项目后&#xff0c;可以在backoffice控制台选择商品模块 但是&#xff0c;仅仅是以初始化状态启动是不够的&…

Apache Doris

Apache Doris介绍 Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库&#xff0c;以极速易用的特点被人们所熟知&#xff0c;仅需亚秒级响应时间即可返回海量数据下的查询结果&#xff0c;不仅可以支持高并发的点查询场景&#xff0c;也能支持高吞吐的复杂分析场…

go:前后端分离

1.前端代码 新建一个前端文件夹&#xff0c;在该文件夹下新建一个.html文件&#xff0c;写入自己的html代码。 前端搞定。 2.后端代码 其核心是挂载路由接受前端传来的数据核心代码如下&#xff1a; func main() { // 服务运行提示 fmt.Println("go web server is runn…

CUDA 学习(2)——CUDA 介绍

GeForce 256 是英伟达 1999 年开发的第一个 GPU&#xff0c;最初用作显示器上渲染高端图形&#xff0c;只用于像素计算。 在早期&#xff0c;OpenGL 和 DirectX 等图形 API 是与 GPU 唯一的交互方式。后来&#xff0c;人们意识到 GPU 除了用于渲染图形图像外&#xff0c;还可以…

C语言【文件操作】详解中

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

损失函数理解(二)——交叉熵损失

损失函数的目的是为了定量描述不同模型&#xff08;例如神经网络模型和人脑模型&#xff09;的差异。 交叉熵&#xff0c;顾名思义&#xff0c;与熵有关&#xff0c;先把模型换成熵这么一个数值&#xff0c;然后用这个数值比较不同模型之间的差异。 为什么要做这一步转换&…

学习笔记--基于Sa-Token 实现Java项目单点登录+同端互斥检测

目录 同端互斥登录 单点登录SSO 架构选型 模式二: URL重定向传播 前后端分离 整体流程 准备工作 搭建客户端 搭建认证中心SSO Server 环境配置 开放认证接口 启动类 跨域处理 同端互斥登录 同端互斥登陆 模块 同端互斥登录指&#xff1a;同一类型设备上只允许单地…

蓝桥杯 小球反弹

问题描述 有一个长方形&#xff0c;长为 343720 单位长度&#xff0c;宽为 233333 单位长度。 在其内部左上角顶点有一小球&#xff08;无视其体积&#xff09;&#xff0c;其初速度方向如图所示&#xff0c;且保持运动速率不变。分解到长宽两个方向上的速率之比为&#xff1…

PyCharm中使用pip安装PyTorch(从0开始仅需两步)

无需 anaconda&#xff0c;只使用 pip 也可以在 PyCharm 集成环境中配置深度学习 PyTorch。 本文全部信息及示范来自 PyTorch 官网。 以防你是super小白&#xff1a; PyCharm 中的命令是在 Python Console 中运行&#xff0c;界面左下角竖排图标第一个。 1. 安装前置包 numpy …

在刀刃上发力:如何精准把握计划关键节点

关键路径分析是项目管理中的一种重要方法&#xff0c;它通过在甘特图中识别出项目中最长、最关键的路径&#xff0c;来确定项目的最短完成时间。 关键路径上的任务都是项目成功的关键因素&#xff0c;任何延误都可能导致整个项目的延期。关键路径分析对于项目管理者来说至关重要…

Burp Suite 代理配置全流程指南

目录 一、基础环境准备 1.1 安装与启动 1.2 环境变量配置 二、核心代理配置 2.1 Burp 代理监听设置 2.2 浏览器代理配置 Firefox Chrome/Edge 代理插件推荐 三、HTTPS 流量拦截 3.1 证书安装流程 3.2 移动端配置 四、高级功能应用 4.1 流量操作 4.2 HTTP 历史记…

【数据分享】我国乡镇(街道)行政区划数据(免费获取/Shp格式)

行政区划边界矢量数据是我们在各项研究中最常用的数据。之前我们分享过2024年我国省市县行政区划矢量数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff0c;很多小伙伴拿到数据后咨询有没有精细到乡镇&#xff08;街道&#xff09;的行政区划矢量数据&#xff01;…

考研复习之队列

循环队列 队列为满的条件 队列为满的条件需要特殊处理&#xff0c;因为当队列满时&#xff0c;队尾指针的下一个位置应该是队头指针。但是&#xff0c;我们不能直接比较 rear 1 和 front 是否相等&#xff0c;因为 rear 1 可能会超出数组索引的范围。因此&#xff0c;我们需…

如果我没安装office,只安装了wps,python 如何通过win32com.client.Dispatch操作ppt?

文章目录 win32com.client.Dispatch是干嘛的?什么是Windows COM组件COM和dll有关系吗?python 如何通过win32com.client.Dispatch操作ppt?如果我没安装office,只安装了wps,python 如何通过win32com.client.Dispatch操作ppt?附录:完整报错信息win32com.client.Dispatch是干…

介绍一个测试boostrap表格插件的好网站!

最近在开发一个物业管理系统。用到bootstrap的表格插件bootstrap table&#xff0c;官方地址&#xff1a; https://bootstrap-table.com/ 因为是英文界面&#xff0c;对国人不是很友好。后来发现了小书童网站 IT小书童 - 为程序员提供优质教程和文档 网站&#xff1a; IT小…

七、服务器远程桌面报错

&#x1f33b;&#x1f33b;目录&#x1f33b;&#x1f33b; 一、远程桌面报错-用户账户限制&#xff08;例如&#xff0c;时间限制&#xff09;会阻止你登录。 一、远程桌面报错-用户账户限制&#xff08;例如&#xff0c;时间限制&#xff09;会阻止你登录。 原因是被远程的系…