邹志育 AUTOSAR组织
在汽车技术飞速发展的当下,汽车内部网络变得越来越复杂,传统的诊断方式逐渐难以满足高速需求。基于以太网的诊断协议 ——Diagnostic over Internet Protocol(DoIP)开始被使用,正逐步成为车载网络诊断的关键协议。本文将会介绍DoIP协议,让大家可以深入了解 DoIP协议。
DoIP 协议:车载网络诊断的新趋势
DoIP是基于以太网的通信协议,依据ISO13400标准,用于传输UDS(Unified Diagnostic Services,统一诊断服务)协议的数据。与传统的CAN总线相比,它有着诸多优势。首先,其传输速度快,能达到百兆级别,而CAN总线速度仅为500Kbps到2Kbps,差距明显。其次,DoIP支持更长的数据传输延迟时间,带宽容量更大,可处理大量数据,在复杂的诊断任务和刷新应用中,能极大节省时间。再者,它的应用范围更广,可配合远程诊断技术,实现固定和远程诊断。
从发展趋势来看,随着车载网络向以太网方向进化,支持TCP/IP协议,DoIP在车载网络中的应用愈发广泛,有逐步替代CAN总线的趋势。它常见的应用场景包括车辆检查和维修、车载 ECU(Electronic Control Unit,电子控制单元)的模块刷新,以及车辆和 ECU 下线时的检查和维修。
在车载网络中,DoIP的诊断架构分为车内网络和外部网络两部分,两者均基于IP 网络,还有一根激活线。激活线在非诊断通信期间,可关闭与诊断功能相关的设备,降低能耗和电磁干扰,减少网络带宽消耗。车内诊断网络包含边缘节点、网关节点、一般 DoIP 节点和其他网络节点。边缘节点直接与外部诊断设备物理连接,可作为网络交换机或网关,在车内网和车外网间转发信息,且具备以太网激活性硬线,用于启动诊断功能。网关节点实现以太网到其他网络总线(如 CAN、FlexRay)的路由,降低整车布线复杂度,提高 ECU 诊断效率。一般DoIP节点仅支持自身诊断,不具备路由功能,其他网络节点则完全不支持DoIP诊断功能。
DoIP 报文:格式与类型的深度剖析
DoIP 报文基于以太网报文的传输层协议,在发送前需封装以太网报文首部、IP 报文首部和传输层(TCP/UDP)报文首部。其自身报文格式包含协议版本、协议版本取反(用于校验)、数据类型、数据长度,以及实际的以太网报文(含源地址、目的地址和用户数据)。
DoIP 报文的负载类型有三种:节点管理类(0x00 – 0x08)、诊断类(0x8001 – 0x8004 和 0x4001 – 0x4004)和节点状态类。逻辑地址在 DoIP 中用于标识不同设备服务,独立于物理硬件,分为源地址(FA)和目标地址(TA),又可细分为物理逻辑地址和功能逻辑地址。物理逻辑地址唯一标识实体,功能逻辑地址用于将报文发送给车内一组或所有诊断实体。根据 ISO 13400 协议,逻辑地址有分段规定,如 0x01 – 0xDFF 用于自定义车内具有 DoIP 功能的 ECU,0x10 – 0xFFF 留给外部测试设备。
在 IP 网络中,DoIP 通过手动配置(静态 IP)或动态主机配置协议 DHCP 自动配置 IP 地址。静态 IP 适用于网络状态稳定的环境,如车内部分 ECU;DHCP 适用于设备变动频繁的情况。在 DoIP 通信中,传输层协议有 TCP 和 UDP。TCP 是可靠传输协议,通过三次握手建立连接,确保数据传输的顺序和完整性,常用于重要的诊断通信,如 ECU 程序刷写,其目的端口号为 13400。UDP 是无连接协议,资源消耗和软件开销小,通信速度快,但可靠性较低,用于车辆发现、基本诊断请求等不需要确认的服务,有 UDP discovery(端口号 13400)和 UDP test equipment request(49152 - 65535 范围内动态定义)两个端口。
DoIP 工作流程:从连接到诊断的完整路径
DoIP 的工作流程较为复杂,从开启连接到关闭连接,涉及多个环节和不同角色,包括操作员、DoIP 测试设备(Client)、车内 ECU 的 DoIP 实体(Server)等。
工作前提是在 IP 层面建立连接,车辆发送声明且测试设备收到并加入列表。操作员在测试设备上选择要诊断的车辆,测试设备和 ECU 端分别建立 TCP 或 UDP 通信的 socket。随后进行路由激活操作,若成功,意味着 DoIP 层面连接正常,非 DoIP 节点也能被纳入 DoIP 诊断网络。路由激活响应收到后,操作员可进行基本诊断操作,发送诊断报文给 DoIP 网关。网关根据逻辑地址判断报文是否针对自身 ECU,若是则响应,否则打包转发给子网节点处理。诊断通信中会加入确认消息,确保诊断请求被接收。当所有诊断任务完成,如 ECU 刷写结束,操作员释放或关闭 TCP 链接,完成整个 DoIP 工作流程。
在连接过程中,DoIP 节点管理类报文发挥着重要作用,包括首部否定响应报文、车辆声明标识报文、路由激活报文和在线检测报文等。首部否定响应报文有五个响应码,对应不同错误情况,如格式错误、未知负载类型等,节点会根据错误类型采取关闭 socket 或忽略报文等措施。车辆识别时,车外测试仪发送带 EID 或车辆 V 码的识别请求,DoIP 网关收到后与车内编码比较,匹配则发送固定格式的识别响应。路由激活时,外部测试设备请求打开 TCP data socket 并发送路由激活请求,DoIP 实体检查相关条件后进行相应处理,如新建或关闭 socket。在线检测用于检查 socket 状态,确保通信链路可靠。诊断报文是 DoIP 通信的核心,用于执行各种诊断任务,分为诊断请求、肯定响应和否定响应三类,遵循ISO14229的UDS诊断数据标准,通过TCP进行传输。
DoIP 配置:西门子工具的便捷之道
在西门子的 AUTOSAR 以太网协议栈中,DoIP 配置相对简便,借助工具可从 ECU 的 ARXML文件提取以太网通信信号配置,依据西门子定义的增强映射规则完成。每个模块定义文件中设置了参数默认值,客户可根据需求修改。
DoIP 模块通用属性配置(DoIP general)可定制化设置诸多参数,如各种超时时间、最大测试 socket 连接数量等。还可配置 ECU 节点类型,若为 DoIP gateway,可将 GID 配置为与 EID 相同,同时设置车辆声明时间间隔和重复次数。
Connection 配置主要针对 TCP 和 UDP 连接,包括 socket adapt 的 RX 和 TX,这些 PDU 可根据输入文件自动生成。Routing Activation 配置用于将目标地址映射上去,满足不同的应用需求。
DoIP 协议作为车载网络诊断的新兴技术,在提升诊断效率、实现远程诊断等方面具有显著优势。随着汽车智能化发展,其应用前景将更加广阔,它在汽车领域将发挥更大的作用,为未来智能出行提供有力支持。
与我们联络:
hub.cn@autosar.org