当前位置: 首页 > article >正文

车载以太网网络测试-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.kler.cn/a/595432.html

相关文章:

  • C语言复习笔记--数组
  • IPD的分析工具与模型(十一)利用Ansoff矩阵制定产品市场组合,帮助企业确定增
  • 通过《电幻国度》来看机器人的发展
  • OpenCV旋转估计(2)用于自动检测波浪校正类型的函数autoDetectWaveCorrectKind()
  • B2-DPO:开启去中心化物联网(DePIN)的智能革命
  • Python之使用mitmproxy进行本地化网络监听
  • KNN算法
  • python中的元组、字典与集合
  • CUL-CHMLFRP启动器 windows图形化客户端
  • HR人员和组织信息同步AD域服务器实战方法JAVA
  • 基于Neo4j的文物推荐系统
  • MySQL 客户端连不上(1045 错误)原因全解析
  • 爱普生SG2016CAN晶振优势和多领域应用
  • 在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和腾讯翻译插件让英文网页显示中文翻译
  • 【数据结构】C语言实现线索二叉树
  • 树莓集团南京产业园:战略定位背后的深度思考
  • 二分查找上下界问题的思考
  • EMC整改案例:某网络机顶盒网口辐射
  • CA 机构如何防止中间人攻击
  • 大模型——让Word插上AI的翅膀:如何把DeepSeek装进Word