UDS诊断服务简述
本文主要用于UDS诊断服务的开发以及初步的认知学习。
参考文件链接:
跟我学UDS(ISO14229) — 0x3E(TesterPresent)
UDS诊断之10服务
0x3E服务
该服务用于诊断会话服务的维持。
存在2个子服务:
0x00:不禁止肯定响应报文的发送;
0x80:禁止肯定响应报文的发送;
0x10服务
该服务用于诊断会话控制。
存在以下子服务:
0x00 ISOSAEReserved(保留)
0x01 defaultSession(默认会话)
0x02 ProgrammingSession(编程会话)
0x03 extendedDiagnosticSession(外部扩展会话)
0x04 safetySystemDiagnosticSession
0x05 – 0x3F ISOSAEReserved(保留)
0x40 – 0x5F vehicleManufacturerSpecific(由整车厂自定义使用)
0x60 – 0x7E systemSupplierSpecific(由ECU供应商自定义使用)
0x7F ISOSAEReserved(保留)
故障码状态位 DTC Status Bits
Bit | Description | commit | 补充说明 |
---|---|---|---|
0 | testFailed | 反映最近一次的故障检测的结果: 0:检测无故障:; 1:检测有故障; | 故障检测是指控制器会在特定时间/状态下执行特定的代码来检查一下系统的状态。 例如:控制器的Ad采样口,正常电压范围是5~16V,在软硬件设计中,每隔10ms就会去读一下这个Ad采样口的电压,如果在正常电压范围内,则测试通过,反之,测试失败。 |
1 | testFailedThisOperationCycle | 当前点火周期内,是否检测到故障: 0:没有检测到故障; 1:至少检测到一次故障; | 记录当前点火周期/上电周期内,故障检测中是否检测到故障的情况,每一次新的周期,该bit都会置0。 备注:可以是上下电周期,也可以是发动机点火周期,具体取决于系统的定义,一般是一次上下电作为一次周期; |
2 | pendingDTC | 故障挂起: 0:当前/上一轮周期不存在故障; 1:当前/上一轮周期存在故障,需要记录; | 部分故障需要连续多周期发生,方可成熟;[类似于滤波过程中的一个状态] 该位置1,则故障码相关需要被记录。 |
3 | confirmedDTC | 故障成熟(满足故障码记录条件): 0:无确认故障; 1:存在/存在过确认的故障,该故障已被记录; | DTC的确认,需要故障发生的次数/时间超过设定的阈值; 故障和DTC是2个概念。 该位置1,则故障码相关需要被记录。该位置0,需要14服务,或者满足老化条件,或者其他。 |
4 | testNotCompletedSinceLastClear | 自上次清除DTC后,是否完成了该DTC相关的检测 0:自从清理DTC之后,已经完成了该DTC相关的检测。 1:自从清理DTC之后,没有完成该DTC相关的检测。 | 这个bit用于标识,自上次清理DTC后(0x14服务),是否成功地完成了对该DTC的相关测试(不管测试结果是什么,只关心是否测了)。 因为部分DTC的测试需要满足特定条件的,不是每次工作周期内都会进行检测。 |
5 | testFailedSinceLastClear | 自上次清除DTC后,是否检测出故障: 0 :自从清理DTC之后,没有检测出故障。 1:自从清理DTC之后,检测过故障。 | 该bit是0的情况下,也存在故障检测未完成的可能。 |
6 | testNotCompletedThisOperationCycle | 当前点火周期内,是否完成过故障检测。 0:当前点火周期内,完成过故障检测; 1:当前点火周期内,未完成过故障检测; | |
7 | warningIndicatorRequested | 是否请求点亮警告灯: 0:不请求激活警告指示; 1 :请求激活警告指示; | 如果该DTC不支持警告指示,则这个位永远置0。 |