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

1 摘要

本文继续对ISO 13400-2定义的节点管理报文进行介绍,主要对路由激活请求/响应报文以及在线检查请求/响应报文的作用、帧结构以及示例进行介绍。
上文回顾:
车载以太网网络测试-19【传输层-DOIP协议-2】
在进行详细介绍之前,还是先回顾一下DOIP诊断通信流程的示意图,如下图:
原文链接:
车载网络测试-DOIP诊断通信流程分析
DOIP诊断通信流程示意图

2 0x0005:Routing activation request报文

在车辆发现阶段结束后,外部诊断仪已经知道了对哪台车以及哪个DoIP节点进行诊断,也获取了必要的信息,这时就需要发送路由激活请求报文,在诊断设备和被诊断的DoIP节点间建立起TCP连接,以便于发送诊断数据(诊断报文都是用TCP来发送的)。

2.1 Routing activation request报文的作用

DOIP(Diagnostics over Internet Protocol)协议中的 Routing Activation Request 报文是用于在车辆诊断通信中激活诊断通信路径的重要报文。
它的主要作用如下:

  • 激活通信路径:
    在DOIP协议中,诊断通信的双方(如诊断工具和车辆ECU)需要建立一个逻辑连接,才能进行后续的诊断数据传输。
    Routing Activation Request 报文用于请求激活某个特定的通信路径,使诊断工具能够与目标ECU建立连接。

  • 工作流程:

    • 诊断工具向目标ECU发送 Routing Activation Request 报文。
    • 目标ECU接收到请求后,检查自身状态和请求参数。
    • 如果请求有效,ECU会回复 Routing Activation Response 报文,确认通信路径已激活。
    • 诊断工具收到确认后,即可开始发送诊断请求(如读取故障码、写入数据等)。

Routing Activation Request 报文是DOIP协议中用于建立诊断通信连接的关键报文。它确保了诊断工具与目标ECU之间的通信路径被正确激活,为后续的诊断操作提供了基础。

2.2 Routing Activation Request 报文帧结构

报文的数据格式如下:
DOIP协议的Routing Activation Request报文帧结构如下:

字段长度(字节)描述
Source Address(SA)2发送方的逻辑地址
Activation Type1激活类型,表示请求的路由激活类型
Reserved by this document4保留字段,通常为 0x00000000
Reserved for VM-specific use4保留字段,通常为 0x00000000

数据共11字节,包含以下内容:
1.源地址(SourceAddress):
外部诊断设备的逻辑地址。这个逻辑地址用于对某个特定的DoIP节点进行寻址,与UDSonCAN中的CAN ID是类似的概念,是在网络架构设计阶段就分配好的。

标准中的范围划分如下图所示:
在这里插入图片描述
其中:

  • 红色框内的范围用于诊断设备的逻辑地址,0x0E00-0x0E7F用于OBD诊断,0x0E80-0x0EFF用于增强型诊断。
  • 蓝色框内的逻辑地址用于DoIP节点,与UDSonCAN类似,节点的逻辑地址有两个,一个是物理逻辑地址,在0x0001-0x0DFF或0x1000-0x7FFF范围内,另一个是功能寻址,是0xE000。

2. 激活类型(activation type)
用于诊断设备通知被诊断DoIP节点进入哪种类型的诊断状态。定义如下:
在这里插入图片描述

  • 表示请求的路由激活类型,常见的值包括:
    • 0x00:默认激活类型,用于常规诊断通信。
    • 0x01:用于全球统一的车辆诊断(World Wide Harmonized On-Board Diagnostics)。
    • 0xE0:用于中央安全相关的诊断通信。

2.3示例报文

流程如下图所示,先与DoIP实体通过TCP建立连接:
在这里插入图片描述

然后测试仪发送负载类型为0x0005的路由激活请求,Doip实体响应负载类型为0x0006的激活响应报文。
在这里插入图片描述

3 0x0006:Routing activation response报文

3.1 Routing activation response报文的作用

在DoIP协议中,Routing activation response报文的作用是确认诊断请求的激活状态。
具体来说,Routing activation response报文的作用包括:

  1. 确认激活请求:当诊断工具发送Routing activation request报文请求激活某个通信通道时,车辆中的DoIP实体(如ECU)会通过Routing activation response报文来确认该请求是否成功。

  2. 返回激活状态:Routing activation response报文中包含一个状态码,用于指示激活请求的结果。例如,状态码可以表示成功激活、激活失败或激活被拒绝等。

  3. 提供附加信息:除了状态码外,Routing activation response报文还可能包含其他相关信息,如激活的通信通道的详细信息或错误描述。

  4. 确保通信准备就绪:通过发送Routing activation response报文,车辆中的DoIP实体通知诊断工具通信通道已准备好进行后续的诊断数据传输。

