2、DoIP协议基础:DoIP的由来与优势、ISO 13400标准体系、DoIP在车载网络中的位置、DoIP与传统CAN诊断的对比

2.1 DoIP的由来:为什么我们需要它?

说实话,做诊断这么多年,我最早接触的也是CAN诊断。那时候觉得,嗯,够用了。但随着车上的电子控制器越来越多,问题就来了。

你想想看,一个现代高端车型,可能有上百个ECU。用CAN诊断刷写一个网关的固件,速度大概在500kbps左右。刷一个几百兆的升级包,得等多久?我算过,差不多要半小时到一小时。车主在4S店干等着,体验能好吗?

所以,DoIP(Diagnostic over Internet Protocol)就应运而生了。它的核心思路很简单——把诊断搬到以太网上来。以太网的速度,从100Mbps到1Gbps,甚至更高。刷写时间直接从小时级降到了分钟级。

我在一个项目中遇到过,客户要求整车OTA升级必须在15分钟内完成。用CAN诊断根本不可能,最后我们上了DoIP,配合压缩算法,10分钟搞定。这就是DoIP诞生的根本原因——速度不够,协议来凑。

核心驱动力:

  • 带宽需求:CAN总线带宽有限(最高1Mbps),无法满足大数据量传输
  • 远程诊断:传统CAN诊断依赖物理连接,DoIP支持远程诊断和OTA
  • 标准化需求:不同OEM的CAN诊断实现差异大,DoIP基于IP网络,天然统一

2.2 DoIP的优势:不只是快

很多人以为DoIP就是快,其实不止。我总结了几点核心优势,都是我在实际项目中验证过的。

第一,速度优势。 这个不用多说。以太网100Mbps起步,CAN最高才1Mbps。刷写一个ECU,CAN要40分钟,DoIP可能只要3分钟。我做过对比测试,同一个ECU,用CAN刷写耗时35分钟,用DoIP只用了4分20秒。差距就是这么大。

第二,并发能力。 CAN诊断一次只能跟一个ECU通信。DoIP基于IP网络,可以同时跟多个ECU建立连接。我在一个项目中同时刷写了4个ECU,总时间跟刷一个差不多。这在CAN上是做不到的。

第三,远程诊断。 这个太实用了。传统CAN诊断必须把诊断仪插到车上。DoIP可以通过4G/5G网络,让工程师在办公室就能远程诊断车辆。我记得有一次,客户的车在高速上出了故障,我们通过DoIP远程读取了故障码,远程指导解决了问题。省去了拖车和现场服务的成本。

第四,标准化程度高。 ISO 13400标准把DoIP的方方面面都定义得很清楚。不同OEM、不同Tier1之间,实现起来差异很小。不像CAN诊断,每家OEM都有自己的“方言”。

对比维度 CAN诊断 DoIP诊断
物理层 CAN总线(双绞线) 以太网(双绞线/光纤)
传输速率 最高1Mbps 100Mbps ~ 1Gbps
传输距离 几十米(受限于CAN总线长度) 100米(标准以太网)
并发连接 单点对单点 多点对多点
远程能力 不支持(需物理连接) 支持(通过IP网络)
数据包大小 最大8字节/帧 最大1500字节/帧(可更大)
标准化 ISO 15765(部分) ISO 13400(完整)

2.3 ISO 13400标准体系:DoIP的“宪法”

ISO 13400是DoIP的核心标准。它分为几个部分,我简单梳理一下。

ISO 13400-1:概述和架构

这部分定义了DoIP的整体架构。说白了,就是告诉你DoIP长什么样,有哪些组件,怎么连接。我建议初学者先看这部分,建立整体概念。

ISO 13400-2:传输协议和网络层服务

这是最核心的部分。它定义了DoIP的报文格式、连接建立、数据路由、错误处理等。我平时写代码,主要参考的就是这部分。里面详细定义了各种报文类型,比如车辆识别请求、路由激活请求、诊断消息等。

ISO 13400-3:基于IEEE 802.3的物理层

