DiagnosticSessionControl(0x10)——诊断会话控制
这个服务的主要作用就是使能不同的诊断会话,不同的诊断会话包含了不同的诊断服务或者功能,这个服务就实现了不同诊断会话之间的切换。
ECU上电之后会进入默认会话(default),当Client请求一个诊断会话服务,如果这个会话已经运行,则回复肯定响应。
进入其他session,default session的功能仍可用。要想进入一个新的诊断会话,特定的条件需要满足,这些条件由用户定义。
图1 session切换示意
- default session:当Server在default session的时候,如果Client又请求了一个default session,Server会完全重新初始化default session时的一些状态;
- 如果Client请求让Server从default session切换到其他session,将会停止在default session通过ResponseOnEvent(0x86)服务配置的功能;
- 非default session之间的切换将会重新初始化这些session;
- 非default session切换至default session,将会使能通过ResponseOnEvent(0x86)服务配置的功能,其他session不能在default session运行的功能也会停止。
下图是不同session所支持的服务一览:
图2 不同session所支持的服务
服务请求报文格式
图3 服务请求报文格式
图4 sub-function描述(1)
图5 sub-function描述(2)
肯定响应报文格式
图6 肯定响应报文格式
数据参数格式定义如下(3~6字节):
图7 数据参数定义
图8 sessionParameterRecord定义
图9 sessionParameterRecord值定义
可支持否定响应NRC
图10 可支持否定响应NRC
示例
发送请求:10 02
肯定响应:50 02 00 32 01 F4