上篇:《UDS诊断服务响应规则》(打开IND4汽车人APP关注我,即可阅读完整内容,App下载二维码直接拉到本文底部)提到UDS诊断服务不仅仅可以获取和管理ECU的故障记录信息,并且还可以读取写入ECU软硬件信息、生产制造信息、实施检测和测试、以及更新代码。那么了解诊断服务的SID则可以知道上述这些功能具体是通过哪些服务指令实现的。
1.SID划分
不同的SID表示不同的服务功能,SID长度被定义为1Byte,从0x00到0xFF的划分如下表:

在ISO 14229-1中共定义了26个SID服务请求,分别在0x10~0x3E,0x83~0x87区间。由于肯定响应是SID+0x40,使得每一个SID有一个唯一对应的肯定响应。因此0x50~7E区间对应0x10~0x3E的肯定响应,0xC3~0xC7区间对应0x83~0x87的肯定响应。而0x7F是作为统一的否定响应,即否定任何SID都采用0x7F。
2.SID分类
ISO 14229根据服务的功能将其分为六大类:
诊断和通信管理功能 Diagnostic and Communication Management functional unit
诊断会话控制服务 DiagnosticSessionControl(0x10)
ECUReset (0x11) Client请求ECU重启
SecurityAccess (0x27) Client请求解锁ECU安全保护状态
CommunicationControl (0x28) Client请求控制ECU通信
TesterPresent (0x3E) Client在线通知
AccessTimingParameter(0x83) Client请求控制ECU通信周期
SecuredDataTransmission(0x84) Client请求执行安全保护的数据传输
ControlDTCSetting (0x85) Client请求设置ECU DTC
ResponseOnEvent (0x86) Client请求ECU执行特定事件
LinkControl (0x87) Client请求控制ECU通信波特率
数据传输功能 Data Transmission functional unit
ReadDataByIdentifier (0x22) Client请求根据数据标识读取ECU数据
ReadMemoryByAddress (0x23) Client请求根据数据地址读取ECU数据
ReadScalingDataByIdentifier(0x24) Client请求根据数据标识读取ECU标定信息
ReadDataByPeriodicIdentifier(0x2A) Client请求周期性读取ECU信息
DynamicallyDefineDataIdentifier(0x2C) Client请求动态定义数据标识
WriteDataByIdentifier(0x2E) Client请求根据数据标识写入信息
WriteMemoryByAddress(x3D) Client请求根据数据地址写入信息
传输存储的数据功能 Stored Data Transmission functional unit
ClearDiagnosticInformation (0x14)
ReadDTCInformation (0x19)
输入输出功能 InputOutput Control functional unit
InputOutputControlByIdentifier (0x2F)
程序控制功能 Routine functional unit
RoutineControl (0x31)
上传和下载功能 Upload Download functional unit
RequestDownload (0x34)
RequestUpload (0x35)
TransferData (0x36)
RequestTransferExit (0x37)
RequestFileTransfer(0x38)
3.诊断服务示例
诊断会话控制服务 DiagnosticSessionControl(0x10)
0x10诊断会话控制服务用于实现Client请求切换ECU的诊断模式。ECU上电后处于默认模式(Default diagnostic session),在默认模式中可实现的诊断服务是有一定限制的,比如无法解锁安全模式,则Bootloader、部分RoutineControl、部分数据写入就无法实现,直到通过0x10诊断会话切换ECU至non-default session。


服务请求Request
请求模式切换SID为0x10,sub-function表示希望进入的模式类型。

其中Sub-function定义:
0x00 ISOSAEReserved:被预留的指令
0x01 DefaultSession:默认模式
0x02 ProgrammingSession:编程模式
0x03 ExtendedDiagnosticSession:扩展模式
0x04 SafetySystemDiagnosticSession:安全模式
0x05~0x3F ISOSAEReserved:被预留的指令
0x40~0x5F VehicleManufactureSpecific:OEM自定义
0x60~0x7E SystemSupplierSpecific:供应商自定义
0x7F:ISOSAEReserved:被预留的指令
80%
1