UDS服务简易教程(二)

简介: UDS服务简易教程
  • 安全访问SecurityAccess(0x27)

安全访问SecurityAccess(0x27),此服务是提供访问ECU内部数据或者出于安全因素需被限制的诊断服务的请求权限。常见的如读服务(0x22)读取非安全信息时能够直接读取,不需要利用27服务进行安全访问,而通过写服务(0x2E)写入数据时,则通常需要通过27服务进行安全访问才可以写,刷新程序也需要利用27服务通过相关的安全等级才能够对ECU进行程序下载,显然这些都是需要利用27服务进行权限管控,从而保障ECU的安全可靠。

安全访问序列如下图所示,一共4步组成,

  • 诊断仪先发送请求seed的报文(27 01)
  • ECU响应seed(67 01 xx xx xx xx)
  • 诊断仪根据返回的seed按照约定算法计算key值,并发送给ECU请求验证(27 02 xx xx xx xx)
  • ECU收到请求之后,也按照约定的算法对该key进行校验,并给出响应,若计算一致,则为正响应(67 02),否则为负响应(7F 27 NRC)

b15d6a90d1c1b5fc3e4c87f031a1669b_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg


图4-8 安全访问序列图

ECU若校验key一致,则ECU则切换安全状态至对应的解锁状态,此时在该解锁状态下能够支持的服务都应该可以工作。如果ECU已经处于解锁状态,此时诊断仪再次发送请求seed的报文,ECU应该响应seed为0的正响应。

seed请求的子服务值为奇数,对应的key请求验证的子服务值为该奇数加1,如27 01与27 02为一组安全等级,27 03与27 04为一组安全等级,27 11与27 12为一组安全等级。不同的安全等级由客户定义功能区分。

seed请求格式

5c976cebe19c8c8bc6a605fcaaff697c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

seed正响应格式

93525afd65b8e69bf0c650de8c25e7ca_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

key请求验证格式

036f7de0accaaf4a3ad2e3d93c35012f_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

key验证正响应格式格式

f40fcfa5e63837ed15c321e4fb1d8cb4_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

负响应格式

ec2545fa97f574fa22be2cd79785a3b6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 通讯控制CommunicationControl(0x28)

通讯控制服务用于开启或关闭ECU对某些报文的发送或接收,如应用报文和网络管理报文等。

请求格式

d260e9ce9284e7f1ed433cbb0acd571c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

a275d94d2f9048e6c43a026554308323_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

9b8b59ff7da34d79bf1b543b508bd5b7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

正响应格式

3f47d4155f445aa0c5589cb3610bc022_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

负响应格式

19fc4df411112b76ee317e6c883e70cf_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 待机在线TesterPresent(0x3E)

该服务用于诊断仪端告知ECU诊断仪依然在线。该服务通常用于保持ECU处于非默认模式,由于ECU在S3server时间收不到诊断请求的话,ECU将会退回默认会话模式(default session),所以诊断仪为了保持ECU处于非默认模式,需要周期性发送TesterPresent服务指令,周期时间需要小于S3server。

请求格式

df54e71b659cafa17ddbd5ff5994eac3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

正响应格式

fd54f46642776d31644d176debea1551_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

负响应格式

027c634d55625ff176153a77c6160b98_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 诊断故障码设置控制ControlDTCSetting(0x85)

诊断故障代码设置控制服务用于停止或重启ECU诊断故障代码的记录。

当通过该服务对故障码记录进行抑制操作后,若会话层时序参数超时从而ECU进入默认会话,或ECU执行复位操作后,诊断故障代码应该恢复记录。

当接收到诊断仪发送的清除诊断信息(0x14)服务后,ECU应重新开启诊断故障代码记录。

请求格式

73469ca4ac4a040389c523e5dcfd2f34_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

8448c9bfe3eead664270d9a29e8b0ca5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

正响应格式

c1ad4aeb5177c112ee50b3af192202d9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

负响应格式

e7fc1284c871b5d842d04958bf27083c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 读DID数据ReadDataByIdentifier(0x22)

根据DID(标识符)读取数据服务用于从ECU存储器中读取由DID所确定的数据记录值,其中DID为两个字节长度的数值。

ISO14229中定义该服务的请求报文允许支持1个或者多个数据标识符,一般主机厂仅支持1个DID读取。下图报文格式也以1个DID作为讲解。

请求格式

b69c5663ca8f0d2962b7c2f31bfc3f8b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

正响应格式

23950a77b5b6690e36bb99690990dbc1_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

负响应格式

17f1d5a4a971eb0e86ecb0f4c5d02ca1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 写DID数据WriteDataByIdentifier(0x2E)

根据DID写入数据服务允许诊断仪将数据写入由DID指定的内部存储单元。ECU应在数据写入成功后发送该服务的肯定响应。

