1. 协议概述
DoIP(Diagnostic communication over Internet Protocol),基于IP网络的汽车诊断协议。DoIP技术可实现本地诊断、远程诊断、空中下载技术等功能。
DoIP协议用于UDS诊断的传输,ISO13400规定了DoIP的物理层、数据链路层、网络层、传输层,ISO14229规定了会话层和应用层。DoIP协议基于TCP/UDP协议进行诊断报文的传输。
协议模型如下图所示:
(ISO 13400-1是对一些通用信息、应用场景的描述;ISO 13400-4定义以太网诊断连接器要求。)
架构模型如下图所示:
车内网络:
1> DoIP结点: 基于DoIP协议通信的网络节点,但只能作为通信节点,不能支持路由DoIP报文。
2> DoIP网关: 车辆内部网关,实现DoIP协议的主机节点,可路由其连接的子网与外部设备之间的报文。
3> DoIP边缘节点网关: 负责路由外部设备和车内子网之间的信息,通过激活线与外部测试设备连接,需要以太网激活线先对其进行激活,才能实现通信。
车外网络:
1> 外部测试设备: 指支持DoIP协议且具有强大存储能力与处理能力的终端(如PC、笔记本电脑或手机)。外部测试设备通过DoIP协议访问车辆内部网络中的DoIP实体。
2> 车外网络节点: 此类节点作为与DoIP系统相关的网络节点并不是必须存在的,是作为一些车联网网络中的其他功能节点。
外部测试设备与DoIP边缘节点网关之间除了通过物理介质连接以外,还可以通过WLAN技术进行无线网络连接。
车内网关与外部测试设备之间是通过OBD(On Board Diagnostics)接口连接的,ISO13400协议中推荐的OBD接口的两种定义,如下图所示:
(注:车辆的电磁兼容符合标准要求是整车功能正常运行的前提,激活线的目的是激活边缘节点Tx通信功能,在不使用Tx通信时关闭边缘节点的Tx通信功能,能够降低外界对车辆的干扰并提升抗干扰能力。)
2. 通信诊断
2.1 DoIP报文格式
① Protocol Version: 定义DoIP协议版本号,通常取0x02(ISO 13400-2-2012《道路车辆——互联网协议的诊断通信(DoIP).第2部分:传输协议和网络层服务》);
② ~Protocol Version: 协议版本号取反;
③ Payload Type: 定义数据类型,表示本帧数据的用途,可分为3类:
1> 节点管理类报文(0x00010x0008)0x0004: 用于识别车辆请求,在外部测试设备与DoIP边缘节点建立诊断连接前的交互;
△ 0x0001
△ 0x00050x0006: 用于激活请求与响应,激活后socket使能并建立socket连接,才可以进行诊断通信;0x0008: 用于检查当前建立的诊断连接socket是否仍在使用,如果不再使用,则关闭socket释放资源。
△ 0x0007
2> 节点状态类报文
△ 0x40010x4004: 指示当前节点类型。0x8003: 标识外部测试设备与DoIP实体之间的诊断报文类型,分别代表诊断报文、诊断肯定响应报文和诊断否定响应报文。
3> 诊断类报文
△0x8001
④ Payload Length: 定义数据长度(标识后面的数据长度);
⑤ DoIP Payload: 包含Payload Type对应的具体数据:分为源地址、目的地址、应用数据。
2.2 诊断流程
DoIP的整个诊断流程大致可以分为5步:车辆连接、车辆声明、TCP通信连接及路由激活、诊断数据交互、TCP连接关闭:
1> 车辆连接: Tester和DoIP网关之间要建立正确的物理连接,通过车辆激活线激活DoIP网关的诊断功能,然后分配Tester及DoIP网关的IP地址,分配IP地址一般通过DHCP动态分配或Auto IP分配;
2> 车辆声明: 车辆连接并上电后,车辆将自身的识别信息以广播形式自发3次于所在网络中。Tester若未获取车辆自动上报的识别信息,Tester需发送车辆信息识别请求报文(identification request),如果网络中有车辆的话,车辆对这个车辆识别请求信息进行响应,发送车辆识别请求响应信息(车辆声明),测试设备便发现了被测车辆。
3> TCP通信连接及路由激活: Tester端和DoIP实体通过TCP三次握手机制建立TCP连接,然后Tester与DoIP实体节点之间进行路由激活,来激活车载以太网通信诊断套接字(socket),Tester发送路由激活请求报文信息至DoIP实体节点,DoIP实体确认Tester的逻辑地址、激活类型等信息是否合法,通过后,DoIP实体回复路由激活响应报文,实现路由功能的激活。
4> 诊断通信: Tester发送诊断请求报文(DoIP Payload Type 0x8001),诊断请求报文中包含目标的逻辑地址,用来区分不同的诊断实体,边缘节点网关收到请求后回复诊断请求确认ACK(DoIP Payload Type 0x8002),告知Tester收到诊断请求,与此同时会发送诊断请求给车内所需诊断通信的DoIP实体节点。车内节点收到请求后回复诊断响应报文(DoIP Payload Type 0x8001),该响应报文经由DoIP网关转发给Tester。若边缘节点网关判定Tester发送的诊断请求有无效信息时(无效的目标地址,信息超长等),此时边缘节点网关会回复NACK(DoIP Payload Type 0x8003)。
5> TCP连接关闭: 当Tester端退出诊断通信连接时,用于DoIP通信的套接字TCP_DATA Socket被关闭,DoIP诊断通信断开。
注:ISO 13400-2 2019协议将信息安全因素考虑进去,在整个DoIP诊断通信过程中增加了TLS(Transport Layer Security), 即在建立TCP连接后,进行TLS握手交流,实现数据加密,在进行后续的路由激活、诊断数据交互。
外部测试设备在对车内控制器进行数据刷新或故障诊断时,会使用TCP/UDP协议与车内控制器建立连接。请求执行的功能决定了是使用TCP协议还是UDP协议。在外部测试设备的激活线连接到车辆后,需要先使用UDP协议进行车辆发现和车辆声明,再使用TCP协议进行传输具体的数据和诊断请求。
2.3 应用场景
诊断连接方案:
1> 单个测试设备与单个车辆之间的物理介质连接;
2> 单个测试设备与单个车辆之间的网络连接;
3> 单个测试设备与多个车辆之间的网络连接;
4> 多个测试设备与单个车辆之间的网络连接;
应用场景:
1> 车辆刷新和配置
在车辆设计、装配、售后阶段,使用外部刷新设备通过TCP/IP协议在安全访问通过后与车辆内部节点建立通信,按照升级流程对DoIP节点进行数据升级和配置参数修改。
2> 车辆功能检测
在车辆装配下线阶段,外部检测设备按照固定步骤对接入局域网的车辆进行终检工位的全功能检测,外部测试设备会对车内多个DoIP节点进行并行通信,完成批量检测。
3> 车辆故障维修
在该阶段,外部检修设备不需要使用传统的硬线连接,通过TCP/IP协议与车辆建立通信,向目标DoIP节点发送请求,节点反馈实时的故障信息或运行参数,便于快速定位故障点。
版权归原作者 yspdsu 所有, 如有侵权,请联系我们删除。