定义
DOIP(Diagnostic communication over Internet Protocol)是基于IP协议的车载诊断通信标准,由ISO 13400定义,用于通过以太网实现ECU和整车的诊断通信,是车载以太网诊断的核心基础协议。
国产总线工具INTEWORK-VBA支持DOIP节点诊断和整车以太网诊断两种模式,可适配TESTBASE-V1000、TESTBASE-V6400_T等不同硬件设备。
工作原理
DoIP 是运行于 IP 之上的应用层协议。它把承载明确分成两条通道:UDP 与 TCP 均使用 13400 端口——车辆发现与声明走UDP,路由激活与诊断数据传输走TCP。
1. 实体发现阶段
发现阶段解决"诊断仪如何找到车辆",由两个方向的机制共同完成:
- 车辆声明(Vehicle Announcement,0x0004):DoIP 实体获得 IP 地址后主动发出报文,声明自身存在
- 车辆发现(Vehicle Identification Request,0x0001):诊断仪向组播地址发送识别请求,DoIP 实体以 UDP 单播返回识别响应
车辆识别响应中携带以下关键字段:
| 字段 | 长度 | 含义 |
|---|---|---|
| VIN | 17 字节 | 车辆识别代号 |
| 逻辑地址 | 2 字节 | 通常指向网关ECU |
| EID | 6 字节 | 实体标识(Entity Identification) |
| GID | 6 字节 | 组标识(Group Identification) |
若车辆网关 IP 未固化,VBA 也支持通过 DHCP 为其分配 IP。
2. 路由激活阶段
- 诊断仪向目标 DoIP 实体发送路由激活请求(0x0005),请求中携带诊断仪自身的源地址(Source Address,即逻辑地址,VBA 中默认 0xE80)
- DoIP 实体验证后返回路由激活响应(0x0006)
- 路由激活的作用是向实体注册诊断仪的源地址;只有激活成功,后续诊断报文才会被实体接收
3. 诊断数据传输
激活成功后,UDS 诊断报文交由 DoIP 承载。诊断消息(0x8001)报文传输 UDS 服务数据:诊断仪 → DoIP网关 → 车内CAN/LIN总线 → 目标ECU。
诊断消息的确认与 UDS 的响应属于两层不同的语义,这一点常被混淆:
| 载荷类型 | 含义 | 注意 |
|---|---|---|
| 0x8002 | 诊断消息肯定确认 | 仅表示消息已被 DoIP 层接收/转发,不代表 ECU 已执行成功 |
| 0x8003 | 诊断消息否定确认 | 反映DoIP 路由层问题(如目标地址不可达、长度不符) |
4. 连接维护与关闭
- 通过 Alive check(载荷类型 0x0007 请求 / 0x0008 响应,走 UDP)检测连接活性
- 连接异常时的排查顺序:确认源地址和目的地址是否正确 → 核对载荷长度与实际数据长度是否一致 → 检查协议版本兼容性
在VBA中,DOIP连接配置通过DiagnosticLink界面完成,支持切换本机网卡或Hirain VCI硬件作为诊断媒介。
DOIP常见连接场景
DOIP连接根据场景分为几种典型情况:
1. 本机网卡-DOIP节点连接
适用于单个DOIP节点直连场景,通常DOIP节点IP地址是固化的:
- PC网卡设置与DOIP节点同网段IP
- 配置节点IP地址和逻辑地址
- 取消勾选"车辆声明和发现",直接激活连接
2. 本机网卡-整车连接
适用于整车网关连接场景:
- 如果网关IP固化,操作同节点直连
- 需要勾选"车辆声明和发现"让VBA发现网关
3. Hirain VCI-整车连接
通过VCI硬件进行整车连接:
- 在工程中配置VCI通道
- 在DiagnosticLink选择Hirain VCI并配置IP信息后激活连接
为什么需要DOIP
传统基于CAN总线的诊断存在带宽瓶颈:
- 经典CAN总线带宽最高仅1Mbps,CAN FD数据段常见速率为2~8Mbps
- 对于大文件传输(如ECU固件刷写)速度极慢
- 随着车载以太网普及,越来越多ECU采用以太网接口
DOIP正好解决了这些问题:
- 高带宽:底层以太网可提供Gbps级带宽,大幅提升刷写速度
- 标准化:ISO 13400统一标准,不同厂商设备可互操作
- 扩展性好:基于以太网与IP寻址,便于适配整车多节点网络架构
总结
DOIP协议是车载以太网诊断的基础,让诊断通信能够利用以太网的高带宽优势。VBA通过DiagnosticLink组件支持多种DOIP连接场景,无论是单DOIP节点还是复杂整车网络,都能快速建立稳定的诊断连接。连接成功后即可进行UDS诊断和固件刷写操作。