这部分定义了DoIP在以太网物理层上的实现。说白了,就是告诉你网线怎么接,信号怎么传。对于大多数工程师来说,这部分了解即可,硬件工程师会更关注。

ISO 13400-4:基于IEEE 802.11的物理层

这部分定义了DoIP在Wi-Fi上的实现。嗯,这个在实际项目中用得不多。我见过一些远程诊断方案用Wi-Fi,但主流还是以太网。

我的建议: 如果你是做软件开发的,重点看ISO 13400-2。如果你是做系统集成的,重点看ISO 13400-1和ISO 13400-2。硬件工程师看ISO 13400-3。ISO 13400-4,嗯,暂时可以放一放。

2.4 DoIP在车载网络中的位置

DoIP不是孤立存在的。它在车载网络中扮演着“桥梁”的角色。

从架构上看,DoIP通常位于网关或域控制器上。车辆内部,各个ECU通过CAN、LIN、FlexRay等总线连接。DoIP网关负责把这些总线上的诊断请求,转换成以太网报文,发送给诊断仪。反过来,诊断仪的以太网报文,也要通过DoIP网关转换成CAN报文,发给目标ECU。

我画个简单的逻辑图(嗯,文字描述一下):

诊断仪(PC/平板) 
    ↓↑ (以太网/DoIP)
DoIP网关(车载以太网节点)
    ↓↑ (CAN/LIN/FlexRay)
目标ECU(如:BCM、GW、EPS等)

在实际项目中,DoIP网关通常是一个独立的硬件模块,或者集成在中央网关中。它负责:

  • 处理诊断仪的连接请求
  • 路由诊断消息到目标ECU
  • 管理多个并发诊断会话
  • 处理错误和超时

我记得有一次,客户的车载网络架构很复杂,有5个CAN网络、2个LIN网络、1个FlexRay网络。DoIP网关需要同时处理来自不同网络的诊断请求。我们花了很多时间调试路由表,确保每个诊断消息都能正确到达目标ECU。嗯,那段时间真是“痛并快乐着”。

2.5 DoIP与传统CAN诊断的对比

这个对比,我直接说干货。

1. 速度差距

CAN诊断:最高1Mbps,实际有效数据率更低。DoIP:100Mbps起步。差距100倍以上。刷写一个ECU,CAN要30分钟,DoIP可能只要2分钟。

2. 数据包大小

CAN诊断:一帧最多8字节数据。DoIP:一帧最多1500字节(标准以太网MTU)。这意味着DoIP可以一次性传输更多的诊断数据,减少了协议开销。

3. 并发能力

CAN诊断:一次只能跟一个ECU通信。DoIP:可以同时跟多个ECU建立连接。我做过测试,同时刷写4个ECU,总时间跟刷一个差不多。

4. 远程能力

CAN诊断:必须物理连接。DoIP:可以通过IP网络远程连接。这个优势在远程诊断和OTA升级中体现得淋漓尽致。

5. 标准化程度

CAN诊断:ISO 15765只定义了部分内容,各OEM实现差异大。DoIP:ISO 13400定义得非常完整,实现起来更统一。

6. 成本

CAN诊断:硬件成本低,但开发成本高(因为各OEM不统一)。DoIP:硬件成本略高(需要以太网控制器),但开发成本低(标准化程度高)。

避坑指南: 我曾经在一个项目中,以为DoIP可以完全替代CAN诊断。结果发现,有些老旧的ECU只支持CAN诊断,不支持DoIP。所以,在实际项目中,往往是DoIP和CAN诊断共存。DoIP网关负责协议转换。嗯,这个坑我踩过,希望大家不要再踩了。

2.6 小结

DoIP不是来取代CAN诊断的,而是来补充和扩展的。它解决了CAN诊断在速度、并发、远程能力上的不足。ISO 13400标准体系为DoIP提供了完整的规范。在车载网络中,DoIP通常位于网关或域控制器上,负责连接诊断仪和内部总线。

下一章,我会深入讲解DoIP的报文格式和连接建立过程。嗯,那才是真正“动手”的部分。