文章目录
第一章:引言
随着车载电子系统的不断演进和功能的日益复杂化,当前广泛应用的车辆通信网络总线主要包括CAN、LIN、FlexRay、MOST、LVDS等。然而,随着控制器数量和接口需求的不断增加,以及车内控制单元和域之间通信需求的增强,传统总线逐渐暴露出带宽瓶颈和通信效率低下的问题。这种情况导致对信息高速传输需求的日益迫切,迫使汽车电子系统引入更高带宽、更可靠的通信技术。
在这个背景下,基于以太网的车载通信技术成为了备受关注的解决方案。以太网技术能够通过稳定的双全工通信,最高传输速率可达1000Mb/s,为车内电子控制单元提供了相互通信并形成局域网的解决方案。传统的车辆通信网络总线已经难以满足汽车电子系统日益增长的通信需求,因此,基于以太网的通信技术逐渐成为汽车领域的热门话题。
1.1 传统车辆通信网络总线的局限性
- 分析传统车辆通信网络总线(如CAN、LIN、FlexRay等)的特点和局限性。
- 探讨随着车载电子系统发展所带来的带宽瓶颈和通信效率低下的问题。
- 引出引入基于以太网的车载通信技术的必要性。
1.2 基于以太网的车载通信技术的发展趋势
- 介绍基于以太网的车载通信技术的优势和应用前景。
- 分析以太网技术在车载通信中的可行性和优势,以及其在其他领域的成功应用。
- 引出DoIP协议作为基于以太网的汽车通信协议的具体案例。
1.3 引入DoIP协议
- 介绍DoIP(Diagnostics over Internet Protocol)协议的背景和基本概念。
- 探讨为何DoIP协议成为汽车诊断领域的重要标准。
- 提出本章将对DoIP协议进行深入浅出的介绍,探讨其基本原理、工作机制以及在汽车电子系统中的应用。
通过这三个小节,读者可以对传统车辆通信网络总线的局限性、基于以太网的车载通信技术的发展趋势以及DoIP协议的引入有一个全面的了解,并为后续章节的讨论做好铺垫。
第二章:车载网络通信技术概述
车载网络通信技术在汽车电子系统中发挥着至关重要的作用。本章将简要介绍传统车辆通信网络总线以及其局限性,并引入基于以太网的车载通信技术的发展趋势。
2.1 传统车辆通信网络总线及其局限性
传统车辆通信网络总线,如Controller Area Network (CAN)、Local Interconnect Network (LIN)、FlexRay等,曾是汽车电子系统中最常用的通信技术。然而,随着汽车电子系统的不断发展和功能的增加,传统总线所面临的局限性也逐渐显露出来。
传统车辆通信网络总线的局限性主要包括:
- 带宽限制:传统总线的带宽有限,无法满足日益增长的数据传输需求。
- 通信效率低:由于总线结构和协议设计的限制,传统总线在数据传输效率上存在一定的瓶颈。
- 扩展性差:传统总线难以轻松扩展新设备或功能,增加新的控制器和接口会带来一定的挑战。
2.2 基于以太网的车载通信技术的发展趋势
随着汽车电子系统的智能化和互联化发展,基于以太网的车载通信技术逐渐成为主流趋势。以太网技术具有以下优势,使其成为替代传统总线的理想选择:
- 高带宽:以太网技术提供了更高的数据传输速率,能够满足车内控制单元之间日益增长的通信需求。
- 灵活性:以太网技术采用标准化的协议和接口,能够轻松扩展和添加新的设备,适应汽车电子系统的不断变化和增长。
- 可靠性:基于以太网的通信技术在设计上考虑了汽车环境的特殊性,采用了抗干扰和容错机制,提高了数据传输的可靠性和稳定性。
基于以上优势,基于以太网的车载通信技术已经成为未来汽车电子系统发展的主流方向。它将为汽车制造商提供更高效、更灵活和更可靠的通信解决方案,推动汽车智能化和互联化的发展。
第三章:DoIP协议基础
本章介绍了DoIP(Diagnostic Communication over Internet Protocol)协议的基础知识,包括概述、相关术语和缩写、与传统诊断协议的区别、在车载系统中的应用以及未来发展趋势。
1 DoIP协议概述:
DoIP是基于以太网的诊断通信协议,用于在车载系统中进行诊断通信,规范于ISO 13400标准。
DoIP协议提供了高速、可靠的诊断数据传输方案,满足了车载电子系统日益增长的通信需求。
它主要用于建立外部测试设备与车载网络之间的诊断连接,常见应用包括车辆检查和维修、软件重编程、下线检查等。
2 相关术语和缩写:
解释了一些与DoIP协议相关的术语和缩写,包括UDS、OBD、FOTA等。
DoIP协议与传统诊断协议的区别:
比较了DoIP协议与传统诊断协议在技术特点、应用场景等方面的异同,强调了DoIP的优势,如更高的数据传输速率和可靠性。
3、DoIP协议在车载系统中的应用:
描述了DoIP在车载系统中的广泛应用,包括车辆检查和维修、软件重编程、下线检查等方面,以及其在提升整体效率和性能方面的作用。
4、DoIP协议未来发展趋势:
展望了DoIP协议的未来发展趋势,探讨了其在汽车行业中的潜在作用和影响,以及面临的挑战和解决方案。
3.1 DoIP协议概述
DoIP(Diagnostic Communication over Internet Protocol)是一种基于以太网的通讯协议,用于对UDS(Unified Diagnostic Service)协议的数据进行传输,规范于ISO 13400标准。它的出现主要是为了满足车载电子系统日益增长的通信需求,提供了高速、可靠的诊断数据传输方案。本节将介绍DoIP协议的基本概念、特点和应用场景。
所谓的DoIP其实就是基于以太网的通讯协议对UDS协议的数据进行传输,即Diagnostic communication over Internet Protocol。其本身也是一种协议,规范于ISO13400标准。由于DoIP可以传输大量数据,以及响应速度快,且可以通过以太网进行远程诊断,因此DoIP逐步成为代替传统的CAN等总线方式,成为车载网络诊断的必然趋势。
DoIP在车载领域的应用首先汽车系统的整体框架要能够支持DoIP,正因为车载以太网的快速发展,相较于传统的车载系统,目前的车载系统的整体框架都会加入一层DoIP协议层,在TCP/IP之上。并且为了更好的配合OBD诊断,远程诊断,FOTA等等技术,对整体的车载架构进行了调整,利用swich将MPU,MCU,其它以太网ECU统统通过以太网进行连接,并对外网与内网进行隔离。
简单的说,DoIP能够进行车辆发现,状态查询,路由激活(含安全认证),诊断数据收发,这些内容将在后续进行详细的展开。
DoIP(Diagnostic Communication over Internet Protocol,基于IP的诊断协议)主要用于建立外部测试设备与车载网络之间的诊断连接。常见的应用场景有:
- 车辆检查和维修
- 车辆/ECU软件重编程(模块刷新)
- 车辆/ECU的下线检查和维修
在诊断服务中,DoIP相对于传统的CAN诊断具有以下显著优势:
基于DoIP和DoCAN的网络通信在 OSI 网络模型中的大致架构如下所示,单就协议内容来讲,可以把DoIP协议看作传输层的协议:
对应的ISO标准为ISO-13400,分以下四部分:
Part1: General information and use case definition(相关术语+协议的使用场景)
Part2: Transport protocol and network layer services(协议内容的具体定义)
Part3: Wired vehicle interface based on IEEE 802.3(相关硬件设计选型)
Part4: Ethernet-based high-speed data link connector(对应车辆接插件的选型)
ISO13400 定义的 DoIP 各部分内容在 OSI 网络模型中的架构如下所示:
3.2 相关术语和缩写
3.3 DoIP协议与传统诊断协议的区别
相较于传统的诊断协议(如基于CAN等总线的诊断),DoIP协议具有诸多优势。本节将对DoIP协议与传统诊断协议在技术特点、应用场景等方面进行比较和分析,以突出DoIP在车载网络诊断中的独特价值。
3.4 DoIP协议在车载系统中的应用
DoIP协议在车载系统中的应用广泛,包括车辆检查和维修、车辆/ECU软件重编程(模块刷新)、车辆/ECU的下线检查和维修等方面。本节将具体介绍DoIP在这些应用场景中的运作原理和实际应用案例,以及对车载系统性能和效率的提升。
3.5 DoIP协议未来发展趋势
随着汽车电子系统的不断发展和智能化水平的提升,DoIP协议也在不断演进和完善。本节将展望DoIP协议的未来发展趋势,探讨其在汽车行业中的潜在作用和影响,以及面临的挑战和解决方案。
第四章DoIP协议工作原理
本章介绍了DoIP协议的工作原理,主要涉及四种连接方式:
1、直接点对点连接: 单台车辆与外部设备使用双绞线点对点通信。这种连接方式适用于单车故障诊断或ECU升级等功能,系统不会受到其他车辆或设备的干扰。
2、通过网络的点对点连接: 多个车辆和多个外部测试设备连接到同一个网络。外部测试设备需识别网络中的车辆并选择特定车辆进行通信。车辆应具备识别机制并能够处理多个连接尝试,这种场景通常发生在车辆连接到现有网络或无线基础设施时。
3、单个外部测试设备与多个车辆的网络连接: 单个诊断仪连接多台车辆,适用于产线上的生产监控及ECU刷写。此时,外部测试设备需要支持多个连接,可能发生在专用的flash重编程服务器上,可以同时更新多辆汽车。
4、多个外部测试设备与单个车辆的网络连接: 多台诊断仪通过交换机级联,诊断同一台汽车。各诊断信道互不干扰,可实现多团队同时作业,提高整体工作效率。车辆需能够分离负责每个逻辑链路的每个外部测试设备的诊断请求和响应,而外部设备需要判断当前车辆是否与其他设备进行通讯。
这些连接方式说明了在不同场景下如何实现车辆与外部设备之间的通信,以及各种连接方式的适用情况和特点。
4.1 直接点对点连接
单台车辆与外部设备使用双绞线点对点通信,诊断仪与车辆直连后,可以诊断单车所有DoIP节点,一般用于单车故障诊断或者ECU升级刷写等功能。这种方式意味着在进行诊断通信时,系统不会受到来自其他车辆或设备的干扰。
4.2 通过网络的点对点连接
通过网络连接单台车辆与单一外部测试设备,多个车辆和多个外部测试设备被连接到同一个网络,这意味着外部测试设备应有可能识别网络中的车辆,并选择与之建立通信的特定车辆。当然,设备与车辆本身都应具备自动接入到已存在的IP网络的能力。从车辆的角度来看,这意味着车辆应该实现识别机制,并且应该能够处理或拒绝多个连接尝试,因为其他外部测试设备可能会干扰当前建立的通信。
这种通信场景通常发生在车辆连接到现有网络或无线基础设施时,其他车辆和外部测试设备(例如维修车间网络)也使用这些网络或无线基础设施(例如多台车同时在维修店进行检车、维修)。
4.3 单个外部测试设备与多个车辆的网络连接
单诊断仪连接多台车辆的形式一般用于产线上生产监控及ECU刷写等。从车辆的角度来看,这个通信场景与3.2中描述的场景相同。只有外部测试设备能够支持多个连接, 这种通信场景可能发生在:例如,有一个专用的flash重编程服务器,它可以同时更新多辆汽车(例如,在经销商或制造区域)。
Tip:只有外部测试设备需要有点对多连接的能力(sockets)
4.4 多个外部测试设备与单个车辆的网络连接
多台诊断仪通过交换机级联,诊断同一台汽车,各诊断信道互不干扰,可实现多团队同时作业,提高整体工作效率(例如某台设备需要对车辆进行刷写,而另一台设备需要对该车辆进行诊断)。在这种情况下,车辆应能够清楚地分离负责每个逻辑链路的每个外部测试设备的诊断请求和响应。而对于外部设备,则需要有判断当前车辆是否有在与其他设备进行通讯的能力。
第五章 DoIP架构机制
本章介绍了基于DoIP的网络诊断架构,包括车内网和车外网之间的数据传输和诊断功能激活的激活线。以下是该章节的要点:
1、激活线的必要性: 为了降低能耗和减少电磁干扰,诊断相关的功能在非诊断通信期间处于关闭状态,需要激活线来激活诊断功能。
2、车内网络中的节点类型:
3、DoIP网关节点:实现以太网到其他网络总线(如CAN、LIN)的报文路由,提高了诊断效率和网络兼容性。
边缘节点:直接与外部诊断仪连接,可以作为网络交换机或网关,实现车内网与车外网的连接和安全隔离。
一般的DoIP节点:只支持对自身的诊断,不具备路由功能。
其他网络节点:不具备DoIP诊断功能。
物理连接要求:
支持100Mbit/s,同时也支持10Mbit/s以应对速率波动的情况。
激活线要求通信连接线为Cat-5以上,且长度不超过50m。
4、OBD接口要求: 提供了激活线的电压门限值和激活时间约定,以及OBD接口线的布局方案供参考。
这些要点描述了DoIP网络架构中的物理连接和节点类型,以及为了实现诊断功能而需要遵循的物理连接和接口规范。
5.1 基于DoIP的网络诊断架构
图中分为车内网(Vehicle network)和车外网(External network:此部分为外部测试设备,通常为OBD诊断仪或者其他诊断客户端),车内网和车外网之间,有两组重要的线束,其中一组是用于数据传输的以太网线,另一组是用于诊断功能激活的激活线(Activation line)。以太网线就是我们常见的四线制TX标准网线。而激活线的设计,是用于车内诊断功能的激活。
5.1.1 为什么需要激活线?
为了降低能耗和减少电磁干扰。非诊断通信期间,将与诊断相关的功能处于关闭状态,这样一方面可以降低能耗,另一方面减少对网络带宽的消耗,从而降低电磁干扰。
5.1.2 车内网络中节点类型有哪些?
DoIP网关节点(DoIP gateway)
车内DoIP网关节点的作用,是实现以太网到其他网络总线(如CAN、LIN)的报文路由,这样便实现了DoIP诊断与传统网络总线的兼容。多种网络总线汇聚到DoIP网关,这大大的降低了布线的复杂性,并且提高了各总线网络中ECU的诊断效率。
边缘节点(DoIP edge node)
它是直接与外部诊断仪进行物理连接的节点。边缘节点可作为一个网络交换机,将车内网与车外网组成同一子网;也可以作为一个网关,将车内网与车外网进行安全隔离,屏蔽非法的网络访问和网络攻击。实际上它同样是个网关,其次他用于连接外部测试设备,在外部设备和车内子网之间路由转发消息;相较于 DoIP 网关多了以太网激活线的硬线。
般的DoIP节点
这些节点只支持对自身的诊断,而不具备路由功能。
其他网络节点(Network node)
不具备DoIP诊断功能。
Tip:在车内网络中,各DoIP网关和DoIP节点可以全部级联于DoIP边缘节点,也可以分布于多个交换机网络,但最终都可以被边缘节点直接访问到。
5.2 一些物理连接要求
5.2.1 基本物理连接要求
——支持100Mbit/s为啥还要10Mbit/s的?
如果瞬间达不到100Mbit/s速率,可以降速处理。
5.2.2 车辆激活线的要求
下图是车辆和测试设备之间的物理连接示意图,其中要求通信连接线为Cat-5以上,且诊断仪到汽车OBD接口的长度不超过50m。13400-3中提供了该部分车内接口电路的两种设计方案并且所用电路元器件参数都有选型参考。
激活线的一些电压门限值以及激活时间的约定如下所示:
5.2.3 OBD接口要求
OBD接口线如下所示:
13400-4提供了OBD接口的两种布局方案供参考:
第六章 DoIP协议通信原理
本章介绍了DoIP协议通信原理,包括网际协议(IP)的基本概念和IP地址分配,TCP和UDP在DoIP中的应用原理以及逻辑地址的使用。
在IP方面,DoIP协议采用IPv4或IPv6协议,每个DoIP实体应使用相同的IP协议版本,并实现相应的地址解析和控制报文协议。IP地址可以通过静态配置或DHCP自动分配,以满足不同网络环境的需求。
TCP作为可靠的传输层协议,在DoIP中用于需要高可靠性的诊断通信。它通过三次握手建立连接,确保数据的正确传输。每个DoIP实体应实现TCP,并在需要时监听TCP_DATA端口以建立通信。
UDP是一种无连接的协议,用于不需要确认的服务,如车辆发现或基本诊断请求。DoIP实体应实现UDP,并根据需要监听UDP_DISCOVERY和UDP_TEST_EQUIPMENT_REQUEST端口。
逻辑地址用于在DoIP网络中标识不同的设备和服务,提高了网络的灵活性和可扩展性。物理逻辑地址唯一表示一个诊断实体,而功能逻辑地址用于将报文发送到车内一组或所有诊断实体。
6.1 网际协议( IP)
网际协议(IP)是用于在网络中传输数据的基本协议,是一种用于在各种传输介质上进行封包交换的端到端的数据通信协议,网际协议基于数据报,是不可靠的协议。它定义了数据如何封装、寻址、传输、路由和接收。在DoIP协议中,IP作为核心传输机制,允许诊断信息在车辆网络和诊断设备之间流动。
Tips:
- 车内所有 DoIP 实体均应使用相同的网际协议版本,即IPv4或IPv6
- 如果使用 IPv4 ,则每个DoIP实体均应实现ARP和ICMP
- 如果使用 IPv6 ,则每个DoIP实体均应实现NDP和ICMP v6
6.2 IP地址分配
在DoIP通信中,每个设备都需要一个唯一的IP地址以便识别和通信。IP地址可以通过手动配置(静态)或通过动态主机配置协议(DHCP)自动分配。静态IP地址适用于网络结构不经常变化的环境,而DHCP适用于设备经常变动的情况,如车间诊断。
- 在激活线激活边缘节点网关后,每个DoIP实体应同时执行基于Auto IP和DHCP分配的 IP 地址分配程序;
- 分配结果为 IP地址(IPv4)+ 子网掩码(仅 IPv4);
- 如果 DoIP 实体集成在网络架构中,则还需默认网关地址(即默认路由器的 IP 地址)。
6.3 DoIP中TCP原理及通信的建立
TCP是一种可靠的传输层协议,它确保数据包正确无误地从源传输到目的地。在DoIP中,TCP用于需要高可靠性的诊断通信,如ECU编程。TCP通过三次握手过程建立连接,确保两端的通信是同步的,并且通过序列号和确认应答机制保证数据的顺序和完整性。
内所有DoIP实体均应实现TCP;
TCP使用一对端口号来标识连接,TCP连接时目的端口应当是TCP_DATA;
DoIP实体应在创建socket之后监听TCP_DATA,用于与试图连接DoIP实体的外部测试设备建立通信;
外部测试设备应支持多个TCP_DATA socket,本地端口将在创建socket时自动选择,远程端口应为TCP_DATA。
——三次握手过程建立连接
第一次握手
外部测试设备发送连接请求报文段,将标志位SYN置为1,并随机产生一个序列号 seq=x;把这个值发送给DoIP实体,此时外部测试设备进入SYN_Sent的状态,等待确认;
第二次握手
DoIP实体收到外部测试设备的SYN报文段,由SYN=1 ACK=0知道外部测试设备正在请求建立连接。DoIP实体把ack=x+1;同时要发送SYN请求消息,因此把标志位SYN置成1,并随机生成序列号seq=y;DoIP实体把所有信息一并放入报文段(即 SYN+ack 报文段)发给外部测试设备用来确认连接请求,自此DoIP实体进入了SYN_Receive状态;
第三次握手
外部测试设备收到( SYN+ack )报文段检查ack是否等于x+1。如果正确,把ack=y+1,并把数据包发给DoIP实体。DoIP实体会检查ack是否等于y+1,且seq是否等于x+1,如果正确就连接成功,双方都进入Established状态,完成握手,可以开始接收数据。
6.4 DoIP 中 UDP 原理及通信的建立
与TCP不同,UDP是一种无连接的协议,它允许数据包在没有事先建立连接的情况下发送。这种方法减少了开销,使得通信更快,但也牺牲了可靠性。在DoIP中,UDP用于那些不需要确认的服务,如车辆发现或基本诊断请求。
车内所有DoIP实体均应实现UDP;
当需要外部设备对车辆IP节点进行广播或多播消息请求时,由于TCP的传输机制限制无法实现,因此须使用UDP。
——用于UDP的两个端口类型
UDP_DISCOVERY
外部测试设备和DoIP 实体都需要监听此端口,是主动发送数据时的目的端口。
UDP_TEST_EQUIPMENT_REQUEST
外部测试设备向DoIP 实体发送报文时给自己分配的端口。
——DoIP中的端口类型总结
DoIP协议的实现基于TCP/IP,要想接收DoIP协议的报文,则需要监听一个专门分配给DoIP协议栈使用的端口号,UDP、TCP都要监听此接收端口,而发送端口是一个动态分配的随机值,代码中协议栈要对对端的发送端口进行缓存,用于回送数据。
指定了端口号,客户端和服务端可以在此端口上进行收发数据,并对该端口收到的数据是否真的是DoIP报文进行判断解析(有可能是网络攻击,或是其它应用恰好使用了该端口号)。
总之,不管是TCP还是UDP,都包含源端口号和目的端口号,在DoIP报文中用到了以下三种端口:
——通信建立过程
DoIP 实体主动广播时,以 UDP_DISCOVERY 或 UDP_TEST_EQUIPMENT_REQUEST 作为源端口,目的端口 UDP_DISCOVERY ,而外部测试设备则监听 UDP_DISCOVERY 获得消息。
当外部测试设备向 DoIP 实体发送 UDP 时,设置源端口 UDP_TEST_EQUIPMENT_REQUEST ,目的端口 UDP_DISCOVERY 。当请求发送给 DoIP 实体后,外部测试设备保持对 UDP_TEST_EQUIPMENT_REQUEST 的监听。DoIP实体接收到请求后,将源端口设置为 UDP_DISCOVERY 或 UDP_TEST_EQUIPMENT_REQUEST ,目标端口设置为 DP_TEST_EQUIPMENT_REQUEST ,回复响应。
6.5 逻辑地址(Logical Address)
逻辑地址用于在DoIP网络中标识不同的设备和服务。它们是独立于物理硬件的,可以是源地址(SA)或目标地址(TA)。逻辑地址使得在网络中的数据传输不依赖于物理位置,提高了网络的灵活性和可扩展性。
- 物理逻辑地址唯一表示一个诊断实体,包括任一 DoIP 实体或连接着 DoIP 网关的 ECU;
- 功能逻辑地址用于将报文发送到车内一组或所有诊断实体。
第七章 深入剖析通信协议
本章深入剖析通信协议涵盖了DoIP报文的格式、节点管理类报文、诊断类报文和节点状态类报文。在报文格式方面,DoIP协议支持IPv4与IPv6协议,必须使用相同的IP协议版本。报文的封装格式包括ETH首部、IP首部和TCP/UDP首部。节点管理类报文包括DoIP首部否定响应报文、车辆声明及标识报文、路由激活/响应报文和在线检查请求/响应报文。诊断类报文主要用于执行诊断任务,包括诊断请求报文、诊断肯定响应报文和诊断否定响应报文。节点状态类报文包括DoIP实体状态请求/响应报文和诊断电源请求/响应报文。这些报文类型和格式的详细解释为我们理解DoIP通信协议提供了重要的基础。
7.1 报文格式——首部格式
DoIP协议支持IPv4与IPv6协议,以及对应的地址解析ARP协议、NDP协议以及控制报文协议ICMP,前面的章节均有描述了。目前车载以太网仍以IPv4协议为主,基于对网络发展的考虑,随着地址的增加,会逐渐过渡到IPv6协议。所有统一网段的DoIP都必须使用相同的IP协议版本。
由于DoIP在OSI模型中位于传输层,故DoIP报文发送前要封装ETH首部、IP首部及TCP/UDP首部,DoIP数据作为SDU层层向下传递,直至构成完整的以太网帧,通过物理层的介质发送出去。封装格式如下所示:
以一条车辆识别请求报文为例:
接下来就是对DoIP报文段的内容做详细的拆解说明,DoIP在其报文的Payload起始段添加了DoIP报头(首部),用来区分不同的DoIP报文类型,实现不同的功能,首部包括协议版本号、版本号取反、负载类型及负载长度。
Tips:每条DoIP报文都是有这个首部的!!!
协议版本(1Byte):使用的DoIP协议的版本,取值及相应版本如下所示:
协议版本取反(1Byte):主要目的是对协议版本进行校验,确保正确的DoIP格式(如协议版本为0x03,则此值为0xFC)。
负载类型(2Byte):有以下三大类负载类型。
负载长度(4Byte):携带的实际数据的长度。
从首部的负载类型可见,总共有三类报文:节点管理类、诊断类和节点状态类。下面将针对这三类报文展开详细的介绍。
7.2 节点管理类报文
节点管理类报文有以下四类:
7.2.1 DoIP首部否定响应报文
——报文格式:
其中否定响应码取值情况如下所示:
Tips:
- 每个DoIP实体必须支持DoIP首部否定响应
- 每个DoIP实体应该忽略收到的DoIP首部否定响应报文
- 测试仪收到不符合规范的DoIP报文不应该发送首部否定应答
——DoIP首部通用处理流程:DoIP实体收到任何类型的报文时都应先调用首部处理的流程。
——举例如下:
7.2.2 车辆声明及标识报文
——请求报文的格式:
——响应报文的格式:
其中32字节的 Payload2的结构如下:
Tips:
- DoIP实体接收到车辆信息请求之后会随机延时再回复响应报文,以防止UDP报文激增;
- 车辆声明报文应连续发送三次,提高外部测试设备获取此报文的几率;
- 当车辆声明报文或者车辆信息响应报文中的further action为0x10时,外部测试设备发送路由激活报文中的路由激活类型为0xE0;
- 当车辆声明报文中当VIN等信息未知的时候使用无效值进行填充,如下表所示。
——车辆识别请求报文处理流程:收到车辆识别请求报文的时候,DoIP实体中的处理逻辑应当按如下流程进行:
——举例如下:
从宏观流程上看,车辆识别过程的时序如下所示:
7.2.3 路由激活/响应报文
——请求报文的格式:
其中7或11字节的 Payload1的结构如下:
——响应报文的格式:
其中9或13字节的 Payload2的结构如下:
其中路由激活响应码的取值如下所示:
7.2.4 在线检查请求/响应报文
——请求报文的格式:
——响应报文的格式:
——路由激活&在线检测报文处理流程:
基于以上内容,我们已经可以举一个完整的例子,关于如何实现路由激活的过程,假设在已存在两个socket连接的情况下外部测试设备触发第三个连接,发送路由激活请求,此时处理流程如下图所示:
对于接收该路由激活请求的DoIP实体来说,其内部更细致的处理流程如下所示:
7.3 诊断类报文
诊断类报文是DoIP通信中最常用的也是最重要的报文类型,它们用于执行各种诊断任务。其携带的负载数据通常是遵循ISO-14229的UDS诊断数据。诊断类报文的请求、肯定响应、否定响应的格式如下所示:
其中Payload1对应的报文类型是诊断请求报文,其结构如下所示:
Payload2对应的报文类型是诊断肯定响应报文,其结构如下所示,其中ACK code 正常取0x00(值0x01~0xFF为预留值,暂无实际意义),表示路由确认已接收到诊断请求,并将报文放入目标网络的传输缓冲区中:
Payload3的结构与Payload2相同,不过响应码变为否定响应码,其取值类型如下:
——诊断类报文处理流程:
首先,来自诊断设备(客户端)的一条诊断报文经过网关节点到达待诊断ECU(server端)的路由过程如下所示:
当诊断报文到达server端后,server端这个DoIP实体应当按照如下流程进行处理:
——举例如下:
Example1:诊断报文的肯定应答
Example2:诊断报文的否定应答
7.4 节点状态类报文
节点状态类报文共以下四种类型,分为两类:
7.4.1 DoIP实体状态请求/响应报文
7.4.2 诊断电源请求/响应报文
第八章 DoIP通信流程研究
本章我们深入探讨了DoIP通信的关键过程。建立连接过程涉及路由激活和在线检查,确保通信链路可靠。车辆发现过程允许诊断设备发现可用的车辆ECU,通过广播诊断消息实现。会话建立过程包括TCP_DATAsocket的初始化、路由激活请求的处理和诊断报文的传输。这些过程为DoIP通信提供了坚实的基础,为车辆诊断和编程任务的顺利执行奠定了重要的前提。接下来,我们将详细探讨每个过程的具体细节。
8.1 建立连接过程
建立连接过程是DoIP通信的起点,它涉及到路由激活和在线检查,确保诊断设备和目标节点之间的通信链路是可用的。DoIP实体内管理着一个DoIP connection table ,用来记录和维护诊断通信的逻辑连接。下图就是这个表中的一个元素,即一个逻辑连接的状态机。图中的方框就是连接所处的状态,[Step]是状态之间跳转时发生的事情。
[Step1] 当一个新的套接字建立,逻辑连接的状态就从“listen”跳转到“socket initialized”,同时启动一个定时器, initial inactivity timer。
[Step2] 当DoIP实体接收到tester发来的一个routing activation信息后,逻辑连接的状态就从“socket initialized”跳转到“Registered [等待授权]” ,此时 initial inactivity timer被停止,启动一个名为general inactivity timer的定时器。
[Step3] 在完成Authentication之后,逻辑连接的状态就从“Registered [等待授权]”跳转到“Registered [等待确认]” 。
[Step4] 在完成Confrmation之后,逻辑连接状态就从“Registered [等待确认]”跳转到“Registered [路由激活] ” 。
[Step5] 如果 initial timer 或 general inactivity timer 过期后仍没收到后续请求,或者authentication 和 confrmation 被拒绝了,又或者外部测试设备对 alive check 消息没有响应,则逻辑连接进入“Finalize”状态。
[Step6] 进入Finalize后,此时TCP套接字将被关闭,并重新回到“Listen”状态。
8.2 车辆发现过程
车辆发现过程允许诊断设备在网络中发现可用的车辆ECU。这通常通过广播诊断消息实现,所有在线的ECU都会响应这些消息。
当DoIP实体和外部测试设备都连接到一个网络中时,它们会利用DHCP协议获得一个属于自己的IP地址。在网络中,路由器作为DHCP server,为新加入到该网络中的设备分配IP地址。在获取IP地址之后,由DoIP实体主动发出3次声明报文,广播其VIN、EID、GID和逻辑地址,根据ISO13400标准规定,3次报文间隔时间在0~500ms。此时外部测试设备如果没有收到或漏收了3次声明报文,则需要外部测试设备主动向车内DoIP实体发送请求,等待500ms的时间间隔后,收到DoIP实体响应。
8.3 会话建立过程
在外部测试设备发现车辆之后,会把车辆添加到自己的车辆列表中。外部测试设备选择对应的车辆,请求DoIP实体打开TCP_DATAsocket。DoIP实体需确认当前申请socket是否未被占用,接收报文的源地址是否被其他TCP_DATAsocket占用。如当前申请的TCPsocket已被占用或SA已被其他TCP_DATAsocket占用,则发送激活否定响应报文,关闭当前报文的socket;如均未被占用,则继续进行初始化TCP_DATAsocket。
之后外部测试设备向DoIP实体发送路由激活请求,DoIP实体进行通用DoIP首部处理和路由激活处理,注册TCP_DATAsocket,并对外部测试设备的激活请求进行响应,从而完成路由激活连接。
外部测试设备发送诊断报文到DoIP实体,DoIP实体经过通用DoIP首部处理及DoIP诊断处理后,向外部测试设备发送确认接收的诊断响应。再由DoIP实体向车内节点发送诊断请求,等待车内节点反馈诊断响应后,由DoIP实体向外部测试设备发送诊断响应。此处,DoIP实体可以支持与车内非DoIP实体的ECU通信。
如当前无诊断需求时,由外部测试设备向DoIP实体发送关闭TCP_DATAsocket命令,DoIP实体执行释放TCP_DATAsocket,以备下一次诊断服务中使用。整个过程如下图所示:
下面这幅图里对车辆识别过程的描述更加详细一些:
第九章 结论
DoIP作为一种高效的车辆诊断通信协议,在节点管理类、诊断类和节点状态类报文的支持下,为执行车辆的诊断和编程任务提供了灵活且可靠的方式。其通信流程保证了数据的准确传输和网络的稳定性,成为现代车辆通信领域不可或缺的一部分。随着技术的不断发展,DoIP协议将持续适应新的挑战,并为车辆诊断提供更多支持。
主要总结如下几点:
1、高效的通信协议: DoIP通过节点管理类、诊断类和节点状态类报文实现高效的车辆诊断通信,为车辆诊断和编程任务提供了可靠的通信方案。
2、准确传输和稳定网络: DoIP的通信流程确保了数据的准确传输和网络的稳定性,提高了诊断和编程任务的成功率和效率。
3、现代车辆通信的必需品: 作为现代车辆通信领域的一部分,DoIP协议已经成为车辆诊断的必需品,为车辆制造商和维修人员提供了强大的工具。
4、持续适应新挑战: 随着技术的发展,DoIP协议将继续适应新的挑战,为车辆诊断领域的发展提供支持,并不断改进和优化其性能和功能。
结合以上论述,可以得出结论:DoIP协议在现代车辆诊断中发挥着不可替代的作用,其高效的通信机制和稳定的网络连接为车辆诊断和编程任务提供了强大的支持,并将继续在未来发展中发挥重要作用。