UDS诊断作为汽车ECU里的一个服务功能,位于应用层,它的实现需要有网络的支撑,我们把基于CAN总线实现的UDS诊断称为DoCAN,基于Ethernet实现的UDS诊断称为DoIP
DoIP
DiagnosticcommunicationoverInternetProtocol,我们把通过以太网协议,承载UDS数据,实现诊断通信的这种方式称为DoIP
DoIP的好处有哪些呢?
相比DoCAN中CAN网络的封闭性,DoIP由于Ethernet的互联互通,可以实现车与车、车与人的远距离诊断通信
DoIP在传输层以下的规范遵循ISO13400,而应用层还是遵循ISO14229不变,这样可以保证UDS诊断在不同车载网络上的可移植性
ISO13400-2规定了外部测试设备与车辆ECU之间的诊断通信要求,包括:
支持DoIP的车辆网络架构图如下
从这张图上可以看出:汽车内部必须有一个DoIP的总网关,它作为和外部的诊断设备DoIP通信的唯一接口
网络层要求
MAC层
没什么可说的,和标准的以太网物理链路层一样,都是基于IEEE802.3
网络层
和标准以太网网络层一样,但是需要注意的一点是,DoIP在以太网IP层首先IPv6协议,同时兼容IPv4
传输层
TCP
除了遵循TCP协议的标准规范外,DoIP在TCP协议上还应遵守:
TCP连接的过程
UDP
UDP协议在DoIP中的作用和使用的端口号为:
车辆发现的两种方式:
DoIP设备启动后,通过UDP向13400端口广播发送vehicleannouncementmessage,源端口号为13400或随机,里面包含此DoIP设备的基本信息,外部测试设备需要监听13400来接收这些信息
外部测试设备通过UDP广播发送request消息,目标端口号是13400,DoIP设备监听在13400端口,接收此request并响应
DoIPProtocol
DoIP报文的结构
DoIPHeader
PayloadType
其中最常用的几个:
从中可以看出DoIP诊断通信前需要做的事:
网关
汽车网络中由于同时存在多种网络,而造成不同网络上的诊断功能无法互相通信,这时候就需要网关的作用
比如说:
对于DoCAN和DoIP,网关起到的作用就是接收、解封装、封装、发送
DoCAN报文需要发给DoIP设备,网关会先把DoCAN的CAN网络头部剥离,留下UDS数据,然后再用这个UDS数据封装一条完整的DoIP报文,发出去
DoIP报文需要发给DoCAN设备,网关会先把DoIP的所有头部剥离,留下UDS数据,然后用这个UDS数据封装一条完整的DoCAN报文,发出去