以太网在诊断方面的应用已经有多年的时间了,尤其是在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协议。
与传统总线系统的诊断相同,诊断仪可以发送诊断请求。测试仪可以采用外部设备的形式,例如售后诊断仪或者车载测试仪。ECU处理诊断请求,并向测试仪返回相应的诊断响应。这要求每个ECU底层都支持DoIP协议。
为了避免在每个ECU底层实现DoIP,DoIP协议允许使用诊断网关。原则上,车辆内传统总线系统连接的所有ECU都是可用的。网关充当中间人的角色,将测试仪的请求转发到内部网络,以便ECU进行接收和处理。当收到ECU的响应时,网关会将该响应路由回测试仪。
诊断网关需要两方面信息以转发诊断请求和响应。首先,网关需要逻辑地址来对车辆中要诊断的ECU进行唯一标识。其次,网关必须了解在总线或网络上哪些报文将用于发送诊断请求和接收诊断响应。这两方面的信息必须准确提供给ECU,以便其可以通过网关进行访问。
在诊断过程中,诊断网关首先接收来自测试仪的请求。该请求包含诊断数据包,其中携带所需的诊断服务和待诊断ECU的逻辑地址信息。随后网关从该诊断数据包中提取有关内容,并将其打包为可在总线或网络上发送的报文。例如,如果要通过CAN总线对ECU进行寻址,网关需要将带有相应的诊断请求标志符(如0x600)的报文发送到总线,然后等待来自ECU的响应。在收到来自总线或网络的响应(如带标志符0x700的CAN报文)之后,网关会将原始诊断服务的响应返回给测试仪。网关会在返回给测试仪的响应中添加ECU 的逻辑地址,以便测试仪能够区分并分配响应。这样,测试仪可以向位于不同的总线系统和网络的多个ECU发送请求,而无需按照发送请求的顺序等待响应。