请求格式

048b171df0af00ab69c949fed299ce31_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

正响应格式

3ad9b6fe2df47e174ca1833077e2cd03_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

负响应格式

89ba03edc5f62659e04647c7ba524297_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 清除故障码ClearDiagnosticInformation(0x14)

正响应需在诊断信息清除请求后,ECU处理完成后发出,即使 ECU 没有存储的 DTC,也需发出正响应报文。清除 DTC 的同时,所有 DTC 相关存储信息都应被清除。

请求格式

be8a121e87e3094ac8f2a230b6f29235_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

6bcef7858d9c53cbdec0e5c46037ec9d_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

正响应格式

b244ce93c3b9a4afe5a19d3bd869be1b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

负响应格式

d6e46ba834e638c5d58879d9efafc91a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 读故障码信息ReadDTCInformation(0x19)

请求格式

d82c5416fa9dc14ba8103e93df6f5a99_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

b50173650c39b2f0cd94a32a045fd38b_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

94dd4a2931dbfcf3bbeda2ec752f1d56_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

6b21a046a7a74c86bd62e821de108e2e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

07ddc560d090cb18341201ade235fd1b_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

正响应格式

8955a880c6f766d74276a657d9d09482_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

6b99b488a141f3bfd5900dc6609e8e7d_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

93e90c27d445f84d7b1ac9c5c6090c62_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

66ad245a0718102927a6612e4979e846_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

负响应格式

f922c77952bb870c2628c620382e9752_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 通过DID控制输入输出InputOutputControlByIdentifier(0x2F)

该服务是用于通过DID来直接控制ECU对应的输入输出信号。

请求格式

8aa97d88c09b84aafcb93bf57d1a6036_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

7aeca462ce94c4a7bf5ca5d4dc4b4b00_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

8a9755f011b85b2852f940e98b4b5960_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

正响应格式

37537cd46b13b4524ccfb006b10c07bd_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

负响应格式

c2235fed771e42042364af40b2cc24a0_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 例程控制RoutineControl(0x31)

请求格式

e337806b2fb5a483058ba1c5d1ddc8d7_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

36e54d6f2493976b938bf31caad2aa17_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

正响应格式

7a7e2a6514be2c9ed6b35da5f4be78dd_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

负响应格式

b1151477b3e9c01c39fd91e50c98c146_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 请求下载RequestDownload(0x34)

请求格式

c64e101f48742fa17a32c6cf2aec880c_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

正响应格式

80688eda87169d13f91a6462aa7ac31c_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

负响应格式

7f7f4f2ead6f55ae5a7cd2778f0d2729_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 传输数据TransferData(0x36)

请求格式

348de6da7a8169e8521a43507d1390b8_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

正响应格式

1f8e92b8bfe5e290bd4d0a86b5f7818e_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

负响应格式

b432a71e5ec83ccc829a154f6a97920b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 请求数据传输退出RequestTransferExit(0x37)

请求格式

5436f0b901743283deb1d9e0d393d285_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

正响应格式

72f6e56ea62170deec69b6c56ca99f89_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

负响应格式

e12a7832c509fc2fbd162585ec8b5929_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


5. 负响应码

f79c25a1675c1f8981149c6982cafa42_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

目录
打赏
0
0
0
0
24
分享
相关文章
手撕测试tcp服务器效率工具——以epoll和io_uring对比为例
手撕测试tcp服务器效率工具——以epoll和io_uring对比为例
199 2
[UDS] --- RoutineCommunicationControl 0x31
[UDS] --- RoutineCommunicationControl 0x31
498 1
|
10月前
|
[UDS] --- WriteDataByIdentifier 0x2E
[UDS] --- WriteDataByIdentifier 0x2E
254 0
|
10月前
[UDS] --- UDS概述
[UDS] --- UDS概述
885 0
[UDS] --- UDS服务应该支持的NRC
[UDS] --- UDS服务应该支持的NRC
1082 0
【JavaEE初阶】 网络编程基础与Socket套接字
【JavaEE初阶】 网络编程基础与Socket套接字
|
10月前
|
[UDS] --- CommunicationControl 0x28
[UDS] --- CommunicationControl 0x28
285 0
|
10月前
|
UDS服务
UDS服务
283 0
【网络原理】网络编程Socket套接字基础知识汇总
【网络原理】网络编程Socket套接字基础知识汇总
164 0
不为人知的网络编程(十五):深入操作系统,一文搞懂Socket到底是什么
这篇文章我打算从初学者的角度,用通俗易懂的文字,跟大家分享下我所理解的socket是什么,并由浅入深从操作系统内核实现来透视socket的原理。
803 0
不为人知的网络编程(十五):深入操作系统,一文搞懂Socket到底是什么
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等