以太网诊断协议DoIP(Ethernet Diagnostic Protocol DoIP)

2023-10-18 10:13

本文主要是介绍以太网诊断协议DoIP(Ethernet Diagnostic Protocol DoIP),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录

C++技能系列
Linux通信架构系列
C++高性能优化编程系列
深入理解软件架构设计系列
高级C++并发线程编程
设计模式系列

期待你的关注哦!!!
在这里插入图片描述

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.

AutoSar CP学习概要

  • 系列文章目录
    • 1.1 诊断功能作用
    • 1.2 车辆诊断方法
    • 1.3 诊断功能发展历史
    • 1.4 车辆诊断功能协议
    • 1.5 诊断功能通信要素
    • 1.6 诊断功能通信流程
    • 1.7 DoIP协议
      • 1.7.1 DoIP应用场景:
      • 1.7.2 DoIP ISO:13400标准
      • 1.7.3 DoIP消息格式:
      • 1.7.4 DoIP通信流程
      • 1.7.5 DoIP网关功能

诊断无论是从主机厂还是供应商,无论是从上层设计还是从顶层设计来说,诊断都是必不可少的,比如CAN诊断、LIN诊断、以太网诊断。

无论研发还是售前、售后都是需要诊断的,比如ECU的升级和刷写、4S店的升级刷新、OTA升级等。

1.1 诊断功能作用

(1)识别、检查、确认车辆状态
(2)提供车辆维护、维修、更新数据

1.2 车辆诊断方法

(1)本地诊断(比如4S店人员用OBD读取ECU信息,升级刷写)
(2)远程诊断(比如通过云端远程诊断)
(3)仪表显示(比如车辆仪表盘指示灯的显示胎压不足)

1.3 诊断功能发展历史

时间协议描述
1996ISO9141-2CARB Requirements for Interchange of Infomation
1999ISO14230Keyword Protocol 2000
1999ISO/DIS15765Diagnostics on CAN - base on KWP2000
2001ISO15031Communication for emissions-related diagnostics
2001ISO15765Diagnostics on CAN - base on UDS
2006ISO14229Unified Diagnostics Services (UDS)
2013ISO14229Unified Diagnostics Services (UDS)

1.4 车辆诊断功能协议

UDS(Unified Diagnostic Services,统一的诊断服务)诊断协议是在汽车电子ECU环境下的一种诊断通讯协议。简单来说,可以理解为UDS诊断协议就是ISO 14229协议,在ISO 14229协议中定义了UDS服务用法、服务格式等信息。UDS诊断最主要目的是为了能够快速准确判断车辆或者某个控制器的故障以及故障原因,从而为维修提供可靠的依据。

UDS-ISO:14229标准

ISO14229Unified Diagnostics Services (UDS)
ISO14229_1Specification and requirements - 定义了诊断服务,只有应用层,不涉及网络及实现。
ISO14229_2Session layer services
ISO14229_3Unified Diagnostics Services on Can implementation(UDSSonCAN)- 定义了UDS在CAN总线上的实现
ISO14229_4Unified Diagnostics Services on FlexRay implementation(UDSSonFR)
ISO14229_5Unified Diagnostics Services on IP implementation(UDSonIP)
ISO14229_6UDS on K-Line implementation(UDSonk-Line)
ISO14229_7UDS on Local interconnect network(UDSonk-LIN)

诊断协议是用于汽车行业诊断通信的需求规范,由ISO-14229系列标准定义。应用于OSI七层模型的应用层(第7层),它只规定了与诊断相关的服务需求,并未涉及通信机制,所以,它可以在不同的汽车总线(例如CAN,LIN,FleXRAY,Ethernet和K-line)上实现。
在这里插入图片描述
在使用ISO-14229时,下面的通信机制可以改变,比如基于CAN,基于LAN,基于FlexRay等。诊断通信过程其实很简单,诊断仪发送诊断请求(request),ECU给出诊断响应(response),而UDS就是为不同诊断功能request和response定义统一的内容和格式。

1.5 诊断功能通信要素

  • 服务 Service
    UDS诊断包括6大类,26种服务,每种服务都有自己独立的ID,即SID(Service Identifier)
    在这里插入图片描述

  • 会话Session
    可以理解为某种诊断模式或权限,即在不同的模式下,对不同的诊断服务的使用做了限制。
    在这里插入图片描述

功能码说明
1Defaut Session
2Pograming
3Extended
  • 故障码DTC

1.6 诊断功能通信流程

其实诊断通信的机制很简单,事件驱动型,一问一答。

类比client-server通信方式,诊断仪即客户端,发送request,服务器即ECU,收到request之后进行处理,然后向诊断仪回复response。

  • 需要确认的服务
    在这里插入图片描述

  • 不需要确认的服务
    在这里插入图片描述

但是,诊断协议有自己的特色,它规定了request和response的格式,在收到request的时候要做格式检查。同时由于寻址方式的不同,有无sub-function的支持等,也会影响request和response的处理方式和结果。

1.7 DoIP协议

DoIP:Diagnositc communication over Internet Protocol

  • 一种用于UDS功能的以太网通信协议
  • ISO 13400

1.7.1 DoIP应用场景:

(1)本地一对一
(2)本地多对多
(3)远程一对多
(4)远程混合式

1.7.2 DoIP ISO:13400标准

标准:
ISO:13400_1:定义基本信息和用例
ISO:13400_2:网络层协议、传输层服务
ISO:13400_3:基于802.3,定义线序和接口
ISO:13400_4:定义诊断连接器
ISO:13400_5:一致性测试

1.7.3 DoIP消息格式:

DoIP报文由DoIP报头和Payload(有效载荷)组成,具体如下图所示。
在这里插入图片描述

  • (1)DoIP报头包含:DoIP协议版本号,目前为0x02(DoIP 2012)。
  • (2)协议版本号取反,目前为0xFD。注意:协议书上特别说明了Protocol version可以为0xFF,设这个值的作用是,当客户端和服务端的协议版本不匹配,可以设置此值绕过协议头版本不匹配而拒绝请求的case。
  • (3)Payload类型,分为3大类:
    ①节点管理类,包含DoIP报头否定应答、车辆声明及标识、路由激活、在线检查;
    ②车辆信息类,包含DoIP实体状态、诊断电源模式信息;
    ③诊断数据类,包含诊断报文。
    关于每个消息类型的含义如下表所示,具体含义参考标准即可。
    在这里插入图片描述

1.7.4 DoIP通信流程

在这里插入图片描述

DoIP通信的4个阶段
(1)物理连接:Tester使用有线或无线的方式与车辆建立连接
物理连接线图:
在这里插入图片描述

(2)IP地址分配:静态或动态的分配IP地址,使Tester和车辆可以进行网络通信

  • 静态分配:Tester与车辆连接前需配置完成(前期开发测试时可静态分配)
  • 动态分配:DHCP协议动态分配IP地址(推荐:外部设备作为服务器,车辆作为客户端发起请DHCP求)

(3)车辆发现:Tester识别并确认被诊断车辆

  • 查找识别车辆的过程
  • 标识符:车辆VIN、EID、GID等信息
    (4)诊断会话通信:Tester与车辆进行诊断功能通信
  • 建立TCP连接
  • 诊断功能通信
    在这里插入图片描述

1.7.5 DoIP网关功能

DoIP网关通信流程

这篇关于以太网诊断协议DoIP(Ethernet Diagnostic Protocol DoIP)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/231910

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台