总结来说,Routing activation response报文的主要作用是确认诊断请求的激活状态,并确保诊断工具和车辆之间的通信通道已成功建立,为后续的诊断数据传输做好准备。

3.2 Routing activation response报文帧结构

路由激活响应报文主要是对上面路由激活请求报文的响应,的数据格式如下:
在这里插入图片描述
响应中的参数定义如下:

  1. 诊断设备逻辑地址(Logical address of the external test equipment):诊断仪的逻辑地址。
  2. DoIP节点逻辑地址(Logical address of the responding DoIP entity):DoIP节点物理逻辑地址。

在这里插入图片描述
ISO 13400-2 是诊断通信标准的一部分,主要涉及基于IP的诊断通信(DoIP,Diagnostics over Internet Protocol)。在DoIP协议中,路由激活响应码(Routing Activation Response Code)是一个关键参数,用于指示路由激活请求的处理结果。

  1. 路由激活响应码(Routing activation response code):1字节,它由DoIP实体(如车辆中的DoIP网关或ECU)发送,以告知请求方(如诊断工具)路由激活请求的处理状态。它确保了诊断通信的可靠性和高效性,并提供了明确的错误处理机制。通过理解和使用路由激活响应码,诊断工具可以更好地管理与车辆ECU的通信。比如:用来表示TCP连接建立是否成功,以及不成功的原因。
    定义如下表所示,Required Action栏展示了DoIP节点在返回响应后应该采取的操作。
    在这里插入图片描述
  2. 其余字段为预留或自定义字段,不常用。

3.3 常见Routing activation response code示例

  1. 路由激活成功(10)
    在这里插入图片描述
  2. 不支持的SA地址(0x00)
    如下图, 0x0101是DoIP实体不支持的SA地址,所以DoIP实体响应了0x00 状态码。
    在这里插入图片描述
  3. 已经激活的TCP连接上使用不同的SA地址(0x02)
    如下图,在已经激活的TCP连接上,使用了不同的SA地主,DoIP实体报0x02状态码
    在这里插入图片描述
  4. 不同的TCP连接上使用相同的SA地址(0x03)
    如下图,在不同的TCP连接上,不可以使用相同的SA地址,否则Doip实体报0x03状态码
    在这里插入图片描述

4 0x0007:Alive check request与0x0008:Alive check response报文

在ISO 13400-2标准中,0x0007:Alive Check Request 报文用于诊断通信中的连接保持机制。它的主要作用是确认通信双方(客户端与服务器)之间的连接是否仍然活跃

4.1 Alive check request与Alive check response报文作用

  1. 检测连接状态
    客户端(如诊断工具)向服务器(如车辆ECU)发送Alive Check Request报文,以确认服务器是否仍然在线并能够响应请求。

  2. 保持会话活跃
    在某些诊断协议中,会话可能会因为长时间无通信而超时关闭。通过定期发送Alive Check Request报文,可以防止会话超时,保持会话的活跃状态。

  3. 网络健康检查
    通过发送Alive Check Request报文,可以检测网络通信是否正常,是否存在丢包或延迟等问题。

应用场景

  • 在长时间诊断过程中,定期发送Alive Check Request以保持会话。
  • 在网络通信不稳定时,检测连接是否正常。
  • 在测试或调试过程中,验证诊断通信的可靠性。

不携带DoIP数据,报文中只有DoIP报头。
在这里插入图片描述

4.2 Alive check request与Alive check response报文示例

前提:已经建立了TCP连接,测试仪再次发送路由激活请求的时候,DoIP实体才会发出在线检测请求报文。

  • 情况1:
    如下图日志,在第二次TCP连接后,发送路由激活请求后,DoIP实体发送负载类型为0x0007的在线检测报文,这里测试仪给了逻辑地址为0x0008的响应报文,并且Soure address参数为0E80,告诉DoIP实体,SA地址为0E80的诊断仪仍然在线。
    在这里插入图片描述
  • 情况2:
    Doip实体发出在线检测报文后,诊断设备没有在超时时间(T_TCP_Alive_Check )内给出响应,Doip节点会主动断开TCP连接,并且给出路由激活肯定响应报文。
    注意,TCP断开连接的端口是第一次TCP连接时的端口。
    在这里插入图片描述

