news 2026/9/6 7:02:20

UDS诊断服务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UDS诊断服务

1诊断请求分为两类:一类是带子服务的,一种不带子服务的

诊断服务格式:SID(Service ID)+子服务(sub-function

诊断响应格式:肯定响应(positive response)和否定响应(negative response)

1.肯定响应

SID+0x40

子服务(sub-function):最高位响应抑制位,剩下7个BIT为子服务

例:10 01--->50 01

2否定响应

7F+SID+否定响应码

例:

10 02--->7F 10 7E(表示10 02请求因为该子服务在当前会话不支持返回0X7E而拒绝)

具体UDS诊断服务

DignosticSessionControl(会话诊断控制 10服务)

SID固定值:0x10

子服务(sub-function)

0X01 defaultSession (默认会话):

进入:通常在ECU断电/上电之后就会停留在默认会话

权限:权限较低,很多诊断服务请求不支持,诊断相关数据无法被读写

0X02 ProgrammingSession (编译会话)

进入:扩展会话下,诊断仪向ECU发送10 02

权限:编译会话的权限很高,支持的诊断服务很多,例如软件刷写相关的一系列服务。

0X03 extendeDiagnosticSession (扩展会话)

进入:默认会话下诊断仪给ECU发送诊断会话10 03

权限:诊断会话权限较高,支持诊断服务较多

注:扩展会话和编程会话统称位费默认会话,如果要让ECU保持在非默认会话中,诊断仪需要定时向ECU发送诊断请求0X3E(诊断在线服务),保持诊断仪与ECU之间的通信,使ECU一直处于非默认会话。

0X04 safetySystemDiagnosticSession (系统安全诊断会话)

0X05 - 0x3F ISOSAEReserved (保留)

0X40 - 0x5F vehicleManufacturerSpecific(由整车厂自定义使用)

0x60-0x7E systemSupplierSpecific(由ECU供应商自定义使用)

0x7F ISOSAEReserved(保留)

诊断会话控制响应分为3部分

Response SID:SID+0x40

sub-function:进入的诊断会话

Parameter:固定位4个字节,前两个字节表示P2Server_max:诊断仪发出请求ECU响应的响应时间,后两个字节为P2*Server_max:ECU无法在P2时间内对诊断仪请求做出响应,会响应一帧NRC(否定响应码)0x78,诊断仪收到0x78否定响应码会等待更长的响应时间,也就是P2*Serber_max表示响应NRC78后,对诊断仪请求的最长响应时间。

比如在请求诊断会话服务中,10服务的肯定响应格式是类似50 01 xx xx yy yy, xx xx就表示P2Server_max,yy yy 就表示P2*Server_max。诊断仪收到这两个参数之后,根据这两个参数来判断ECU的响应是否及时。

诊断会话控制对应的否定响应码:

NRC描述
12

子功能不支持

如果请求报文中的子功能参数不支持,要求ECU返回此NRC

13

报文长度错误或格式非法

如果请求报文的长度无效,ECU返回此NRC

22

条件未满足

ECU不满足切换会话模式的条件ECU返回此NRC

7E

服务子功能在此当前模式会话下不支持

当前子服务在当前模式下不支持

ECUReset(ECU复位11服务)

SID:固定1个字节,0x11

sub-function:最高位为抑制响应位,低7bit表示ECU将模拟那种方式进行复位。

0x01:hardReset:此值定义了模拟断开供电电源后(eg:电池)后重新上电/启动序列的“硬件复位”的情况。此执行动作需具体规定,并没有标准规定。其结果可能导致重新初始化 易失性存储(RAM)和非易失性存储(ROM)至预定义的值。

0x02 keyOffOnReset 钥匙开关复位,此值定义了类似驾驶员关闭又开启点火钥匙的情况。此复位情况要求模拟一个“KEY-OFF-ON”序列(例如,干扰供电电源的转换)。此执行动作执行需要具体规定,并没有标准规定。通常非易失性存储位置收到保护而易失性存储被初始化。

0x03 软复位该类型的复位强迫ECU重启其应用程序,并且在非易失性存储器中存储所有在应用程序重启时可能会丢失的数据。该复位操作应导致应用程序的重启,但不对之前学习的配置参数、自适应系数以及其他长时调整参数等数据重新初始化。

当诊断仪通过诊断请求对ECU进行某些操作,修改了ECU某些数据,只有ECU复位这些操作才能生效,此时需要发送复位请求。在ECUReset执行之后,ECU复位请求的肯定响应报文在复位操作执行之前发送,复位之后,ECU应首先进入默认会话,ECU也从非默认会话进入默认会话。复位请求ECUReset对应否定响应码:

NRC描述
12子功能不满足
13报文长度错误或格式非法(长度无效)
22条件不满足(不满足复位条件)
33

安全访问拒绝(在请求当前请求复位受保护的状态下)

7F服务在当前会话模式下不支持

SecuityAccess(0x27 27服务)

安全访问 一般使用种子和密钥来实现,步骤如下:

1.诊断仪向ECU请求“Seed”

2.ECU向诊断仪做出肯定响应发送“Seed”(Seed通常是生成的随机数)

3诊断仪向ECU发送“Key”(Key根据ECU响应的Seed计算得来)

4ECU判断诊断仪发送过来的Key是否有效,做出肯定响应和否定响应

安全访问请求Seed的否定响应码包括:

NRC描述
12子功能不满足
13报文长度错误或格式非法(长度无效)
22条件不满足
37

延迟时间未到(在 27 服务安全访问流程中,当客户端(诊断仪)发送了错误的密钥(sendKey 失败)后,ECU 会进入一个锁定 / 冷却期。如果在冷却期结束前客户端再次发起安全访问请求(无论是 requestSeed 还是 sendKey),ECU 就会回复 NRC 0x37。)

7F服务在当前会话模式下不支持

安全访问发送Key的否定码

NRC描述
12子功能不满足
13报文长度错误或格式非法(长度无效)
22条件不满足
24

请求序列错误

如果在接收到seedkey子功能前没有接收到requestseed请求报文,返回此NRC

35密钥无效
36超出密钥访问次数限制(延迟定时器超过最大允许失败尝试次数激活)
7F服务在当前会话模式下不满足
通信控制请求 (0x28 28服务)

通信控制服务请求与响应格式

请求:SID+sub-function+CommunicationType(通信类型)+nodeIdentification Number

响应:SID+sub-function

SID:0x28

sub-function:

0x00 enableRxAndTx(激活接受和发送)此值说明对于指定的通信类型须允许接受和发送报文。

0x01 enableRxAndDisableTx(激活接收和关闭发送)此值说明对于指定的通信类型须允许接收报文但禁止发送报文。

0x02 disableRxAndEnableTx(激活发送和禁止接收)此值说明对于指定的通信类型须允许发送报文但禁止接收报文。

0x03 disableRxAndTx(禁止发送和接收)此值说明对于指定的通信类型须禁止接收和发送报文。

CommunicationType(通信类型)

CommunicationType:固定为1个字节,表示对ECU的哪种报文进行控制。用来定义控制通信的类别。CommunicationType是一个位代码(bit-code)值,允许同一时刻控制多种通信类型最常用的就是低2位

0x1代表普通应用报文,此值定义的所有的应用相关通信。(内部应用信号在整车多服务器间交换)。

0x2代表网络管理报文,此值定义了所有网络管理相关通信。

0x3代表普通应用报文和网络管理报文,此值定义了所有网络管理相关和应用相关通信。

nodeIdentificatioNumber :是optional可选的,只有当sub-function等于0x04或0x05时才需要使用。

否定响应码

NRC描述
12子功能不支持
13报文长度错误或格式非法(长度无效)
22条件不满足
31请求超出范围(通信类型参数检测错误)
7F服务在当前会话模式下不支持
TesterPresent (0x3E 3E服务)

设备在线,防止ECU从非默认会话中复位

SID+sub-function

当sub-function是0x00时,ECU要给出response;当sub-function是0x80时,ECU不需要给出response。(抑制位是否置1)

否定响应码:

NRC描述
12子功能不支持
13长度无效
ControlDTCSetting(0x85 85服务)

此服务用于启动或者禁止ECU中诊断故障码(DTC)设置,防止在ECU执行特殊服务时,其他节点记录DTC.

请求:SID+sub-function+OptionRecrd

响应SID+sun-function

sub-function: 固定为1个字节,最高位表示肯定响应抑制位,低7位表示打开还是关闭ECU的DTC存储,UDS通过低7位定义了两种DTCSettingType:0x01 表示打开,0x02表示关闭。

OptionRecord:是可选择optional的,由厂家自定义,eg 可以用FF FF FF来表示这条诊断服务针对所有的DTC。

否定响应码:

NRC描述
12子功能不满足
13长度无效
22条件不满足
31请求输出超出范围
7F当前会话模式不满足
ReadDataByIdentifier (0x22 22服务)

SID+DID

例:

03 22 F1 87

03 22 F1 95

否定响应码:

NRC描述
13长度无效
22条件不满足
31请求超出范围
33安全访问拒绝

2E 服务通常要求先通过 27 服务安全访问(解锁扩展会话或编程会话),否则会被拒绝。常见 NRC:

RoutineControl(0x31 31服务)

对 ECU 上的例程(Routine)进行启动、停止或查询结果,常用于执行一段需要时间的操作流程,比如擦除 Flash、校验编程依赖、执行特定功能例程等。

请求格式:SID+subfunction+routineIdentifier+OptionRecord

响应格式:SID+subfunction+routineIdentifier+routineControlOptionRecord

例:
31 01 02 03--->31 01 02 03

否定响应码

大量数据传输服务(34、35、36、37服务)

RequestDownload(0x34):客户端向服务器请求下载数据。

RequestUpload(0x35):客户端向服务请求上传数据。

TransferData(0x36):客户端向服务器传输数据。

RequestTransferExit(0x37):数据传输完成,请求退出数据传输。

34服务:

格式:SID+dataFormIDentifier(占1个字节,数据格式相关信息)+addressAndLengthFormatIDentifier(占一个字节,高4bit标识memorySize所占的字节长度,低4个bit标识memoryAddress所占的字节长度)+memoryAddress(写入数据在ECU中的地址)+memoruSize(写入数据的字节数)

肯定响应:

ECU 通过这个值告诉诊断仪:每次 36 传输最多发多少字节,诊断仪据此分块。

例:

常见NRC

36服务

常见NRC:

36 服务在诊断框架中的典型处理逻辑:

  1. 校验块序号— 与内部期望的计数器比对,不一致则回 0x24
  2. 校验数据长度— 不超过maxNumberOfBlockLength,且累计不超过 34 声明的总长度
  3. 写入 Flash/NVM— 调用底层 Flash 驱动按地址偏移写入
  4. 更新地址偏移和剩余长度— 为下一块做准备
  5. 超时监控— 两块之间如果超时未收到下一个 36,应终止传输并清理状态
37服务

客户端使用37服务终止客户端与服务器的数据传输。37服务标识退出数据传输,如果ECU对34和36服务进行了肯定响应,ECU也会对37服务进行肯定响应。37服务的请求只有一个字节37,肯定响应也只有一个字节77。如果前面的36服务没有执行完成,比如出现丢帧或者数据没有传完,此时发37服务,ECU会做出否定响应NRC 0x7F 37 24。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 7:02:08

三大开源DDS实现对比:Fast DDS、Cyclone DDS与OpenDDS选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 7:01:14

AI写小说实测:窗口105万token,检索完成率只有40%

AI写小说把整本书塞进上下文,效果并不好。龙空实测纯靠扩大窗口的检索完成率只有40%到50%,配合记忆系统后能到80%以上;MemoryArena独立测得45%对80%,两个互不相关的来源数字几乎一致。窗口大解决的是能放下,解决不了会…

作者头像 李华
网站建设 2026/9/6 6:58:00

大模型多轮对话上下文管理优化:从滑动窗口到摘要记忆

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 6:55:06

低空飞行单镜头视频实时重构三维模型:镜像视界自研机载感知重构引擎,无人机单镜头视频流,空中实时生成可计算三维空间模型

一、模块概述一句话定义:第三低空飞行单镜头视频实时重构三维模型,是镜像视界(浙江)科技有限公司面向无人机平台打造的机载轻量化三维重构引擎,仅依靠无人机普通单镜头可见光视频流作为输入,无需激光雷达、…

作者头像 李华
网站建设 2026/9/6 6:53:26

对讲机为什么重要:从日常调度到防爆通信的行业应用

在工地、园区、物流车队、消防救援和能源石化现场,工作人员经常需要在嘈杂、复杂甚至存在安全风险的环境中快速传递指令。相比依赖公网信号的普通通信方式,专业对讲机能够围绕特定团队建立即时语音联系,并通过中继台、车载台和调度系统扩大覆…

作者头像 李华
网站建设 2026/9/6 6:53:04

大模型应用开发实战:LangChain、RAG、Agent与微调全指南

【2026】AI大模型零基础实战:LangChain、RAG、Agent、大模型微调从入门到项目落地(完整版)刚开始接触大模型应用开发的同学,最容易遇到这样一个问题:网上教程很多,但要么只讲概念不讲代码,要么只…

作者头像 李华