ISO 13400 学习笔记-2
通用DOIP报头否定响应消息
0x0000
Generic DoIP header negative acknowledge,通用DoIP报头否定确认NACK
NACK code占用一个字节,它不同的值表示不同的DoIP消息的错误类型,以及DoIP实体要如何处理接收到的DoIP消息
- 0x00 DoIP实体不支持DoIP协议版本或反向协议版本错误
这种情况下,DoIP实体需要关闭socket,这里的socket应该是tcp socket - 0x01 DoIP实体不支持DoIP消息里的payload type
这种情况下,DoIP实体忽略这条错误的DoIP消息即可 - 0x02 DoIP消息payload长度超过了DoIP实体支持的最大DoIP消息的长度
这种情况下,DoIP实体忽略这条错误的DoIP消息即可 - 0x03 DoIP消息payload长度超过了DoIP实体的DoIP程序的处理内存
这种情况下,DoIP实体忽略这条错误的DoIP消息即可 - 0x04 DoIP消息的Payload Length字段不正确
这种情况下,DoIP实体需要关闭socket,这里的socket应该是tcp socket
车辆识别请求消息和响应消息
0x0001、 0x0002 、0x0003 、0x0004
为了使外部测试设备能够访问DOIP实体,需要先通过车辆识别请求获取DOIP实体的VIN、EID、GID,车辆识别请求消息和响应涉及的负载类型为0x0001、 0x0002 、0x0003 、0x0004,应用场景分别为:
(1)外部诊断设备已获得DOIP实体的IP地址但未配置车辆VIN;
(2)外部诊断设备已获取DOIP实体的IP地址和车辆的EID/VIN/GID;
路由激活请求和响应消息
0x0005、0x0006
为了使 边缘节点 能够路由 外部测试设备 和 DOIP实体之间 的诊断请求和响应,需先通过路由激活请求报文激活边缘节点的路由功能,路由激活请求和响应的负载类型为0x0005、0x0006。
测试设备在线查询消息
0x0007、0x0008
能够使车辆内部的DoIP实体 检查 测试设备 是否还处于通信活跃状态
在路由激活阶段的Socket处理过程中,利用该功能检查和关闭处于非活跃状态的 Socket,为创建新的通信连接提供Socket资源。此功能对应测试设备在线查询请求(Alive check request)和测试设备在线查询响应(Alive check response)两种类型的报文。
- 测试设备在线查询请求报文(0x0007)的有效载荷为空,其不包含任何数据字段,仅利用DoIP报文类型标识符来表示当前报文目的为查询测试设备是否在线。
- 测试设备在线查询响应报文(0x0008)的有效载荷中包含当前在TCP_DATA Socket上处于活动状态测试设备的源逻辑地址(SA),用来通知车内DoIP实体当前正在通信的是哪台测试设备。
此功能一般在路由激活阶段的Socket处理过程中,配合Socket处理机制一起作用。
参考阅读
[1] 王远波,陈姿霖,杜彬等.基于ISO 13400标准的通信协议解读[J].汽车电器,2022,(07):61-64.DOI:10.13273/j.cnki.qcdq.2022.07.039
[2] 陈博.基于DoIP的汽车网络系统研究[D].湖南大学,2020.DOI:10.27135/d.cnki.ghudu.2020.001554
[3] 崔杰.基于CAN和以太网通信的汽车诊断刷写系统设计[D].吉林大学,2019.