DoIP 协议
DoIP 简介
DoIP(英文全称 Diagnostics over Internet Protocol)是一种用于车载领域的以太网协议,旨在优化车辆的网络诊断和通信。DoIP 的出现标志着车辆电子系统的网络化和数字化的进一步发展,为汽车行业带来了更高效、更稳定和更先进的诊断和通信方式。
DoIP 广泛应用于汽车行业的网络诊断和通信领域。它允许汽车制造商、修理厂和第三方诊断工具提供商通过以太网连接与车辆的电子控制单元(ECU)进行通信。DoIP 可用于实时监控车辆状态、车辆故障诊断、软件升级和配置等方面。它不仅适用于乘用车领域,还可以应用于卡车和公共交通工具等其他类型的车辆。
实际上,以太网在诊断方面的应用已经有多年的时间了,尤其是在 ECU 的刷写方面。这一应用对汽车制造商和零部件供应商来说非常有吸引力,原因在于极大地缩短生产和售后的刷写时间。
ISO 13400 明确定义基于 IP 的诊断,只要支持 IP 数据包的传输,使用何种物理层并没有什么区别。 例如,除以太网之外,DoIP 也可以基于 WLAN 和 UMTS 来实现。但基于 ISO13400 的 DoIP 不是诊断协议,而是一个扩展传输协议。这意味着虽然 DoIP 定义了诊断数据包的传输,但诊断服务仍然由诊断协议(如 KWP2000 协议和 UDS 协议)规定和说明。
DoIP 协议需要 UDP 和 TCP 的支持。UDP 用于状态或配置信息的传输, TCP 则通过固定的通信通道传输实际诊断数据包。TCP 可确保数据传输的高度可靠性,并自动对大型数据包进行分段。因此,诊断测试仪、带有 DoIP 诊断功能的 ECU(DoIP 节点)以及诊断网关(DoIP 网关或 DoIP 边缘节点)都需要支持 TCP/UDP 协议。
DoIP 协议栈
DoIP 协议定义了以太网诊断数据的传输机制和格式。它基于 TCP/IP 协议栈,并利用 IEEE 802.3 以太网标准进行数据传输。协议包括以下几个关键组件:
- 物理层接口:定义了以太网连接的物理接口标准,包括物理连接器、电缆和传输速率等参数。
- 网络层:使用 IPv4 或 IPv6 协议为诊断数据提供互连性和寻址功能。
- 传输层:利用 TCP 或 UDP 协议提 供可靠性或实时性的传输服务。
- 诊断应用层:定义了诊断数据的格式和解析规则,包括诊断请求、响应和结果等信息。
- 安全性机制:提供数据传输的加密和身份验证功能,以确保数据的机密性和完整性。
下图展示了 DoIP 在 OSI 七层模型 中的位置。
- DoIP 传输层(ISO 13400-2)具有在外部测试仪设备与车内 DoIP 网关之间建立和维护连接的功能。
- UDS 应用层(ISO 14229-5)是在 IP 上实现 UDS 的应用配置文件。
DoIP 优缺点
DoIP 协议具有以下优点:
- 高带宽和高速率:相比于传统的诊断方法,DoIP 利用以太网作为通信媒介,具有更高的带宽和传输速率,能够快速传输大量的数据。
- 网络化和集成化:DoIP 基于以太网技术,使诊断和通信过程更加网络化和集成化,提高了操作的便利性和效率。
- 多路复用:DoIP 允许多个诊断会话同时进行,提高了诊断和通信的灵活性和并行性。
- 兼容性强:DoIP 协议与现有的汽车网络架构和诊断标准兼容,不需要对现有系统进行大规模改造。
与此同时,DoIP 协议可能具有以下缺点:
- 设备成本:使用 DoIP 技术进行诊断和通信需要相应的硬件设备支持,这增加了系统的研发和采购成本。
- 安全性挑战:随着车辆网络的开放性增加,DoIP 也面临着网络安全的挑战,需要加强对数据传输和诊断会话的保护措施。
DoIP 基本概念
- CDD:通信数据词典(Common data dictionary),它是指在 DoIP 协议中使用的数据格式和标准定义。CDD 用于描述在 DoIP 网络上进行诊断通信时使用的数据类型、参数和结构,以确保设备之间的相互理解和数据交换的一致性。
- CMD:通信消息词典(Common message dictionary),用于描述在 DoIP 协议中使用的消息格式和协议定义。CMD 定义了在 DoIP 网络中发送和接收的通信消息的结构、字段和指令,确保设备之间的消息解释和通信的正确性。
- DSC:诊断会话控制(Diagnostic session control),用于在 DoIP 网络中控制和管理诊断会话的机制和规范。DSC定义了诊断会话的建立、终止、继续和切换等操作,以确保设备之间的稳定和可靠的诊断通信。
- DTC:诊断故障码(Diagnostic trouble codes),用于报告和表示车辆或设备的故障情况。DTC 是一种规范化的编码方式,用于标识特定故障的类型和位置。它提供了诊断和故障排除的重要参考信息。
- DID:数据标识符(Data identifier),用于标识在 DoIP 网络中传输的特定数据类型或数据集。DID 可用于请求特定的诊断数据,例如传感器数据、控制单元的参数或车辆配置信息等。CDD 提供了 DID 的上下文和描述,帮助设备理解特定 DID 所代表的数据类型,以便正确地进行数据交换和解析。
- EID:实体标识符(Entity ID),用于唯一标识通过 DoIP 协议连接到网络上的设备或实体。每个设备或实体都 分配了一个独特的 EID,用于在网络中进行识别和通信。
- GID:组标识符(Group identifier),用于对设备或实体进行分组。通过将设备或实体分配到不同的组中,可以在网络中实现更灵活和有效的通信和控制。GID 可以帮助区分具有相似功能或属性的设备或实体。
- SID:会话标识符(Session ID),用于标识两个通过DoIP协议建立的通信实体之间的会话。在建立通信会话时,会为每个会话分配一个唯一的SID。SID可用于跟踪会话状态,并确保消息的正确传输和处理。
- UDS:统一诊断服务(Unified diagnostic services),是一种在 DoIP 中使用的诊断协议,通过定义标准化的服务和消息格式,提供了统一的诊断服务,使得在车辆诊断和通信中能够实现互操作性和一致性。
DoIP 协议报文
DoIP 报头中有两字节的数据类型(Payload Type),代表 DoIP 报文类型,下表列出了 DoIP 的标准报文类型定义。
数据类型分为三部分,标绿的是节点管理报文,标黄的是状态信息获取报文,标蓝的是诊断报文。
- 节点管理报文的作用主要是获取 DoIP 节点的信息、建立连接、保持连接等。
- 状态信息获取报文的作用主要是获取 DoIP 节点的状态及电源模式信息。
- 诊断报文的作用主要是搭载的 UDS 诊断信息并完成诊断数据交互。