UDS on Ethernet (DoIP)- ISO 13400

基础概念

DoIP全称为基于IP网络的诊断通信Diagnostic communication over Internet Protocol,由ISO 13400标准定义,是基 于IP的汽车诊断协议。由于DoIP可以传输大量数据,以及响应速度快,且可以通过以太网进行远程诊断,因此DoIP逐步成为代替传统的CAN等总线方式,成为车载网络诊断的必然趋势。DoIP诊断经由通用的统一诊断服务 UDS协议引入诊断服务,通过传输控制协议TCP、用户数据报协议UDP和以太网协议IP,完成外部测试设备与ECU间的诊断通信。

在OSI 7层模型中,ISO 13400规定了DoIP的传输层、网络层、数据链路层和物理层。应用层和会话层部分和基于CAN总线诊断一样采用ISO 14229(UDS诊断协议)实现。

EID:Entity Identification,DoIP的实体标识符,是DoIP节点的唯一识别码,也就是地址,通常被设置为节点的MAC地址

GID:Group Identification,主要用于在车辆网络中标识一组DoIP节点。当车辆上的多个DoIP节点被编为一组时,它们会共享一个GID。这个GID在车辆内部用于同步和识别这些节点,特别是在VIN(Vehicle Identification Number,车辆识别码)未配置或不可用时。GID的使用有助于简化车辆网络的管理和诊断过程。

参考:

DoIP看这篇就够了,吐血整理-阿里云开发者社区

车载以太网DoIP 协议,万字长文详解_doip协议-CSDN博客

DoIP协议的主要功能

  1. 车辆发现

  2. 诊断通信(核心功能)

  3. 诊断仪在线监测

  4. 节点信息

  5. 路由激活

DoIP 诊断流程

建立连接→选择/识别车辆→路由激活→诊断报文的发送→连接断开

DoIP报文格式

CAN报文的数据帧包括帧起始、仲裁段、控制段、数据段等,同理以太网报文也具有不同的段

而对于Doip报文,是基于TCP或UDP,但在其报文的Payload起始段添加了DoIP报头(首部),用来区分不同的DoIP报文类型,实现不同的功能。

DoIP部分单独拿出来,DoIP报文由首部和数据两部分组成

其中:

协议版本,长度一个字节,遵循ISO13400的哪个版本,定义如下:

  • 0x00:Reserved

  • 0x01: DoIP ISO 13400-2:2010

  • 0x02: DoIP ISO 13400-2:2012

  • 0x03…0xFE: ISO 13400-2 2019

  • 0xFF: default value for vehicle identification request messages,发送默认值,返回后就会带上正确值

~协议版本,表示协议版本取反,长度为一个字节

数据类型,长度两个字节,主要分为阶段管理报文,状态信息获取报文,诊断报文三种;参考:DoIP(二)——报文类型_doip报文解析-CSDN博客

DLC,表示负载的数据长度,四个字节表示

下面就数据类型进行具体的讲解

数据类型

阶段管理报文

  • 0x0000,DoIP首部否定响应码:DoIP报文在发送出去前,如果检测到错误,比如格式错误,未知负载类型,报文过长,超出内存等会,Doip实体会响应一帧负载类型为0000,负载为1个字节的否定码的报文。

    02

    FD

    0000

    00 00 00 00

    ----

        其中NACK Code:

                0x00:代表格式错误(例如错误的协议版本) 关闭socket

                0x01:代表未知负载类型(例如0xE0 01) 忽略报文

                0x02:代表报文过长 忽略报文

                0x03:代表超出内存 忽略报文

                0x04:代表无效的负载长度 关闭socket

  • 0x0001,车辆识别请求,发送方需要获取车辆的VIN码,EID,GID,逻辑地址等,DoIP实体收到返回的车辆识别响应(0x0004)报文的时候,应该包含上述内容,其负载长度为33个字节,其中各个字节代表的含义,也就是说,收到车辆请求报文的

    02

    FD

    0001

    00 00 00 00

    --

  • 0x0002,带EID的车辆识别请求,发送端需要带上目标的EID码,例如 02 FD 00 02 00 00 00 06 70 B3 D5 20 00 01,如果EID正确,则DoIP实体会返回负载类型为0x0004的车辆识别响应报文,否则不响应

    02

    FD

    0002

    00 00 00 06

    EID(6 Byte)

  • 0x0003,带VIN的车辆识别请求,与上述类似,带上的是目标的VIN码,负载长度为17个字节,例如 02 FD 00 03 00 00 00 11 50 41 4E 47 55 30 31 32 30 35 37 34 39 30 08 34 37,如果VIN正确,则DoIP实体返回负载类型为0x0004的车辆识别响应报文,否则DoIP实体不响应。

    02

    FD

    0003

    00 00 00 11

    VIN(17 Byte)

  • 0x0004,车辆识别响应,根据情况响应0x0001 0x0002 0x0003三种请求

    02

    FD

    0004

    00 00 00 21

    EID+VIN+其他(最长33 Byte)

