大家好,欢迎来到IT知识分享网。
- 简介
- UDS服务
- 寻址
- UDS 26种服务
- NRC 消极应答
- $10诊断会话控制
- $3E待机握手
- $27安全访问
- $22通过ID读数据
- $2E根据标识符写数据
- $19 读DTC
- DTC状态位
- $14 清除DTC
- $2F IO控制(InputOutputControlByIdentifier)
- 6种模式的配置
- 抑制肯定应答指示位的配置
- UDS应用设备
- 参考
本文主要内容来自:https://zhuanlan.zhihu.com/p/37310388
简介
ISO 14229是汽车行业诊断通信协议,也称为UDS(Unified Diagnostic Service)统一诊断服务。是由ISO 14230-3和ISO 15765-3衍生而来。
ISO 14229规定了诊断工具与ECU的诊断协议,基于服务的。
from 恒润科技公开资料
UDS服务
UDS本质上是一些列服务的集合,包含6大类,26种。每种服务都有自己的ID,称为SID。
SID:Service Identifier,诊断服务ID。UDS本质是一种请求/应答(request/response)的交互协议:诊断仪(Tester)ECU发送请求,请求用SID标识,且SID处于该应用层数据的第一个byte。
如果积极应答(positive response),首字节回复[SID + 0x40],如请求0x10(诊断会话控制),积极应答0x50;请求0x22,积极应答0x62。
如果消极应答(Negative Response),首字节回复0x7F,第二个字节回复刚才请求的SID,第三个字节是NRC(否定应答码),表示否定的依据。
寻址
UDS寻址分为两种模式:
1)物理寻址,即点对点、一对一,只能访问单个ECU节点,诊断CAN ID通常由车厂分配;
2)功能寻址,即广播、一对多,根据功能的不同进行访问,能访问多个ECU节点,对于标准帧来说,CNA ID是0x7DF。
UDS 26种服务
6大类,常用15种。粗略可分为权限控制、读取数据/信息、写入数据/信息、通信控制、功能控制。
大类 | SID(Hex) | 诊断服务名 | 服务Service | 子功能 |
---|---|---|---|---|
诊断和通信管理 | 10 | 诊断会话控制 | Diagnostic Session Control | 是 |
11 | ECU复位 | ECU Reset | 是 | |
27 | 安全访问 | Security Access | 是 | |
28 | 通讯控制 | Communication Control | 是 | |
3E | 待机握手 | Tester Present | 是 | |
83 | 访问时间参数 | Access Timing Transmission | 是 | |
84 | 安全数据传输 | Secured Data Transmission | – | |
85 | 控制DTC的设置 | Control DTC Setting | 是 | |
86 | 事件响应 | Response On Event | 是 | |
87 | 链路控制 | Link Control | 是 | |
数据传输 | 22 | 通过ID读数据 | Read Data By Identifier | – |
23 | 通过地址读取内存 | Read Memory By Address | – | |
24 | 通过ID读比例数据 | Read Scaling Data By Identifier | – | |
2A | 通过周期ID读取数据 | Read Data By Periodic Identifier | – | |
2C | 动态定义标识符 | Dynamically Define Data Identifier | 是 | |
2E | 通过ID写数据 | Write Data By Identifier | – | |
3D | 通过地址写内存 | Write Memory By Address | – | |
存储数据 | 14 | 清除诊断信息 | Clear Diagnostic Information | – |
19 | 读取故障码信息 | Read DTC Information | 是 | |
输入输出控制 | 2F | 通过ID控制输入输出 | Input Output Control By Identifier | – |
例行程序 | 31 | 例行程序控制 | Routine Control | 是 |
上传、下载 | 34 | 请求下载 | Request Download | – |
35 | 请求上传 | Request Upload | – | |
36 | 数据传输 | Transfer Data | – | |
37 | 请求退出传输 | Request Transfer Exit | – | |
38 | 请求文件传输 | Request File Transfer | – |
UDS请求命令4种构成方式:
1)SID
2)SID + SF(Sub-function)
3)SID + DID(Data Identifier)(读写用)
4)SID + SF + DID
具体可以查看对应服务说明。
NRC 消极应答
NRC:Negative Response Code(否定应答码)。如果ECU拒绝一个请求,做出消极应答,会在第三字节回复NRC。不同NRC有不同含义。
应答码定义列表:
Byte Value(Hex) | 应答码定义 |
---|---|
00 | 正面响应 |
01 – 0F | 保留 |
10 | 普通拒绝(内部错误,故障代码复位、例行事务未完成等) |
11 | 不支持的服务 |
12 | 不支持子功能或无效的格式 |
13 | 不正确的消息长度或无效格式 |
14 | 要生成的响应超过底层网络层可用的最大字节数:1)响应消息超过底层协议允许的最大大小;2)响应消息超出为此目的分配的服务器缓冲区大小 |
15-20 | 保留 |
21 | 系统忙(需要外部设备重复请求) |
22 | 条件不正确/请求序列错误(发动机运行,例行事务不正常,错误的数据格式标识符,数据上传未完成,Flash操作的例行事务错误) |
23 | 保留 |
24 | 请求序列错误 |
25 | 已收到请求但无法执行,因为请求所需子网组件在指定时间内无响应 |
26 | 请求的操作不会执行,DTC故障条件(至少有一个TestFailed,Pending,Confirmed或TestFailedSinceLastClear的DTC状态位已发生)已发生 |
27-30 | 保留 |
31 | 请求超出范围(选择的标识符不支持,无效的内存地址请求) |
33 | 安全访问被拒绝 |
34 | 保留 |
35 | 无效的密钥 |
36 | 超出可尝试的次数 |
37 | 请求时间延时未到期 |
38-4F | 扩展数据链接安全性保留了该值的范围 |
50 – 6F | 保留 |
70 | 上传/下载被终止 |
71 | 暂停传送 |
72 | 传送终止 |
74 – 77 | 保留 |
78 | 请求正常接受,应答未决定 |
79 -7D | 保留 |
7E | 当前活动会话不支持请求的子功能 |
7F | 在当前激活的诊断模式下,不支持该服务 |
注:80-FF定义参见ISO14229-1-2013表A.1 |
特殊NRC:0x78,requestCorrectlyReceived-ResponsePending(RCRRP,请求已被正确接收-回复待定)。该NRC表示请求消息已被正确接收,请求消息中所有参数都是有效的,但要执行的操作还没完成,Server端还没准备好接收另一个请求。一旦请求的服务已经完成,服务器应该发送一个积极的响应或消极的响应,响应代码应与0x78不同。
当使用此NRC时,服务器(被测ECU)应始终发送最终响应(不论积极应答,还是消极应答),与suppress-PosRspMsgIndicationBit值(抑制肯定响应位)或NRCs(SNS 、SFNS、SNSIAS、SFNSIAS和ROOR)对功能寻址的处理请求的响应抑制要求无关。也就是说,什么情况下,功能寻址是不需要给出否定响应的呢?如果被测ECU需要回复上面5个NRC(SRC 0x11、SFNS 0x12、SNSIAS 0x7E、SFNSIAS 0x7F和ROOR 0x31)时,不需要回复否定响应。
$10诊断会话控制
$10包含3个子功能,对应3种诊断会话模式:
1)01: 标准诊断模式(默认);
2)02: ECU编程会话模式;
3)03: ECU扩展诊断模式。
为什么设计3个会话模式?
因为权限。默认会话权限最小,可操作的服务少;扩展模式通常用于解锁高权限诊断服务,如写入数据/参数、读写诊断码;编程模式用于解锁bootloader相关诊断服务,即程序烧录。
如果进入一个非默认会话状态,一个定时器会运转,如果一段时间内没有请求,那么到时间后,诊断退回到默认会话01(标准会话模式)。$3E服务,可以使得诊断保持在非默认状态。
下面是一张权限表格,描述了APP Code(应用程序代码)、Boot Code(引导程序代码)不同服务所需会话模式。
Service ID 服务ID |
Diagnostic Services Name 诊断服务名称 |
App Code | Boot Code | ||||
---|---|---|---|---|---|---|---|
Default(01) | Programming(02) | Extended(03) | Default(01) | Programming(02) | Extended(03) | ||
0x10 | DiagnosticSessionControl 诊断模式控制 |
M | M | M | M | M | N/A |
0x11 | EcuReset ECU复位 |
M | N/A | M | M | M | N/A |
0x27 | SecurityAccessr安全访问 | N/A | N/A | M(仅物理) | N/A | M(仅物理) | N/A |
0x28 | CommunicationControl 通信控制 |
N/A | N/A | M | M | M | N/A |
0x3E | TestPresent 诊断设备在线 |
M | N/A | M | M | M | N/A |
0x85 | ControlDTCSetting 控制DTC设置 |
N/A | N/A | M | N/A | N/A | N/A |
0x22 | ReadDataByID 根据标识符读数据 |
M | N/A | M | M | M | N/A |
0x2E | WriteDataByID 通过标识符写入数据 |
N/A | N/A | M(仅物理) | N/A | M(仅物理) | N/A |
0x14 | ClearDiagnosticInformation 清除诊断信息 |
M | N/A | M | N/A | N/A | N/A |
0x19 | ReadDTCInformation 读取DTC信息 |
M | N/A | M | N/A | N/A | N/A |
0x2F | InputOutputControlByID 输入输出控制 |
N/A | N/A | M(仅物理) | N/A | N/A | N/A |
0x31 | RoutineControl 例程控制 |
N/A | N/A | M(仅物理) | N/A | M(仅物理) | N/A |
0x34 | RequestDownload 请求下载 |
N/A | N/A | N/A | N/A | M(仅物理) | N/A |
0x36 | TransferData 发送资料 |
N/A | N/A | N/A | N/A | M(仅物理) | N/A |
0x37 | RequestTransferExit 请求退出发送 |
N/A | N/A | N/A | N/A | M(仅物理) | N/A |
注意:M = Mandatory(强制的),N/A = Not applicable(不适用),仅物理代表仅适用于物理寻址 |
如果进入了一个非默认会话状态,一个定时器将会运转。如果一段时间内没有请求,那么到时间后,诊断退回到默认会话模式(01)。$3E服务可以使诊断保持在非默认状态。
$3E待机握手
$3E服务用于向服务器指示诊断仪仍然连接在网络上,之前已经激活的诊断服务功能仍然保持激活状态。
// 服务器(ECU)接收
02 3E 00 55 55 55 55 55
// 服务器积极应答
02 7E 00 AA AA AA AA AA
$27安全访问
ECU中有很多数据是车厂独有的,不希望开放给所有人,需要做一个保密设定。我们在读取一些特殊数据时,要先进行安全解锁。ECU上电后,处于锁定状态(Locked),通过$27服务+子服务+钥匙,可以进行解锁。
解锁序列:
// Tester -> ECU
Request for Seed: 27 2n-1, n=1 // 2n-1是子服务
// ECU -> Tester
Seed: 67 2n-1
// Tester -> ECU
Send Key: 27 2n k1 // 2n是子服务
// ECU Compare Key k2 if (Key ke1 == Key k2) then unlock ECU
// ECU -> Tester
Unlocked: 67 2n
$22通过ID读数据
请求格式: 22 + DID(Data Identifier,通常2byte)
应答格式积极:62 + DID + Data
示例:
// 请求
03 22 F1 86 AA AA AA AA
// 应答
04 62 F1 86 01 AA AA AA
这里DID=F186,应答的Data=01。
DID有一部分被ISO 14229-1规定了,如0xF186表示当前诊断会话,0xF187表示车厂备件号,0xF188表示车厂ECU软件号,0xF189表示车厂ECU软件版本号。详见ISO 14229-1表C.1
$2E根据标识符写数据
与$22读数据服务相对,$2E用于写数据。
请求格式:2E + DID + Data
积极应答格式:6E + DID
写数据,通常需要权限,在APP下,需要进入扩展模式;Boot下,需要进入编程模式。
$19 读DTC
19服务是核心诊断服务,是UDS的重心。
DTC(diagnostic trouble code,故障码):如果系统检测到一个错误,将其存储为DTC。DTC通常表现为:一个明显的故障;通讯信号丢失;排放相关的故障;安全相关的错误等。DTC可以揭示错误的位置、类型。DTC通常占用3byte,OBD II占用2byte。
故障码包括4大类,分别是PCBU:P代表powertrain动力系统,C代表Chassis底盘,B代表Body车身,U代表network通信系统。一个DTC信息占用4byte:3byte DTC + 1byte DTC状态。
DTC信息格式:
┌──────────────────────────────────────────────────────────────────────┐
│ DTC information │
├──────────────────────────────────────────────────────┬───────────────┤
│ DTC │ │
├─────────────────┬──────────────────┬─────────────────┤ DTCStatus │
│ DTCHightByte │ DTCMiddleByte │ DTCLowByte │ │
├─────────────────┼──────────────────┼─────────────────┼───────────────┤
│ byte1 │ byte2 │ byte3 │ byte4 │
└─────────────────┴──────────────────┴─────────────────┴───────────────┘
在乘用车中,byte1前两个bit,用00/01/10/11,分别表示P/C/B/U(动力/底盘/车身/网络)中的一个,之后6bit是数字,合在一起形如“C01”。
例如,故障码U0167,该OBD故障码适用于所有汽车制造商:
故障码 | U0167 |
---|---|
中文定义 | 与汽车防盗控制模块通讯丢失 |
英文定义 | Lost Communication With Vehicle Immobilizer Control Module |
范畴 | 网络通讯系统 |
背景知识 | 防盗控制模块的作用是保证汽车仅在专用钥匙存在,并且跟它各类部件相匹配的时候才会允许汽车启动。 |
注:这是ISO15031中的故障码,与UDS中故障码在长度上有一定的不同
DTC状态位
下面是statusOfDTC(DTC状态)描述:
statusOfDTC字段名 | 位# | 描述 |
---|---|---|
testFailed | 0 | DTC在请求时不再失败 |
testFailedThisOperationCycle | 1 | DTC从未在当前操作周期中失败 |
pendingDTC | 2 | DTC在当前或之前的运行周期中失败 |
confirmedDTC | 3 | DTC在请求时未得到确认 |
testNotCompletedSinceLastClear | 4 | 自上次代码清除以来,DTC测试已完成 |
testFailedSinceLastClear | 5 | 自上次代码清除以来,DTC测试至少失败了一次 |
testNotCompletedThisOperationCycle | 6 | DTC测试完成了这个操作周期 |
warningIndicatorRequested | 7 | 服务器不请求warningIndicator处于活动状态 |
$19有28个子服务(sub-function),常用的有(参考ISO 14229-1-2013表269):
- 01 读取与状态mask匹配的DTC数量(reportNumberOfDTCByStatusMask),后面参数是DTC状态掩码,例如01表示想读当前故障,08表示想读历史故障,09表示当前故障和历史故障都想读。
示例:
// 请求
19 01 09 // 读取当前故障和历史故障的数量
// 积极应答
59 01 09 01 00 01 // 09: 本ECU所支持的掩码; 01: DTC的格式(ISO14229-1为01); 00 01: 目前满足条件的DTC数量
- 02 读取与状态mask匹配的DTC列表及其状态(reportDTCByStatusMask),后面参数是DTC状态掩码,含义同子功能01。
每个故障码都会对应一个1byte的DTC status,该status与 DTCStatusMask进行按位与操作后,如果非0,证明匹配;如果为0,证明不匹配。因此,可能存在一个匹配的DTC列表及其状态。
示例:
// 请求
19 02 09
// 积极应答
59 02 09 XX XX XX 01 // XX XX XX: DTC, 由车厂定义; 01: 表示当前故障
- 03 检索DTCSnapshot记录标识(reportDTCSnapshotIdentification)
客户端可以通过该子功能服务,来检索所有捕获的DTCSnapshot记录的DTCSnapshot记录标识(ID)信息。服务器应返回所有存储的DTCSnapshot记录的DTCSnapshot记录ID信息列表。
单个DTCSnapshot记录 = DTCRecord(DTC编号(高,中,低字节))和DTCSnapshot记录号
如果为单个DTC存储多个DTCSnapshot记录,则服务器应在每次出现的响应中放置一个项目,每次使用不同的DTCSnapshot记录号(用于稍后检索记录数据)。
注:服务器可以为单个DTC存储多个DTCSnapshot记录,以跟踪每次DTC出现的情况,如电机短路故障,DTCSnapshot记录可以是电源电压值 + 负载电流。要支持的DTCSnapshot记录及其数量,应由系统供应商/车辆制造商定义。
DTCSnapshot记录标识信息应在客户端成功执行ClearDiagnosticInformation请求时清除。车辆制造商有责任在发生内存溢出(存储的DTC和DTCSnapshot数据在服务器中完全占用存储空间)时,指定删除存储的DTC和DTCSnapshot数据的规则。
- 04 读取快照信息(reportDTCSnapshotRecordByDTCNumber),也叫冻结帧
DTCSnapshot记录数据以及DTCSnapshot记录号(Number)由客户端定义。服务器收到请求后,搜索支持的DTC与客户指定的DTCMaskRecord(包含DTC编号(高,中,低字节))完全匹配。客户请求中提供的DTCSnapshotRecordNumber参数应指定一个特定的DTCSnapshot记录数据被请求的DTC的出现。
注意:DTCSnapshotRecordNumber不共享与DTCStoredDataRecordNumber相同地址空间。
如果服务器支持为单个DTC存储多个DTCSnapshot记录(支持此功能由系统供应商/车辆制造商定义),则建议服务器还实施reportDTCSnapshotIdentification子功能参数(子功能=03)。建议客户在通过reportDTCSnapshotRecordByDTCNumber请求特定的DTCSnapshotRecordNumber之前,首先请求使用子函数参数reportDTCSnapshotIdentification存储的DTCSnapshot记录的标识。
还建议支持子函数reportDTCSnapshotRecordIdentification,以便客户会直接识别存储的DTCSnapshot记录,而不是通过解析服务器的所有存储的DTC来确定是否存储DTCSnapshot记录。
系统供应商/车辆制造商有责任确定在此类服务器内捕获的DTCSnapshot记录,是否将与故障发生信息相关的数据存储为ECU文档的一部分。
如果客户端定义的DTCMaskRecord和DTCSnapshotRecordNumber参数(DTCSnapshotRecordNumber≠0xFF)已被识别出故障,则服务器将返回单个预定义的DTCSnapshotRecord以响应客户端的请求,以及DTC号和statusDTC。
请求消息:
思考:DTCSnapshot记录号与DTCSnapshotRecordNumber,有何不同?
思考:子功能03与04,有何区别?
03指定服务器将所有DTCSnapshot数据记录标识(DTC编号和DTCSnapshot记录编号)传送给客户端;而04 指定服务器将与客户端定义的DTC编号和DTCSnapshot记录编号(所有记录为0xFF)关联的DTSCnapshot记录传输到客户端。
06 读取扩展信息(reportDTCExtDataRecordByDTCNumber)。
0A 读取ECU支持的所有DTC列表及其状态(reportSupportedDTC)
检索服务器支持的所有DTC的状态。请求中应包含DTCStatusAvailabilityMask,提供DTC状态位掩码功能。服务器应向客户端发送支持的所有DTC和相应状态位列表。
$19服务几个常用的请求参数:
请求数据参数名 | 参数定义 |
---|---|
DTCStatusMask | DTC状态掩码 含8bit DTC状态位。该字节用于请求消息中,允许客户端请求状态与DTCStatusMask相匹配的DTC的DTC信息。 |
DTCMaskRecord | DTC掩码记录,3byte:DTCHighByte,DTCMiddleByte,DTCLowByte。表示服务器支持的特定诊断故障码的唯一标识号。 其定义允许多种编码DTC信息的方法,如ISO 15031-6,ISO 14229,SAE J1939-73,ISO 11992-4等。 |
DTCSnapshotRecordNumber | 1byte,指示通过reportDTCSnapshotByDTCNumber子函数为客户机定义的DTCMaskRecord请求的特定DTCSnapshot数据记录的编号。 DTCSnapshot数据记录号: 0x00 应保留用于立 法目的; 0x01-0xFE 可用于车辆制造商的特定用途; 0xFF 请求服务器立即报告所有存储的DTCSnapshot数据记录。 |
DTCStoredDataRecordNumber | 1byte,指示通过reportDTCStoreDataByRecordNumber子函数请求的特定DTCStoredDataRecord的编号。 0x00 应保留用于立法目的; 0x01-0xFE 可用于车辆制造商特定用途; 0xFF 请求服务器立即报告所有存储的DTCStoreData数据记录。 |
常用应答数据参数:
应答参数名 | 描述 |
---|---|
DTCAndStatusRecord | DTC及状态记录 允许支持多种DTC信息格式,如ISO_14229-1_DTC,SAE_J2012-DA_DTCFormat_00,SAE_J1939-73_DTC等。 通常由4byte组成:DTCHighByte,DTCMiddleByte, DTCLowByte,statusOfDTC。 其中,前面3byte(DTCHighByte,DTCMiddleByte,DTCLowByte)称为DTC编号。不同的格式,对应不同的编码。 |
DTCRecord | DTC记录 包含一个或多个DTCHighByte,DTCMiddleByte,DTCLowByte的分组。 |
StatusOfDTC | 特定的DTC状态 |
DTCStatusAvailabilityMask | 1byte,位定义与statusOfDTC相同,代表服务器支持的状态位。服务器不支持的必须设置为’0’,每个支持的位由’1’表示。 |
DTCFormatIdentifier | 1byte,定义了服务器报告的DTC格式。给定服务器只能支持一个DTCFormatIdentifier。 0x00 SAE_J2012-DA_DTCFormat_00(ISO 15031-6定义) 0x01 ISO_14229-1_DTCFormat (ISO 14229-1定义) 0x02 SAE_J1939-73_DTCFormat(SAE J1939-73定义) 0x03 ISO_11992-4_DTCFormat(ISO 11992-4定义) 0x04 SAE_J2012-DA_DTCFormat_04(ISO 27145-2定义) 0x05-0xFF 保留 |
DTCCount | 2byte,响应reportNumberOfDTCByStatusMask或reportNumberOfMirrorMemoryDTC请求而发送的参数。 |
DTCSnapshotRecordNumber | 客户端在reportDTCSnapshotRecordByDTCNumber请求中指定的DTCSnapshotRcoerdNumber参数的回显,或存储的DTCSnapshot记录的实际DTCSnapshotRecordNumber。 |
DTCSnapshotRecordNumberOfIdentifiers | 1byte,显示紧随其后的DTCSnapshotRecord中等dataIdentifiers的数量。应用值0x00指示相应的DTCSnapshotRecord中包含未定义数量的dataIdentifiers(如,>255个dataIdentifiers)。 |
DTCSnapshotRecord | 包含系统故障发生时刻的数据值快照 |
DTCStoreDataRecord | 包含从系统故障发生时起的数据值的冻结帧 |
DTCStoreDataRecordNumber | 客户端在reportDTCStoredDataByRecordNumber请求中指定的DTCStoredDataRecrodNumber参数的回显,或存储的DTCStoredDataRecord的实际DTCStoreDataRecordNumber。 |
DTCStoredDataRecordNumberOfIdentifiers | 1byte,显示紧随其后的DTCStoredDataRecord中的dataIdentifiers的数量。 |
$14 清除DTC
清除(复位)DTC格式,可以改变DTC的状态。DTC状态中8bit,除bit4,bit6外,均会被清0。bit4表示自上次代码清除以来,DTC测试已完成(testNotCompletedSinceLastClear);bit6表示DTC测试完成了这个操作周期(testNotCompletedThisOperationCycle)。
该服务包含一个参数groupOfDT,占3byte,指示DTC组(例如,动力总成,车身,底盘)或要清除的特定DTC。3个FF代表清除所有DTC状态位。
groupOfDTC定义如下:
$2F IO控制(InputOutputControlByIdentifier)
该服务通过DID(数据标识符)来进行输入信号的替换,和控制零部件负载输出。
请求消息格式:0x2F + 2byte DID(MSB + LSB)+ 1byte InputOutputControlParameter
如下表所示:
DID全称数据标识(dataIdentifier),部分由ISO规定,部分由车厂定义,可参考各家车厂提供的总线诊断规范;InputOutputControlParameter可以看做是IO控制类型,分为4类:
1)00 控制权还给ECU,returnControlToECU;
2)01 重置为默认值,resetToDefault;
3)02 冻结当前的状态,freezeCurrentState;
4)03 短暂接管控制权,shortTermAdjustment。
如果控制类型是00~02,则请求报文4byte;如果控制类型是03,则请求报文5byte,第5byte是控制代码,可以是数字量,如01:开,00:关;也可以是模拟量,如空调风门的开度。
6种模式的配置
非默认会话在实际应用中,分为编程会话(Programming Diagnostic session)和扩展会话(Extended Diagnostic session)。UDS实际应用中,需要对26种服务根据不同会话、寻址模式的支持度进行配置,共6种模式:
物理寻址+默认会话,物理寻址+编程会话、物理寻址+扩展会话、功能寻址+默认会话、功能寻址+编程会话、功能寻址+扩展会话。
至此,可以设计出一个26行、6列的表格(通常由车厂诊断设计规范提供):
SID | 物理寻址 | 功能寻址 | 默认会话 | 编程会话 | 扩展会话 |
---|---|---|---|---|---|
… |
抑制肯定应答指示位的配置
抑制肯定应答指示位(Suppress Positive Response Message Indication Bit)顾名思义,用来抑制积极应答的。该配置指示对方静默,不需要肯定应答。该位的位置与子服务在同一byte(应用层数据第二字节),为bit7。
例如,SID=0x10,子服务0x01,如果抑制肯定应答,子服务对应字节改为0x81。这样,ECU收到该请求后,就不会回复肯定应答了。
UDS应用设备
最出名的是Vector的VN1630/1640+CANoe软件。Vector家产品特点:好用,节省开发时间,价格昂贵,不适用于小厂或大规模采购。
其他很多厂商如Kvaser、ZLG等能提供低成本、小体积、驱动简单、开放文档的设备,适用于UDS二次开发。
参考
UDS诊断入门
[Automotive Wiki ISO_14229]https://automotive.wiki/index.php/ISO_14229
画图
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30093.html