1. 课程导入

各位工程师朋友,咱们今天聊聊DoIP。说实话,我第一次接触这个协议是在2018年,当时一个项目要求用以太网做远程诊断,我还在想:CAN诊断用得好好的,干嘛要换?后来踩了几个坑才明白——时代变了。

1.1 什么是DoIP

DoIP,全称Diagnostic over Internet Protocol,翻译过来就是“基于IP网络的诊断协议”。它定义在ISO 13400标准里。说白了,就是把传统的UDS诊断报文,封装到TCP/IP或UDP/IP的包里,通过以太网传输。

你可能会问:这不就是把诊断数据塞进网线吗?嗯,差不多是这个意思,但细节比想象中复杂得多。

核心要点:DoIP不是一个新的诊断协议,它只是UDS(ISO 14229)在以太网上的“运输工具”。诊断命令本身还是那些——读取故障码、读写数据、执行例程——但底层的通信介质从CAN总线换成了以太网。

我习惯把DoIP理解为三层结构:

  • 应用层:UDS诊断服务,比如0x22读数据、0x2E写数据、0x19读故障码
  • 传输层:DoIP协议自身,负责连接管理、路由激活、诊断报文的封装与拆解
  • 网络层:TCP/UDP + IP,走的是标准以太网协议栈

这里有个容易混淆的点:DoIP既支持TCP也支持UDP。TCP用于可靠传输的诊断请求/响应,UDP主要用于发现车辆和获取基本信息。我在项目里经常看到有人把两者搞混,结果诊断会话建立不起来。

1.2 DoIP在汽车诊断中的角色

DoIP在整车诊断架构里扮演什么角色?我画了张图,你看一眼就明白了。

DoIP在整车诊断架构中的角色 诊断仪(Tester) DoIP(以太网) 中央网关(DoIP实体) 动力域 CAN ECU1 | ECU2 | ECU3 ADAS域 以太网 摄像头 | 雷达 | 域控 车身域 LIN 车门 | 车窗 | 座椅 架构说明 1. 诊断仪通过以太网连接中央网关(DoIP实体) 2. 网关将DoIP报文路由到目标域(CAN/以太网/LIN) 3. 各域内ECU响应诊断请求,结果原路返回

从这张图能看出来,DoIP实体通常部署在中央网关上。诊断仪通过以太网连到网关,网关再根据目标ECU所在的网络(CAN、以太网、LIN等)做路由转发。

我在实际项目中遇到过一个问题:某款车的网关DoIP路由表配置有误,导致诊断请求发到了错误的CAN网段。排查了整整两天才发现是路由表里目标地址写错了。所以,DoIP的路由表配置一定要仔细核对。

1.3 DoIP相比传统CAN诊断的优势

咱们来做个对比。CAN诊断用了二十多年,稳定可靠,为什么还要上DoIP?我列了个表,你看完就清楚了。

对比维度 CAN诊断 DoIP诊断
带宽 最高1 Mbps(CAN FD可达8 Mbps) 100 Mbps / 1000 Mbps(千兆以太网)
数据传输 单帧最多8字节(CAN FD 64字节) 单帧可达64 KB(TCP分段传输)
远程诊断 需要专用硬件(CAN转USB/以太网) 直接通过IP网络,支持远程连接
同时连接 通常1个诊断仪 支持多个Tester同时连接
刷写速度 刷一个ECU动辄30分钟以上 同样数据量只需几分钟
线束成本 需要专用诊断CAN线 复用车载以太网线束

你看这个带宽差距,CAN最高1 Mbps,DoIP起步就是100 Mbps。100倍的差距是什么概念?刷一个2 GB的固件,CAN要跑将近5个小时,DoIP只要几分钟。我记得有一次在产线上,客户要求把刷写时间从40分钟压缩到5分钟以内。不用DoIP根本做不到。

我的经验:DoIP最大的价值不是替代CAN诊断,而是解决CAN诊断搞不定的场景——比如远程OTA刷写、大数据量日志上传、多ECU并行诊断。如果你只是读个故障码、清个故障码,CAN完全够用,没必要上DoIP。

1.4 避坑指南

讲几个我踩过的坑,你们遇到了能少走弯路。

坑一:IP地址冲突

我曾经在一个项目里,诊断仪和网关的IP地址配到了同一个网段,但网关的DoIP模块没有做IP冲突检测。结果诊断会话时断时续,查了三天才发现是地址冲突。记住:DoIP规范要求车辆端必须支持ARP探测和IP地址冲突检测,但很多实现并不完善。

坑二:TCP连接超时设置

DoIP的TCP连接有严格的超时管理。默认情况下,如果诊断仪在5秒内没有发送任何诊断请求,网关会主动断开连接。我在做远程诊断时,网络延迟稍微大一点,连接就断了。后来把超时时间调到了30秒才稳定。这个参数在ISO 13400里有定义,但允许OEM自定义。

坑三:路由激活顺序

很多新手以为连上TCP就能直接发诊断报文。不对!DoIP要求先做路由激活(Routing Activation),通过特定的激活类型和激活密钥,才能建立诊断逻辑连接。我见过有人跳过了这一步,结果诊断请求石沉大海。记住:TCP连接 ≠ 诊断连接。

1.5 小结

这一章咱们聊了DoIP是什么、它在整车架构里的位置、以及相比CAN诊断的优势。说白了,DoIP就是给汽车诊断装上了“宽带”,让大数据量传输成为可能。但带宽提升也带来了新的复杂度——IP配置、连接管理、路由激活,这些都是CAN时代不需要操心的事。