业务合作发布作品

    车辆以太网诊断协议连载(1)——报文结构

    北岛李工头像北岛李工头像
    北岛李工3天前

    随着汽车新功能(辅助驾驶、信息娱乐、软件更新、远程诊断等)的出现,其内部电子系统需要传输的数据量日益增多,以往基于CAN/CANFD网络的诊断协议逐渐不能满足要求,于是基于以太网的诊断协议便应运而生了。

    车辆以太网诊断协议,英文名称“Diagnostic over Internet Protocol”,简称“DoIP”。2011年,国际标准化组织首次发布了ISO 13400-1:2011国际标准,其中明确了DoIP的概念、应用场景。2012年发布了ISO 13400-2:2012,详细规定了传输层、网络层的服务,以及DoIP报文的具体格式。2019年发布了ISO 13400-2:2019,对之前的协议进行改进,提升了稳定性。2025年发布了ISO 13400-2:2025,本文基于该版本进行介绍。

    DoIP协议在开放互联参考模型(OSI)中的位置如下图所示(与传统协议进行对比):

    简单理解:DoIP协议的物理层和数据链路层依赖于百兆以太网,位于传输层TCP/UDP协议之上,同时又位于应用层协议(比如UDS)之下。

    DoIP协议的报文由报文头和负载两部分组成。

    报文头长度固定为8字节,包括:协议版本号、版本号取反、负载类型和负载长度,如下面的表格所示:

    名称

    长度(字节数)

    协议版本号

    1

    版本号取反

    1

    负载类型

    2

    负载长度

    4

    其中:

    协议版本号:长度1字节,取值范围包括:

    • 0x00(ISO 13400-1:2011);
    • 0x02(ISO 13400-2:2012);
    • 0x03(ISO 13400-2:2012);
    • 0x04(ISO 13400-2:2025);
    • 0x05~0xFE(保留);

    2.协议版本号取反:协议版本号按位取反(长度1字节)。与协议版本号配合使用,作为协议验证模式,以确保接收到格式正确的DoIP报文;

    3.负载类型:长度2字节,取值范围:0x0000~0xFFFF(下文详述)。

    4.负载长度:长度4字节,取值范围:0~4 294 967 295。(四字节无符号数的表达范围,2的32次方)。负载长度的单位为字节。有些报文不需要负载,因此长度可以为0;

    DoIP协议对负载类型进行了定义与归类,如下面的表格所示:

    取值

    名称

    协议

    0x0000

    通用报文头负响应

    generic DoIP header negative acknowledge

    UDP_DISCOVER

    UDP_TEST_EQUIPMENT_REQUEST

    TCP_DATA

    0x0001

    车辆识别请求消息

    vehicle identification request message

    UDP_DISCOVER

    0x0002

    带EID的车辆识别请求消息

    vehicle identification request message with EID

    UDP_DISCOVER

    0x0003

    带VIN的车辆识别请求消息

    vehicle identification request message with VIN

    UDP_DISCOVER

    0x0004

    车辆声明消息/车辆识别应答消息

    vehicle announcement message/

    vehicle identification response message

    UDP_DISCOVER

    UDP_TEST_EQUIPMENT_REQUEST

    0x0005

    路由激活请求

    routing activation request

    TCP_DATA

    0x0006

    路由激活应答

    routing activation response

    TCP_DATA

    0x0007

    车辆保活请求alive check request

    TCP_DATA

    0x0008

    车辆保活应答alive check response

    TCP_DATA

    0x0009

    ~

    0x4000

    保留


    0x4001

    DoIP实体状态请求

    DoIP entity status request

    UDP_DISCOVER

    0x4002

    DoIP实体状态应答

    DoIP entity status response

    UDP_TEST_EQUIPMENT_REQUEST

    0x4003

    诊断电源模式信息请求

    diagnostic power mode information request

    UDP_DISCOVER

    0x4004

    诊断电源模式信息应答

    diagnostic power mode information response

    UDP_TEST_EQUIPMENT_REQUEST

    0x4005

    ~

    0x8000

    保留


    0x8001

    诊断消息diagnostic message

    TCP_DATA

    0x8002

    诊断消息正响应

    diagnostic message positive acknowledgement

    TCP_DATA

    0x8003

    诊断消息负响应

    diagnostic message negative acknowledgement

    TCP_DATA

    0x8004

    周期性诊断消息

    periodic diagnostic message

    TCP_DATA

    0x8005

    ~

    0x8FFF

    保留


    0x9000

    保留


    0x9001

    DOIP网关连接的子网传输协议负载消息结构


    TCP_DATA

    0x9002

    ~

    0x9FFF

    保留


    0xF000

    ~

    0xFFFF

    为制造商保留

    reserved for manufacture-specific use


    负载的内容根据类型不同而有所不同,将在后面的文章中陆续介绍。

    好了,关于DoIP的报文结构就先介绍到这里。

    次阅读
    评论
    赞同
    收藏
    分享
    评论
    赞同
    收藏
    分享

    评论·0

    头像头像
    提交评论
      加载中…

      热门资讯