0x10服务配置
0x10服务即诊断会话控制,该服务在ECU中用于切换至不同的诊断会话。通常包含3个子功能:01 Default(默认会话),02 Programming(编程会话),03 Extended(扩展会话),ECU上电时,进入的是01默认会话。这三个子功能可以相互跳转,当然也可根据实际需求设定这些功能的跳转关系。通常,默认会话模式可以直接切换到扩展会话模式,但是不能直接切换到编程会话模式,如果想进入编程会话模式, 则必须先进入扩展会话模式。同样,编程会话模式不能直接进入扩展会话模式,只能进入默认会话模式。
0x01默认会话
默认会话请求使能ECU诊断模式进入默认会话,该会话模式不需要任何诊断应用程序的超时处理(例如: 无需3E服务保持此会话模式激活)。 如果任何其它非默认模式的会话模式被激活,而默认模式再一次被启动,则须遵守以下执行规则:
a)当ECU发送默认会话模式肯定响应报文后,ECU应终止当前诊断会话模式并进入默认诊断会 话模式;
b)当ECU发送默认会话模式肯定响应报文后,如果在之前的诊断会话模式下解锁了ECU,则ECU 将被重新锁定;
c)当ECU发送默认会话模式肯定响应报文后,将复位之前诊断模会话模式下激活的状态和控制 服务。例如:28服务、85服务、2F服务;
d)如果ECU发送该服务否定响应报文,激活的会话模式保持不变;
e)在ECU完成初始化后,诊断会话模式为默认会话模式。
0x02编程会话
编程会话模式允许支持ECU内存编程所有需要支持的诊断服务。 在编程会话模式下,ECU只能通过诊断工具发起的电控单元复位(11服务)、会话类型为默认会话的 诊断会话控制(10服务)或ECU会话(S3_server)超时退出此会话。
0x03扩展会话
扩展会话模式可用来支持对ECU变量进行调整所需的所有诊断服务,亦或者用于需要更高安全性的操作,比如对 ECU安全解锁访问、校准参数或者执行敏感功能时。
消息格式
服务请求与响应
- 请求格式
序号 | 参数名称 | 要求 | 字节数据 |
---|---|---|---|
#1 | DiagnosticSessionControl Request SID (SID_服务标识符) | M (强制) | 0x10 |
#2 | sub_function = [diagnosticSessionType] | M (强制) | 0x00 – 0xFF |
- 肯定响应格式
序号 | 参数名称 | 要求 | 字节数据 |
---|---|---|---|
#1 | DiagnosticSessionControl Request SID (SID_服务标识符) | M (强制) | 0x50 |
#2 | sub_function = [diagnosticSessionType] | M (强制) | ** |
#3 | P2 Server_max (high byte) | M (强制) | ** |
#4 | P2 Server_max (low byte) | M (强制) | ** |
#5 | P2* Server_max (high byte) | M (强制) | ** |
#6 | P2* Server_max (low byte)] | M (强制) | ** |
- 否定响应格式
序号 | 参数名称 | 要求 | 字节数据 |
---|---|---|---|
#1 | 否定响应 | M (强制) | 0X7F |
#2 | DiagnosticSessionControl Request SID (SID_服务标识符) | M (强制) | ** |
#3 | NRC | M (强制) | NRC |
示例
0x02 10 01 55 55 55 55 55 #诊断仪请求ECU跳转到默认会话
0x02 10 02 55 55 55 55 55 #诊断仪请求ECU跳转到编程会话
0x02 10 03 55 55 55 55 55 #诊断仪请求ECU跳转到扩展会话
0x06 50 01 00 32 01 F4 55 #ECU肯定响应,ECU跳转到默认会话
0x03 7F 10 12 55 55 55 55 #ECU否定响应,不支持当前子功能
参考来源:
https://blog.csdn.net/weixin_43722921/article/details/130175731