4.3 0x0008:Alive check response

诊断设备收到DoIP节点Alive check request报文后,发送Alive check response报文,数据中携带两字节的诊断设备逻辑地址:
在这里插入图片描述
在这里插入图片描述

此外,诊断设备也可以在没有收到请求报文的情况下向DoIP节点发送该响应报文,以通知DoIP节点诊断设备仍然在线,类似于CAN总线的3E 00/80报文。

5 总结

上个专题与本文对ISO 13400-2定义的所有节点管理报文的作用、帧结构以及示例进行了详细介绍。希望能对大家理解DOIP协议所有帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898642.shtml

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

相关文章

Jvm运行时数据区有哪些

Jvm运行时数据区有哪些 程序计数器(Program Counter Register) 作用: 可以看作是当前线程所执行的字节码的行号指示器。在多线程环境下,每个线程都有自己独立的程序计数器,线程私有的,用于记录该线程正在执…

Compose 实践与探索十五 —— 自定义触摸

1、自定义触摸与一维滑动监测 之前我们在讲 Modifier 时讲过如下与手势检测相关的 Modifier: Modifier.clickable { } Modifier.combinedClickable { } Modifier.pointerInput {detectTapGestures { } }这里对以上内容就不再赘述了,直接去讲解更复杂的…

Python 中有哪些库可以帮助读取和操作 shapefile 文件?

Python操作Shapefile文件库推荐 1. PyShp (pyshp) 特点:纯Python实现,无外部依赖,轻量级,支持完整的Shapefile格式(shp、dbf、shx)读写。适用场景:基础读写、简单几何操作、文件格式转换。安装…

JSONPath 的介绍

JSONPath的起源 1. 起源背景 在讨论JSONPath的起源之前,让我们先了解JSONPath是什么。JSONPath 是一种查询语言,用于从JSON(JavaScript Object Notation)数据结构中提取数据。它允许开发者通过类似于XPath的表达式来定位JSON对象…

【CSS文字渐变动画】

CSS文字渐变动画 HTML代码CSS代码效果图 HTML代码 <div class"title"><h1>今天是春分</h1><p>正是春天到来的日子&#xff0c;花都开了&#xff0c;小鸟也飞回来了&#xff0c;大山也绿了起来&#xff0c;空气也有点嫩嫩的气息了</p>…

Bitcoin Thunderbolt 内测通道开启,加速比特币交易新时代

比特币作为全球领先的加密货币&#xff0c;一直占据着去中心化金融的核心地位。然而&#xff0c;随着比特币生态的不断扩展&#xff0c;其交易速度和扩容问题逐渐成为制约发展的关键瓶颈。为解决这一难题&#xff0c; 比特币雷电网络&#xff08;Bitcoin Thunderbolt&#xff0…

Postgresql无法连接问题汇总

一. 数据库服务未启动 ❌报错信息&#xff1a; [postgresk8s-node2 ~]$ psql psql: could not connect to server: No such file or directoryIs the server running locally and acceptingconnections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"…

软件工程之软件验证计划Software Verification Plan

个人主页&#xff1a;云纳星辰怀自在 座右铭&#xff1a;“所谓坚持&#xff0c;就是觉得还有希望&#xff01;” 本文为基于ISO26262软件验证计划模板&#xff0c;仅供参考。 软件验证计划&#xff0c;包括&#xff1a; 1. 软件需求验证计划 2. 软件架构设计验证计划 3. 软件单…

SpringBoot之如何集成SpringDoc最详细文档

文章目录 一、概念解释1、OpenAPI2、Swagger3、Springfox4、Springdoc5. 关系与区别 二、SpringDoc基本使用1、导包2、正常编写代码&#xff0c;不需要任何注解3、运行后访问下面的链接即可 三、SpringDoc进阶使用1、配置文档信息2、配置文档分组3、springdoc的配置参数**1. 基…

SpringBoot3+Vue3开发学生成绩管理系统

系统介绍 此系统功能包含&#xff1a;首页、课程管理、成绩查询、成绩详情、班级管理、专业管理、用户管理等功能。用户管理又细分为账号管理、学生管理、教师管理、管理员管理。 基础功能包含&#xff1a;登录、退出、修改登录人信息、修改登录人密码。 分为4种角色&#x…

