随着ECU功能和存储容量的不断提高,主机厂对于ECU诊断和刷写有了更高的要求。由于带宽的限制,传统的汽车总线(如CAN总线)存在刷写时间过长的缺点,大大降低了生产和维修效率。DoIP(Diagnostics over Internet Protocol,ISO 13400)基于以太网传输,具有高带宽、低成本的特点。此外DoIP还可以基于WLAN或者移动通信建立灵活强大的诊断连接系统,使远程诊断、并行刷写等应用场景成为可能。
DoIP基于TCP/IP协议传输诊断报文,如图1所示,诊断服务数据采用UDS进行描述,所以DoIP并非是一个诊断协议,准确地说是一个扩充的传输层协议。
ISO 13400定义DoIP通信的标准流程,对高效实现ECU诊断和刷写很重要。图2给出了通过外部测试设备Tester连接DoIP网关对子网上的Non-DoIP ECU进行诊断的过程。
-
车辆发现(Vehicle Discovery):诊断网络可以是Tester和车内单独某个DoIP实体的点对点连接,也可以是在一个复杂的分布式网络中,包含多台测试设备、多个车辆、多个DoIP实体的情况。通过车辆发现过程可以找到特定车辆及DoIP实体。
-
建立TCP通信连接(Open TCP socket):Tester和特定DoIP实体建立TCP连接。
-
路由激活(Routing Activation):Tester发送路由激活请求,DoIP实体确认Tester的逻辑地址、激活类型等信息是否合法,只有上述信息合法有效,Tester才可以发送诊断请求报文。
-
诊断报文通信(Diagnostic message [Request]):Tester发送DoIP诊断请求报文,诊断请求报文中包含目标的逻辑地址,可用来区分不同的诊断实体。示例中DoIP网关通过诊断请求中的逻辑地址判断出该请求的对象是Non-DoIP ECU,故将该请求信息转发给Non- DoIP ECU。
-
诊断报文通信(Diagnostic message positive ack.):DoIP网关在诊断请求报文被处理并复制到目标网络传输缓冲区之后立刻发送诊断确认信息。
-
诊断报文通信(Diagnostic message [Response]):Non-DoIP接收到诊断请求之后会回复诊断响应,该响应经由DoIP网关转发给Tester。
CANoe从7.1版本开始支持DoIP:
- CANoe充当Tester诊断DoIP实体;
- 使用DoIP库文件仿真DoIP实体,如DoIP节点或者DoIP网关。
本文主要介绍如何将CANoe作为Tester与DoIP实体建立通信,并对物理连接、网络设置、诊断参数设置进行简单说明。
1 物理连接
DoIP物理层协议采用IEEE 802.3 100BASE-TX,因此可以直接使用计算机的网卡进行通信。但是建议使用VN56xx系列硬件接口卡,或VT系统板卡VT6306,原因如下:
-
虽然ISO 13400协议只提及使用传统的以太网物理层,但现在越来越多的车内以太网节点集成了DoIP功能,而其物理层形式一般只支持100/1000BASE-T1,导致无法使用传统以太网接口设备与之建立通信。
-
避免出现因为计算机的防火墙配置(无法进行TCP连接,端口或IP地址被阻止)造成无法通信的问题。
-
避免出现因为计算机的防火墙配置(无法进行TCP连接,端口或IP地址被阻止)造成无法通信的问题。
-
报文时间戳精度更高(8ns)。
-
VN5610A/VN5640提供两路高速CAN/CAN FD,可以同时进行CAN和Ethernet通信,方便实现诸如CAN/Ethernet网关功能。
-
确保与其它硬件设备接口的同步(软件同步精度50µs,硬件同步精度1µs),这一点对于网关测试非常重要。
-
VN5610A/VN5640提供数字/模拟IO通道,可用于使能DoIP激活线或者禁用ECU的DoIP功能。
2 网络设置
正确的网络配置是实现DoIP通信的前提,在图3所示界面可设置用于通信的TCP/IP Stack,如MAC地址、VLAN Tag、网络层协议类型IPv4/IPv6、IP地址、子网掩码等信息。
DoIP实体通信网络是否使用VLAN Tag?
DoIP实体通信网络是静态IP地址还是通过DHCP服务器获取的动态IP地址?
3 诊断参数设置
和基于CAN总线的诊断类似,DoIP的诊断相关配置也在”Diagnostics/ISO TP Configuration”窗口完成。在Ethernet网络上添加诊断描述文件(例如*.cdd)后,即可进行诊断参数相关设置。
”DoIP/HSFZ Settings”处可设置DoIP通信的基本参数,如图4所示。其中(A)处可以设置CANoe Tester的逻辑地址、激活类型,ECU的物理逻辑地址和功能逻辑地址。(B)处可以指定CANoe Tester使用的网络接口和IP地址。(C)处可以配置目标IP地址,如果留空,则Tester会正常发送车辆识别请求(Vehicle Identification Request),如果正确指定DoIP实体IP,则Tester将跳过Vehicle Discovery过程。
除了上述诊断参数配置,在CANoe中还可以设置DoIP其它属性,如切换DoIP版本,更多详细信息可参考CANoe帮助文档。
4 DoIP通信过程报文数据示例
完成上述配置工作之后,打开诊断控制台(Diagnostic Console)窗口,发送一条诊断请求,在Trace窗口中就能看到DoIP的通信报文数据。
图5显示在静态IP地址的情况下,Tester与ECU进行DoIP通信的过程。
-
建立TCP连接(TCP Connection),由CANoe Tester发起请求并与ECU建立TCP连接。
-
路由激活(Routing Activation),由CANoe Tester发起请求并由ECU检查逻辑源地址激活类型等信息。
-
Tester发送诊断请求。
-
ECU发送诊断请求接收确认信息。
-
ECU回复诊断响应。
图6显示在动态IP地址的情况下,Tester与ECU进行DoIP通信的过程。
-
DHCP服务器给CANoe Tester和ECU分配 IP地址。
-
CANoe Tester发送车辆识别请求。ECU在建立TCP连接和路由激活之前,使用车辆声明报文(Vehicle Announcement)来响应此车辆标识请求。
-
建立TCP连接(TCP Connection),由CANoe Tester发起请求并与ECU建立TCP连接。
-
路由激活(Routing Activation),由CANoe Tester发起请求并由ECU检查逻辑源地址激活类型等信息。
-
Tester发送诊断请求。
-
ECU发送诊断请求接收确认信息。
-
ECU回复诊断响应