车载以太网网络测试-20【传输层-DOIP协议-3】
1 摘要
本文继续对ISO 13400-2定义的节点管理报文进行介绍,主要对路由激活请求/响应报文以及在线检查请求/响应报文的作用、帧结构以及示例进行介绍。
上文回顾:
车载以太网网络测试-19【传输层-DOIP协议-2】
在进行详细介绍之前,还是先回顾一下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 Type | 1 | 激活类型,表示请求的路由激活类型 |
Reserved by this document | 4 | 保留字段,通常为 0x00000000 |
Reserved for VM-specific use | 4 | 保留字段,通常为 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报文的作用包括:
-
确认激活请求:当诊断工具发送Routing activation request报文请求激活某个通信通道时,车辆中的DoIP实体(如ECU)会通过Routing activation response报文来确认该请求是否成功。
-
返回激活状态:Routing activation response报文中包含一个状态码,用于指示激活请求的结果。例如,状态码可以表示成功激活、激活失败或激活被拒绝等。
-
提供附加信息:除了状态码外,Routing activation response报文还可能包含其他相关信息,如激活的通信通道的详细信息或错误描述。
-
确保通信准备就绪:通过发送Routing activation response报文,车辆中的DoIP实体通知诊断工具通信通道已准备好进行后续的诊断数据传输。
总结来说,Routing activation response报文的主要作用是确认诊断请求的激活状态,并确保诊断工具和车辆之间的通信通道已成功建立,为后续的诊断数据传输做好准备。
3.2 Routing activation response报文帧结构
路由激活响应报文主要是对上面路由激活请求报文的响应,的数据格式如下:
响应中的参数定义如下:
- 诊断设备逻辑地址(Logical address of the external test equipment):诊断仪的逻辑地址。
- DoIP节点逻辑地址(Logical address of the responding DoIP entity):DoIP节点物理逻辑地址。
ISO 13400-2 是诊断通信标准的一部分,主要涉及基于IP的诊断通信(DoIP,Diagnostics over Internet Protocol)。在DoIP协议中,路由激活响应码(Routing Activation Response Code)是一个关键参数,用于指示路由激活请求的处理结果。
- 路由激活响应码(Routing activation response code):1字节,它由DoIP实体(如车辆中的DoIP网关或ECU)发送,以告知请求方(如诊断工具)路由激活请求的处理状态。它确保了诊断通信的可靠性和高效性,并提供了明确的错误处理机制。通过理解和使用路由激活响应码,诊断工具可以更好地管理与车辆ECU的通信。比如:用来表示TCP连接建立是否成功,以及不成功的原因。
定义如下表所示,Required Action栏展示了DoIP节点在返回响应后应该采取的操作。
- 其余字段为预留或自定义字段,不常用。
3.3 常见Routing activation response code示例
- 路由激活成功(10)
- 不支持的SA地址(0x00)
如下图, 0x0101是DoIP实体不支持的SA地址,所以DoIP实体响应了0x00 状态码。
- 已经激活的TCP连接上使用不同的SA地址(0x02)
如下图,在已经激活的TCP连接上,使用了不同的SA地主,DoIP实体报0x02状态码
- 不同的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报文作用
-
检测连接状态
客户端(如诊断工具)向服务器(如车辆ECU)发送Alive Check Request报文,以确认服务器是否仍然在线并能够响应请求。 -
保持会话活跃
在某些诊断协议中,会话可能会因为长时间无通信而超时关闭。通过定期发送Alive Check Request报文,可以防止会话超时,保持会话的活跃状态。 -
网络健康检查
通过发送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协议所有帮助!