石聪、刘洋
(1.北汽福田汽车股份有限公司,北京 102200;2.北京汽车股份有限公司,北京 101300)
随着科技的发展,现如今人们对车辆需求已不止于代步,智能化、网络化、科技化成为人们关注的焦点。车辆智能化就意味着如驾驶辅助系统(ADAS)、环视监控系统和车载影像系统(FCS)等高科技电子控制单元在车辆上应用越来越普及,对于车内电子控制单元之间的网络通信速率要求也越来越高。传统的CAN 总线已不能满足信息高速传输要求,故引入了车载以太网技术。
DoIP(Diagnostic Communication over Internet Protocol,基于IP 的诊断协议)的主要作用是建立外部测试设备与车载网络之间的诊断连接。在诊断服务中,DoIP 相对于传统的CAN 诊断具有以下显著优势。
(1)高速率。通常DoIP 诊断传输速率采用100 Mb/s,在复杂的诊断任务(如软件刷写、在线检测或软件升级等)中能够实现高速率传输,可节约时间,提高效率。
(2)低成本。可使用成熟的以太网标准硬件组件(如以太网控制器、Cat5 线缆和RJ-45 连接器),无需经过硬件VCI,通过以太网接口连接电子控制单元即可实现通信,且能兼容CAN/CANFD 通信。
(3)应用范围广。DoIP 技术可实现本地诊断、远程诊断和空中下载技术(OTA)等功能。
DoIP 是位于OSI 模型中的应用层,通过TCP/UDP 协议传输,物理层与数据链路层遵循ISO 13400 标准,应用层遵循ISO 14229-5 标准。如DoIP 的网络节点支持Internet 连接,则该节点应支持基于IEEE 802 接口连接的远程诊断。
车载以太网的DoIP 协议主要应用于售后诊断、ECU 刷写等场景,针对不同的应用环境,连接方式也有一定差异。
段主任说:我不是说了吗,像他这种情况,必须住院做个气管镜才能知道。你们商量一下,看看怎么办吧?王姐又问:他们回去做行吗?段主任点头说:气管镜是小手术,在哪儿做都行。王姐说:段主任,咱们商量一下呗,在这儿做,不住院行不行?段主任笑了,摆手说:这可不行,做气管镜,必须住院。再说做前还有许多化验要做呢。
(1)直接点对点连接:用于车辆开发、测试和售后场景。点对点连接进行诊断通信时,车内系统不会受到来自其他车辆或设备的干扰,外部测试设备也很明确对应需要物理连接的车辆。
(2)通过网络的点对点连接:适用于多台车辆同时在维修店进行检测、维修。车辆与外部测试设备都应具备识别能力与自动接入到已存在的IP 网络的能力,在局域网络内识别出所需要连接的对象,并拒绝来自其他车辆或者设备的请求信号。
(3)单个外部测试设备与多个车辆的网络连接:适用于整批量汽车在制造工厂或售后维修店进行程序刷写。此种连接方式只需外部测试设备有点对多连接的能力,车内节点对外部测试设备进行响应。
(4)多个外部测试设备与单个车辆的网络连接:车内节点同时有刷写和诊断需求时,需要一台外部设备对车内节点进行刷写,另一台外部设备对另一节点进行诊断。此时车辆需要具备区分诊断请求以及反馈的能力。外部设备则需要有判断当前车辆是否在与其他设备进行通讯的能力,根据实际情况判断是进入等待或进入socket 连接。
车辆诊断构架分为车内网络与车外网络两部分,其中车内网络包含以下几部分。
(1)DoIP 节点:基于DoIP 协议通信的网络节点,但只能作为通信节点,不能支持路由DoIP 报文。
(2)DoIP 网关:车辆内部网关,实现DoIP 协议的主机节点;可路由其连接的子网与外部设备之间的报文。
(3)DoIP 边缘节点网关:负责路由外部设备和车内子网之间信息,通过激活线与外部测试设备连接,需要以太网激活线先对及进行激活,才能实现通信。
车外网络包括以下两部分。
(1)外部测试设备:指支持DoIP 协议且具有强大存储能力与处理能力的终端(如PC、笔记本电脑或手机)。外部测试设备通过DoIP 协议访问车辆内部网络中的DoIP 实体。
(2)车外网络节点:此类节点作为与DoIP 系统相关的网络节点并不是必须存在的,是作为一些车联网网络中的其他功能节点。
DoIP诊断的车内网络与车外网络架构如图1所示。可以看到,外部测试设备与DoIP 边缘节点之间除了通过物理介质链接以外,还可以通过WLAN 技术进行无线网络连接。
图1 诊断DoIP 网络架构
测试设备(Tester)与DoIP 边缘节点连接线由4 根支持100BASE-T 或10BASE-T 的数据传输线与激活线K 线组成,Tester端通过以太网网口连接,车辆通过OBD II 端口连接。外部测试设备是通过改变硬线激活线电压来控制车内DoIP 边缘节点控制器的激活与停用。硬线激活线的电压要求范围如图2所示。
图2 激活电压范围
激活线的作用是降低功耗和抗电磁干扰,为避免由地面移位或电磁干扰引起的随机误激活,ISO 13400 标准中规定,激活线的禁用电压阈值()为2 V。如以太网在已停用状态,DoIP 边缘节点在低于2 V 的电压时不会被激活。当激活电压在5~32 V(~)并保持200 ms 后,边缘节点硬件被激活。因此可在接收电路中设计一个小于200 ms 的滤波器时间常数,能够保持200 ms。当介于和之间时,以太网硬件应保持激活状态。激活线电压低于的200 ms 后,边缘节点失活,表明可以停用以太网硬件。当激活线处于“保持有效”状态时,应允许通信,但只有在检测到链路后才能进行通信。
车辆DoIP 诊断接口采用标准的OBD II 接口,要求其不仅可支持传统CAN 诊断,也可支持以太网DoIP 诊断。故而布置时也应同时满足以太网IEEE 802 标准与ISO 15031-3 标准(或SAE J1962 协议)。当前通用的端子布局有以下2 种模式。
第一种模式是1号和9号端子用于CAN诊断协议,3号、11号、12 号和13 号端子用于以太网DoIP 诊断协议,8 号端子用于布置DoIP 网络激活线。
第二种模式是3号和11号端子用于CAN诊断协议,1号、9号、12 号和13 号端子用于DoIP 诊断协议。与第一种相同的是,8 号端子同样用于布置DoIP 网络激活线。
由于目前主机厂多采用3 号和11 号端子作为CAN 网络诊断,故此处推荐第二种布置方式。
DoIP 协议支持IPv4 与IPv6 协议,以及对应的地址解析ARP协议、NDP 协议以及控制报文协议ICMP。目前车载以太网仍以IPv4 协议为主,基于对网络发展的考虑,随着地址的增加,会逐渐过渡到IPv6 协议。所有统一网段的DoIP 都必须使用相同的IP协议版本。由于DoIP 在OSI 模型中位于应用层,故DoIP 报文前要封装ETH 首部、IP 首部及TCP/UDP 首部。DoIP 报文包括协议版本号、版本号取反、负载类型、负载长度及DoIP 数据。以太网报文封装格式如图3所示。
图3 ETH 报文格式
版本号占1 个字节,标识DoIP 协议版本编号,取值范围为0x00 至0xFF,通常取0x02(ISO 13400-2-2012《道路车辆——互联网协议的诊断通信(DoIP).第2 部分:传输协议和网络层服务》)。
版本号取反占1个字节,是版本号与0xFF逻辑运算异或的值。如版本号为0x02,则版本号取反则为0xFD。版本号取反值与版本号值配合起到协议验证的作用,以确保接DoIP 报文的准确性。
负载类型占2 个字节,用于判断数据用途,其用途主要分成3 组:节点管理类报文、节点状态类报文和诊断类报文。节点管理类报文0x0001 至0x0004 用于识别车辆请求,在外部测试设备与DoIP 边缘节点建立诊断连接前的交互。0x0005 和0x0006 用于激活请求与响应,激活后socket 使能并建立socket 链接,才可以进行诊断通信;0x0007 和0x0008 用于检查当前建立的诊断连接socket 是否仍然在使用,如果不再使用,则关闭socket 释放资源。
节点状态类报文0x4001 至0x4004,指示当前节点类型。诊断类报文0x8001 至0x8003,标识外部测试设备与DoIP 实体之间的诊断报文类型,分别代表诊断报文、诊断肯定响应报文和诊断否定响应报文。在DoIP 协议中,通过不同的负载类型来区分报文类型以实现不同具体的功能,其发送方式都是通过TCP/UDP 协议。
负载长度占4 个字节,标识DoIP Payload 长度,不包括DoIP 首部长度。
DoIP Payload 可占0-4 294 967 295 个字节,包括源地址、目标地址及User Data(如诊断报文)。该部分字节长度不是固定不变的,而是根据不同负载类型调整,要求根据数据负载类型的不同对Payload 长度进行计算,以保证数据传输的完整性。
当外部测试设备与车内DoIP 实体建立网络连接时,首先进行物理连接,DHPC 自动配置IP 地址。其次由DoIP 实体主动发出3 次声明报文,广播其VIN、EID、GID 和逻辑地址,根据ISO 13400 标准规定,3 次报文间隔时间在0~500 ms。此时外部测试设备如果没有收到或漏收了3 次声明报文,则需要外部测试设备主动向车内DoIP 实体发送请求,等待500 ms 的时间间隔后,收到DoIP 实体响应。
外部测试设备选择对应的车辆,请求DoIP 实体打开TCP_DATA socket。DoIP 实体需确认当前申请socket 是否未被占用,接收报文的源地址是否被其他TCP_DATA socket 占用。如当前申请的TCP socket已被占用或SA已被其他TCP_DATA socket 占用,则发送激活否定响应报文,关闭当前报文的socket;如均未被占用,则继续进行初始化TCP_DATA socket。之后外部测试设备向DoIP 实体发送路由激活请求,DoIP 实体进行通用DoIP 首部处理和路由激活处理,注册TCP_DATA socket,并对外部测试设备的激活请求进行响应,从而完成路由激活连接。
外部测试设备发送诊断报文到DoIP 实体,DoIP 实体经过通用DoIP 首部处理及DoIP 诊断处理后,向外部测试设备发送确认接收的诊断响应。再由DoIP 实体向车内节点发送诊断请求,等待车内节点反馈诊断响应后,由DoIP 实体向外部测试设备发送诊断响应。此处,DoIP 实体可以支持与车内非DoIP 实体的电子控制单元ECU(Electronic Control Unit)通信。
如当前无诊断需求时,由外部测试设备向DoIP 实体发送关闭TCP_DATA socket 命令,DoIP 实体执行释放TCP_DATA socket,以备下一次诊断服务中使用。
目前,车载以太网已在多数车辆中应用,本文主要针对车载以太网的DoIP 技术进行了研究。相比于CAN 诊断,DoIP 诊断技术通信带宽大、传输速率高,可以提高软件刷写与故障诊断的效率,也是未来车辆诊断技术的发展趋势。