1. DoIP概述:车载诊断的演进

从CAN诊断到DoIP,我们经历了什么?

做车载诊断这么多年,我亲眼见证了诊断协议的演变。早些年,我们用的都是CAN诊断,也就是UDS over CAN。那时候一辆车也就几十个ECU,诊断数据量不大,CAN总线完全够用。

但到了智能汽车时代,情况完全变了。你想想看,现在的车上有多少传感器?摄像头、雷达、激光雷达,再加上各种域控制器。这些设备产生的数据量,CAN总线根本扛不住。

我记得2018年做的一个项目,客户要求通过诊断接口读取摄像头原始数据。用CAN跑,传输速度只有500kbps,传一张图片要好几秒。这在实际维修中根本没法用。嗯,那时候我就意识到,诊断协议必须升级了。

核心对比:CAN诊断 vs DoIP

  • 传输速率:CAN最高1Mbps,DoIP可达100Mbps/1000Mbps
  • 数据量:CAN单帧最多8字节,DoIP单帧可达64KB
  • 连接方式:CAN是广播式,DoIP是点对点TCP连接
  • 远程诊断:CAN基本不支持,DoIP天然支持

为什么需要DoIP?

说白了,就是三个字:不够用

第一个不够用,是带宽不够。现在的智能汽车,光是OTA升级包就有几个GB。用CAN刷写,你得等多久?我算过一笔账,刷一个2GB的固件,用CAN要传将近6个小时。用DoIP,10分钟搞定。

第二个不够用,是功能不够。CAN诊断只能做基本的读写故障码、读取数据流。但DoIP支持更复杂的诊断场景,比如远程诊断、大数据量传输、并行诊断会话。

第三个不够用,是架构不够。智能汽车用的是域控制器架构,一个域控要管理多个子系统。CAN的广播机制在这种架构下效率很低。DoIP的TCP/IP协议栈天然支持这种分层架构。

我个人习惯:在项目初期,我会先评估诊断数据量。如果单次诊断会话的数据量超过1MB,我建议直接上DoIP。别想着用CAN硬扛,后面改起来更痛苦。

DoIP在智能汽车中的定位

DoIP不是来取代CAN诊断的。它俩是互补关系。

在智能汽车里,诊断架构通常是这样的:

  • 底层ECU:继续用CAN诊断,处理基本的传感器、执行器诊断
  • 域控制器:用DoIP,处理大数据量诊断、OTA升级、远程诊断
  • 中央网关:作为DoIP的入口,负责协议转换和路由

我曾经参与过一个项目,客户想把所有诊断都迁移到DoIP上。结果发现,底层传感器ECU根本跑不动TCP/IP协议栈。最后我们采用了混合方案:底层用CAN,域控层用DoIP,中间通过网关做协议转换。

避坑指南:我曾经见过一个团队,为了追求"全车DoIP",给每个传感器ECU都加了以太网接口。结果成本翻了三倍,而且很多ECU的MCU根本跑不动以太网协议栈。记住,合适的才是最好的

DoIP的核心优势

特性 CAN诊断 DoIP
物理层 CAN总线 以太网
传输速率 最高1Mbps 100Mbps/1000Mbps
最大数据包 8字节 64KB
连接方式 广播 点对点TCP
远程诊断 不支持 原生支持
并行会话 有限 支持多个
安全性 支持TLS加密

实际项目中的应用场景

我最近在做的一个项目,是某主机厂的智能座舱域控制器。这个域控要管理仪表、中控、HUD三个子系统。诊断需求包括:

  1. OTA升级:每次升级包约500MB,要求30分钟内完成
  2. 远程诊断:售后可以通过4G网络远程读取故障码
  3. 大数据量读取:需要读取摄像头标定数据,约50MB
  4. 并行诊断:同时诊断仪表和中控两个子系统

这些需求,用CAN诊断一个都满足不了。DoIP是唯一的选择。

关键点总结

  • DoIP是智能汽车诊断的必然趋势
  • 它解决的是大数据量、高带宽、远程诊断的需求
  • 不要盲目全车DoIP,要结合实际情况做架构设计
  • CAN诊断和DoIP会长期共存

好了,这一章我们聊了DoIP的来龙去脉。下一章,我会深入讲解DoIP的协议栈架构,包括物理层、网络层、传输层和应用层的具体实现。到时候我会分享一些我在协议栈调试中踩过的坑,希望对你有帮助。