康谋方案 | AVM合成数据仿真验证方案

随着自动驾驶技术的快速发展&#xff0c;仿真软件在开发过程中扮演着越来越重要的角色。仿真传感器与环境不仅能够加速算法验证&#xff0c;还能在安全可控的条件下进行复杂场景的重复测试。 本文将分享如何利用自动驾驶仿真软件配置仿真传感器与搭建仿真环境&#xff0c;并对…

深入解析 Java Stream API:从 List 到 Map 的优雅转换!!!

&#x1f680; 深入解析 Java Stream API&#xff1a;从 List 到 Map 的优雅转换 &#x1f527; 大家好&#xff01;&#x1f44b; 今天我们来聊聊 Java 8 中一个非常常见的操作&#xff1a;使用 Stream API 将 List 转换为 Map。&#x1f389; 具体来说&#xff0c;我们将深入…

配置银河麒麟V10高级服务器操作系统安装vmware tools。在您的计算机上尚未找到用于此虚拟机的 VMwareTools。安装将无法继续。

配置银河麒麟V10高级服务器操作系统安装vmware tools 下载VMwareTools安装包 通过网盘分享的文件&#xff1a;VMwareTools-10.3.25-20206839.tar.gz 链接: https://pan.baidu.com/s/1EgMcqbIEur4iyHu2l0v_gQ?pwdrc8m 提取码: rc8m 通过工具上传到指定目录&#xff0c;然后切换…

突破 HTML 学习瓶颈:表格、列表与表单的学习进度(一)

HTML 学习之困&#xff0c;如何破局&#xff1f; 作为一名热衷于网页开发的博主&#xff0c;在 HTML 的学习道路上&#xff0c;我可谓是 “过关斩将”&#xff0c;但也遇到过不少 “硬茬”。起初&#xff0c;当我满心欢喜地以为掌握了基本的 HTML 标签&#xff0c;就能轻松搭建…

理一理Mysql日期

在 MySQL 数据库中&#xff0c;关于日期和时间的类型主要有以下几种&#xff1a; 1. **DATE**: 仅存储日期部分&#xff0c;格式为 YYYY-MM-DD&#xff0c;例如 2023-10-31。 2. **TIME**: 仅存储时间部分&#xff0c;格式为 HH:MM:SS&#xff0c;例如 14:30:00。 3. **DATE…

CEF 多进程模式时,注入函数,获得交互信息

CEF 控制台添加一函数,枚举 注册的供前端使用的CPP交互函数有哪些-CSDN博客 上篇文章,是在模拟环境,单进程中设置的,这篇文章,将其改到正常多进程环境中设置。 对应于工程中的 CEF_RENDER项目 一、多进程模式中,改写 修改步骤 1、注入函数 client_app_render.cpp 在…

C++ 介绍STL底层一些数据结构

c 标准模板库中&#xff0c;set和map的底层实现通常基于红黑树&#xff0c;然们都是平衡二叉搜索树(Balanceed Binary Serach Tree&#xff09;的一种,这种结构保证了 插入&#xff0c;删除&#xff0c;查找的时间复杂度为O(log n)比普通二叉搜索树更高效。 set set<T>…

在 Kubernetes(k8s)部署过程中常见的问题

在 Kubernetes(k8s)部署过程中,常见的问题主要包括以下几类,以下是具体示例及简要说明: 1. 资源配额不足(Resource Quota) 现象:Pod 处于 Pending 状态,事件日志显示 Insufficient CPU/Memory。 原因: 节点(Node)资源不足,无法满足 Pod 的 requests 或 limits。 命…

Android Window浮窗UI组件使用JetPack

目前接手的一个业务&#xff0c;应用不是用Activity/Fragment作为界面组件&#xff0c;而是用Window浮窗的形式显示&#xff0c;并且浮窗有很多种类型&#xff0c;每一种类型对应一类业务。那么怎么使用Jatpack的相关特性来设计架构并提高开发效率呢&#xff1f;分下面几个模块…

基于WebRtc,GB28181,Rtsp/Rtmp,SIP,JT1078,H265/WEB融合视频会议接入方案

智能融合视频会议系统方案—多协议、多场景、全兼容的一站式视频协作平台 OvMeet,LiveMeet针对用户​核心痛点实现功能与用户价值 &#xff0c;Web平台实现MCU多协议&#xff0c;H265/H264等不同编码监控&#xff0c;直播&#xff0c;会议&#xff0c;调度资源统一融合在一套界…