王远波,陈姿霖,杜彬,田彬
(陕西重型汽车有限公司汽车工程研究院,陕西 西安 710200)
ISO 13400协议定义了基于TCP/IP协议及以太网进行车辆的故障诊断和软件升级。该协议覆盖了通信的物理层(ISO 13400-3)、数据链路层(ISO 13400-3)、网络层(ISO 13400-2)、传输层(ISO 13400-2),通信的应用层使用的协议为ISO 14229-1和ISO 14229-5。
本文主要介绍ISO 13400-2协议中基于因特网协议(IP)、传输控制协议(TCP)及用户数据报协议(UDP)3种协议配合进行外部测试设备和车辆控制器之间诊断通信的要求,因车辆网络架构不同,该协议由一个或多个DOIP实体实现,其中TCP和UDP协议都属于传输层协议。
在ISO 13400-2协议中规定了16个指令,通过组合这些指令,完成车辆声明、车辆识别、路由激活、在线检查、实体状态、电源检查、诊断交互等功能的执行,功能的指令和执行结果通过基于DOIP消息的车辆通信协议实现,本文介绍几种常用的指令。
在传输层上,DOIP消息可以通过TCP协议和UDP协议传递,消息从数据链路层到应用层各层的格式定义见图1。
图1 各层格式定义
DOIP报头结构如图2所示,各部分定义见表1。
表1 DOIP报头
图2 DOIP报头结构
2.2.1 通用DOIP报头否定响应消息
该负载类型(表2)主要用于开发阶段的外部测试设备(非批产状态的临时设备)来验证DOIP实体中DOIP消息的正确实现,批产状态的外部测试设备不得使用该负载类型,通用DOIP报头否定应答数据结构见表3。
表2 负载类型描述
表3 通用DOIP报头否定响应数据结构
表4定义了通用的DOIP报头NACK码。
表4 通用的DOIP报头否定响应代码
2.2.2 车辆识别请求消息和响应消息
为了使外部测试设备能够访问DOIP实体,需先通过车辆识别请求获取DOIP实体的VIN、EID、GID,车辆识别请求消息和响应涉及的负载类型为0001、0002、0003、0004,应用场景为:①外部诊断设备已获取DOIP实体的IP地址但未配置车辆VIN;②外部诊断设备已获取DOIP实体的IP地址和车辆的VIN/EID/GID。车辆识别报文格式如表5~表9所示。
表5 车辆识别请求消息和响应数据结构
表9 车辆识别响应消息
表6 无消息负载的识别请求报文
表7 带EID的车辆识别请求报文
表8 带VIN的车辆识别请求报文
2.2.3 路由激活请求和响应消息
为了使边缘节点能够路由外部测试设备和DOIP实体之间的诊断请求和响应,需先通过路由激活请求报文激活边缘节点的路由功能,路由激活请求和响应的负载类型为0005、0006。如表10~表14所示。
表10 路由激活请求和响应数据结构
表11 路由激活请求消息
表12 路由激活响应消息
表13 激活类型
表14 路由激活响应码
2.2.4 诊断请求和诊断响应消息
外部测试设备和车内DOIP实体按照如下顺序和原则使用和处理诊断请求和诊断响应消息,任何UDS指令的下发和ECU执行结果的反馈都使用负载类型为8001、8002、8003的DOIP报文协同完成。如表15~表18所示。
表15 诊断请求和响应数据格式
表18 DOIP消息否定应答
表16 DOIP请求消息
表17 DOIP消息肯定应答
1)外部测试设备通过诊断消息向车内发送需要请求的消息(负载类型为8001)。
2)DOIP实体接收到消息后先进行DOIP报头和存储空间的判断,回复DOIP协议响应(肯定响应使用的负载类型为8002,否定响应使用的负载类型为8003)。
3)DOIP实体再进行UDS协议层面的诊断命令处理,不管执行的结果是肯定应答还是否定应答,均使用负载类型为8001的DOIP报文进行回复。
诊断消息否定确认码见表19。
表19 否定确认码
目前国内外基于车载以太网的诊断和软件升级都是基于ISO 13400协议进行展开的,ISO 13400涵盖了传输协议和网络层服务、连接接口、诊断连接器、一致性测试等方面,在整车和零部件设计过程中,可参考该协议进行。