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三个子系统。诊断需求包括:
- OTA升级:每次升级包约500MB,要求30分钟内完成
- 远程诊断:售后可以通过4G网络远程读取故障码
- 大数据量读取:需要读取摄像头标定数据,约50MB
- 并行诊断:同时诊断仪表和中控两个子系统
这些需求,用CAN诊断一个都满足不了。DoIP是唯一的选择。
关键点总结:
- DoIP是智能汽车诊断的必然趋势
- 它解决的是大数据量、高带宽、远程诊断的需求
- 不要盲目全车DoIP,要结合实际情况做架构设计
- CAN诊断和DoIP会长期共存
好了,这一章我们聊了DoIP的来龙去脉。下一章,我会深入讲解DoIP的协议栈架构,包括物理层、网络层、传输层和应用层的具体实现。到时候我会分享一些我在协议栈调试中踩过的坑,希望对你有帮助。