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

news2025/1/17 6:03:19

系列文章目录

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网关通信流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1104358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【4】c++11新特性(稳定性和兼容性)—>final关键字

c中增加了final关键字来限制某个类不能被继承&#xff0c;或者某个虚函数不能被重写。如果使用final修饰函数&#xff0c;只能修饰虚函数&#xff0c;并且放在类或者函数的后面。 修饰函数 #include <iostream> using namespace std;class Base { public:virtual void t…

在 Ubuntu 22.04安装配置 Ansible

一、按官网指引安装 我使用的ubuntu22.04版本&#xff0c;使用apt安装。官网指引如下&#xff1a; $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible $ sudo apt-get update $ sudo apt-get install ansible 由于内部网络…

《动手学深度学习 Pytorch版》 9.1 门控循环单元(GRU)

我们可能会遇到这样的情况&#xff1a; 早期观测值对预测所有未来观测值具有非常重要的意义。 考虑一个极端情况&#xff0c;其中第一个观测值包含一个校验和&#xff0c;目标是在序列的末尾辨别校验和是否正确。在这种情况下&#xff0c;第一个词元的影响至关重要。我们希望有…

《数理统计》第4章

文章目录 第4章4.4.1 协方差 第4章 4.4.1 协方差

项目平台——测试报告的实现(七)

这里写目录标题 一、Table表格组件的使用1、Table表格组件中的插槽使用 二、点击查看测试报告&#xff0c;跳转到测试报告详情页实现1、新建Report.vue组件2、配置路由3、查看报告按钮添加事件 三、页面布局1、Layout布局2、卡片设计3、打开页面发送请求加载报告数据4、对接口进…

如何优化前端可访问性(Accessibility)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

如何修复-谷歌浏览器-打开任何一个网页都显示崩溃

早上上班&#xff0c;一如既往的使用谷歌浏览器时&#xff0c;发现异常。 首先是&#xff0c;右下角有个弹窗提示某某插件需要点击更新&#xff0c;然后点了也没用&#xff0c;然后就是打开任何网页都提示‘喔唷 崩溃了’的字眼。 奇怪呀&#xff0c;咱也是第一次碰见这种问题…

使用Proxyman抓取Android的https请求

使用Proxyman抓取Android的https请求 有时&#xff0c;您可能需要测试您的移动应用程序并检查与其关联的所有网络请求。在网络上&#xff0c;此任务非常简单&#xff0c;只需按Ctrl Shift I打开开发人员工具即可。从那里&#xff0c;您可以导航到网络选项卡并检查与网页相关的…

绝对有效,牛津《书虫》全系列完整版( 电子书+MP3 )

&#x1f600;前言 因为像看一下牛津《书虫》系类的&#xff08;PDF和音频&#xff09;找了许久不是链接过期就是要密码要会员太烦了所以在这里整理好打包给大家 在文章末尾 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大…

java打包解包总结

使用别人的jar包程序&#xff0c;需要修改其中的相关参数然后重新打包&#xff0c;在此记录一下打包和解包过程。 目录 1.解包操作 2.打包操作 1.解包操作 原始jar包文件 解包 jar xvf test.jar 或者 jar -xvf test.jar 2.打包操作 原始文件 打包&#xff1a; jar cvM0…

Aroid问题笔记 - ViewPager嵌套RecyclerView,降低ViewPager灵敏度

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

强大的下载管理器:Progressive Downloader for Mac

Progressive Downloader for Mac是一种强大的下载管理器&#xff0c;它可以帮助用户更快速、更稳定地下载文件。相比于其他下载工具&#xff0c;PD下载管理器具有很多独特的功能和优势&#xff0c;本文将对其进行详细推广。 在数字化时代&#xff0c;下载已成为我们日常工作中必…

C语言实现已知 XYZ+YZZ=532,其中 X,Y 和 Z 为数字,求出 X,Y 和 Z 的值

完整代码&#xff1a; // 已知 XYZYZZ532,其中 X,Y 和 Z 为数字&#xff0c;编写程序求出 X,Y 和 Z 的值#include<stdio.h>int main(){for (int X 1; X < 10; X){for (int Y 1; Y < 10; Y){for (int Z 0; Z < 10; Z){if ((X*100Y*10ZY*100Z*10Z)532){printf…

技巧 | 如何解决 OBS 系统声音无法捕获问题 | Mac

技巧 | 如何解决 OBS 系统声音无法捕获问题 | Mac 问题描述 由于 macOS 系统限制&#xff0c;桌面音频被禁止&#xff0c;导致在使用 OBS 无法录制桌面音频&#xff0c;只能使用自带麦克风录制。 解决方法 Loopback 介绍 借助 Loopback 的强大功能&#xff0c;可以轻松地…

论坛介绍|COSCon'23 女性论坛(L)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于 10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&a…

3+肿瘤+预后模型+甲基化

今天给同学们分享一篇3肿瘤预后模型甲基化的生信文章“Genomic and immunogenomic analysis of three prognostic signature genes in LUAD”&#xff0c;这篇文章于2023年1月17日发表在BMC Bioinformatics 期刊上&#xff0c;影响因子为3。 寻找与免疫治疗相关的标记物是筛选适…

wordpress网站部署了ssl证书之后就排版混乱了

刚给自己的小网站部署了SSL证书&#xff0c;之后就发现https访问主页竟然乱套了。在手机上访问却是正常的。 直接上解决方案&#xff1a; 编辑网站根目录下的wp-config.php文件 在自定义文本处添加以下代码&#xff1a; if ($_SERVER[HTTP_X_FORWARDED_PROTO] https) $_SE…

柔性机器人控制的研究现状及关键技术

柔性机器人是一种新型的机器人&#xff0c;具有柔韧性、灵活性和适应性等特点。本文综述了柔性机器人控制的研究现状及关键技术&#xff0c;包括柔性机器人的应用领域、柔性机器人的机械结构、柔性机器人的控制算法等方面。最后&#xff0c;对未来柔性机器人控制的发展趋势进行…

AWD学习总结 (会持续更新)

防御 一、登录ssh服务器 所有人都要登上去。这里以我自己的服务器为例子。一般使用默认的ssh登录方式&#xff0c;我个人服务器ip是120.46.41.173使用工具是xshell与xftp。 点击新建连接。 输入ip。默认ssh端口22不用改就能连接。 然后点击侧边栏&#xff0c;输入账号密码登…

python find函数

一、 find函数作用&#xff1a; 用于判断字符串是否含有子串&#xff1b; 若包含子串&#xff0c;则返回所在字符串第一次出现的位置索引 若不包含子串&#xff0c;则返回-1 二、find函数语法&#xff1a; 字符串.find(self, sub, startNone, endNone) 源码&#xff1a; sub&a…