汽车诊断及OBD和UDS协议的基础概念介绍

admin 2024年7月21日23:01:41评论87 views字数 3052阅读10分10秒阅读模式

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯

汽车诊断及OBD和UDS协议的基础概念介绍

汽车诊断是指对汽车进行故障检测和定位的过程,它是确保汽车安全和性能的重要环节。

汽车诊断及OBD和UDS协议的基础概念介绍

(注:图源搜狗百科)

01

汽车诊断

在过去的几十年里,汽车诊断系统经历了巨大的变革和发展。起初,汽车诊断主要依靠人工检测和经验判断来发现问题。随着科技的进步,电子系统在汽车中的应用越来越广泛,汽车诊断也逐渐走向了自动化和数字化。从最初的简单故障指示灯到现在的复杂电子控制单元(ECU)和诊断协议的应用,汽车诊断技术已经取得了长足进步。

在汽车维修时,维修的技师通过诊断工具可以读取车辆的故障码,进而定位故障原因。在汽车软件开发时,汽车软件开发或者测试人员也可以通过诊断工具连接到汽车的电子系统,读取和解析车辆关键信息的实时数据,例如车辆车速、各个部件的工作状态、整车的电压、电流、各个部件的温度等等。

(注:诊断工具也就是下文常提到的Tester,它可以是任何实现了通信协议的东西,比如可以是一个实现了UDS协议的上位机软件、实际的硬件设备(4S店的诊断仪)、甚至是一个实现了UDS协议的系统中的测试脚本。)

汽车诊断协议就是指诊断工具与车辆之间的通信协议。目前,市场上最常见的两种汽车诊断协议是OBD(On-Board Diagnostics)和UDS(Unified Diagnostic Services)。OBD和UDS主要是在目标和应用领域上存在一些区别。OBD协议主要用于监测车辆的排放情况,通过读取车辆的故障码来判断是否符合排放标准。而UDS协议则更加全面和灵活,在各个ECU上是一种通用型的协议。

02

OBD协议

OBD(On-Board Diagnostic)主要用于跟汽车排放系统相关的ECU(电子控制单元,汽车上的板级控制器)的诊断。OBD定义了排放相关系统必须支持的诊断服务和数据传输格式,支撑OBD数据传输的底层数据链路目前大多数车的OBD接口都是CAN总线。OBD是与UDS并列的一套应用层协议,对于与排放相关的ECU来说,通常这种ECU上既要实现OBD,也实现UDS。

OBD协议分为两种:OBD-I和OBD-II。OBD-I是由美国为当时制造的加州汽车所制定的排放法规,随后这套法规被逐渐标准化,于是又提出了OBDII标准,包括:标准化的车载ECU数据诊断接口(SAE-J1962,也就是现在常说的OBD接口)、标准化的诊断解码工具(SAE-J1978)、标准化的诊断协议(ISO 9141-2、ISO 14230-4、ISO 15765-4)、标准化的故障码定义(SAE-J2012、ISO 15031-6)、标准化的维修服务指南(SAE-J2000),OBD-II在1996年开始实施,目前已经成为全球汽车行业的标准。因此,OBD标准可以看作一系列标准的集合,是具有强制标准需要参照的,是由法规要求的,其最初目的是环保,用于汽车排放系统相关的ECU上。

汽车诊断及OBD和UDS协议的基础概念介绍

03

UDS协议

UDS(Unified Diagnostic Services)是一种通用的汽车诊断协议,由欧洲汽车制造商协会(ACEA)和日本汽车制造商协会(JAMA)共同制定。它与OBD最大的区别就在于“Unified“上,是面向整车所有ECU的。

UDS只是一个应用层协议(ISO 14229-1),不关心应用层以下的实现,比如执行该协议的应用层程序不关心通过何种物理传输方式实现与ECU硬件的通信,因此它既可以基于CAN线通信去实现,也能在Ethernet上实现。并且,UDS提供的是一个诊断服务的基本框架,定义了一系列的诊断服务和通用化的诊断流程,主机厂和零部件供应商可以根据实际情况选择实现其中的一部分或是自定义出一些私有化的诊断服务来,所以基于UDS协议的诊断又常常被称为Enhanced diagnosic(增强型诊断)。UDS不是法规要求的,没有统一实现标准,可以基于该协议提供的诊断请求及响应格式进行二次开发。

UDS服务主要用于诊断设备Tester(Client)和ECU(Server)之间的诊断通信,诊断设备(Tester)发送诊断请求(request),ECU给出诊断响应(response),通过这种“一问一答”的形式让目标ECU执行一些期望的操作,而UDS就是为不同类型诊断功能的request和response定义了统一的内容和格式。

04

OSI参考模型

ISO组织所制定的OSI(Open System Interconnection)分层结构来对车载的网络进行了划分,根据实际的网络类型进行划分,每一层每一种网络协议分别对应不同的ISO标准协议。

网络七层协议用一张图表示,大概是这样的:

汽车诊断及OBD和UDS协议的基础概念介绍

1.物理层:

解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。

它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。

2.数据链路层:

在计算机网络中由于各种干扰的存在,物理链路是不可靠的。该层的主要功能就是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。

它的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层的数据叫做帧。

3.网络层:

计算机网络中如果有多台计算机,怎么找到要发的那台?如果中间有多个节点,怎么选择路径?这就是路由要做的事。

该层的主要任务就是:通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。

4.传输层:

当发送大量数据时,很可能会出现丢包的情况,另一台电脑要告诉是否完整接收到全部的包。如果缺了,就告诉丢了哪些包,然后再发一次,直至全部接收为止。

传输层的主要功能就是:监控数据传输服务的质量,保证报文的正确传输。

5.会话层:

虽然已经可以实现给正确的计算机,发送正确的封装过后的信息了。但我们总不可能每次都要调用传输层协议去打包,然后再调用IP协议去找路由,所以我们要建立一个自动收发包,自动寻址的功能。于是会话层出现了:它的作用就是建立和管理应用程序之间的通信。

6.表示层:

表示层负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能处理的格式。

7.应用层:

应用层是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。

应用层是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。

汽车诊断及OBD和UDS协议的基础概念介绍

05

参考内容

[1] CSDN作者车载系统攻城狮的文章《《UDS协议从入门到精通(UDS速查手册)》》  原文链接:https://blog.csdn.net/qq_40309666/article/details/130831416

[2] 知乎作者 亿图图示 的文章《一文看懂网络七层协议/OSI七层模型》,文章链接为:https://www.zhihu.com/tardis/zm/art/296670054?source_id=1005

 end 

汽车诊断及OBD和UDS协议的基础概念介绍

 专业社群 

汽车诊断及OBD和UDS协议的基础概念介绍

 精品活动推荐 

汽车诊断及OBD和UDS协议的基础概念介绍
汽车诊断及OBD和UDS协议的基础概念介绍
汽车诊断及OBD和UDS协议的基础概念介绍

原文始发于微信公众号(谈思实验室):汽车诊断及OBD和UDS协议的基础概念介绍

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月21日23:01:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   汽车诊断及OBD和UDS协议的基础概念介绍https://cn-sec.com/archives/2981388.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息