ISO 13400规定,当测试设备需要通过车载DoIP网关将报文路由到车辆内部网络之前,需要执行路由激活阶段,用于激活TCP_DATA Socket上的路由。该阶段包括路由激活请求和路由激活响应;路由激活请求报文由测试设备发送至DoIP实体,路由激活响应由DoIP实体发送至测试设备。

  • 0x0005,路由激活请求,负载长度为11个字节,各字节的含义

    02

    FD

    0005

    00 00 00 0B

    源地址地址2 Byte+激活类型1 Byte+保留位(11 Byte)

  • 0x0006,路由激活响应,负载长度为13个字节,各字节的含义

    02

    FD

    0006

    00 00 00 0D

    外部诊断设备逻辑地址2 Byte+DoIP实体逻辑地址2 Byte+激活类型1 Byte+保留位(13 Byte)

  • 0x0007,在线检测请求报文,前提是已经建立了至少一个TCP连接的情况,测试仪再次发送路由激活请求,Doip实体才会发出在线检测请求报文,不携带DoIP数据,报文中只有DoIP报头

    02

    FD

    0007

    00 00 00 00

    ----

  • 0x0008,在线检测响应报文

    02

    FD

    0008

    00 00 00 02

    源地址2 Byte

状态信息获取报文(0x4001 0x4002 0x4003 0x4004)

  • 0x4001

DoIP节点的状态请求报文,该报文数据段无数据

02

FD

4001

00 00 00 00

----

  • 0x4002

DoIP节点的状态响应报文,主要是响应0x4001报文,数据长度为7个Byte

02

FD

4002

00 00 00 07

7 Byte

Byte0:节点类型

                0x00:DoIP网关

                0x01:DoIP节点

Byte1:最大的TCP_DATA_Sockets的数量

Byte2:当前已使用的TCP_DATA_Sockets的数量

其他Byte:保留

  • 0x4003

请求DoIP节点的电源模式信息,报文数据段没有数据。

02

FD

4004

00 00 00 00

-----

  • 0x4004

响应DoIP节点的电源模式信息,响应0x4003报文,

02

FD

4004

00 00 00 01

1 Byte

Byte0:

  • 0x00:表示未准备好
  • 0x01:准备好
  • 0x03:表示不支持
  • 其他:保留

诊断报文(8001 8002 8003)

此部分就主要是前面的报文类型不同,对于数据段的具体内容,就是根据UDS协议执行,例如19服务,22服务

  • 0x8001,DoIP诊断请求报文,负载长度根据诊断信息确定

    02

    FD

    8001

    00 00 00 XX

    XX XX XX XX ....

负载长度主要包括:

        源地址2Byte

        目标地址2Byte

        诊断信息(如22 F8 10)

  • 0x8002,DoIP诊断肯定响应报文,同样包含发送方和接收方的逻辑地址,还有一字节响应码,以及诊断请求报文中的诊断数据,以便于分析原因。

    02

    FD

    8002

    00 00 00 XX

    XX XX XX XX ....

  • 0x8003,DoIP诊断否定响应报文

    02

    FD

    8003

    00 00 00 XX

    XX XX XX XX ....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值