诊断会话控制服务(Diagnostic Session Control Service, SID 0x10)用于使能服务器(ECU)的诊断会话。
什么是诊断会话
诊断会话关联了一系列的诊断服务或诊断功能。只有当前激活的诊断会话支持的诊断服务才能被响应。ECU通常有两个以上的诊断会话,包括:一个默认会话(Default Session)和若干非默认会话(Non Default Session)。非默认会话由用户自行定义。典型的ECU诊断会话定义如下:
诊断会话 | 描述 |
---|---|
默认会话 Default Session |
ECU启动后默认进入此会话。只提供基本的诊断服务。 |
编程会话 Programming Session |
ECU更新应用程序或标定数据时进入此会话。支持与程序更新相关的诊断服务。如0x34、0x36、0x37等。 |
扩展会话 Extended Session |
除支持默认会话下的诊断服务和功能外,还支持额外的诊断服务。具体由用户自行定义。 |
同一时刻只有一个诊断会话处于激活状态。此时ECU可以响应该诊断会话关联的诊断服务。如果客户端请求了当前诊断会话下不支持的诊断服务,则服务器需要给出NRC为0x7F的否定响应。激活新的诊断会话会关闭上一个诊断会话。
通常在默认会话(Default Session)下,允许如下的诊断服务
服务ID SID |
服务名称 Service Name |
---|---|
0x10 | 诊断会话控制 DiagnosticSessionControl |
0x11 | ECU复位 ECUReset |
0x14 | 清除诊断信息(清除DTC) ClearDiagnosticInformation |
0x19 | 读取诊断故障码信息 ReadDTCInformation |
非默认会话下支持的的诊断服务由用户自行定义。通常编程会话(Programming Session)下支持的诊断服务如下:
服务ID SID |
服务名称 Service Name |
---|---|
0x10 | 诊断会话控制 DiagnosticSessionControl |
0x11 | ECU复位 ECUReset |
0x27 | 安全访问 SecurityAccess |
0x31 | 例程控制 RoutineControl |
0x34 | 请求下载 RequestDownload | <