1、服务描述
诊断会话控制服务是用于激活控制器中各种不同的会话模式的。诊断会话主要有三个子服务,分为两大类:默认会话和非默认会话。其中非默认会话又包括编程会话和扩展会话。
默认会话:子服务代码是01。顾名思义,就是ECU在刚启动时保持的状态,当ECU复位的时候也是会返回默认会话,不需要超时处理。
编程会话:子服务代码是02。刷写程序时用的,超时或者刷写失败时会跳转回默认会话,即ECU从底层软件跳转到应用软件。
扩展会话:子服务代码是03。通常诊断用的大部分功能以及特殊功能都在这个会话模式下进行。
ECU内部应始终且仅有一个激活的诊断会话。当上电时,ECU应总是首先启动默认会话。如果没有启动其它的诊断会话,那么ECU上电后应一直处于默认会话模式。
每个诊断会话支持的服务集合功能,扩展会话可以看做是默认会话的超级功能,即默认会话支持的功能在任一非默认会话模式下都是支持的,反过来不一定。
由于不同会话支持的服务集合功能不一样(比如通常默认会话不支持2E写服务),因此会话之间的跳转也是有限制的。如下图所示的是某控制器要求的诊断模式转换关系图。可以看出,编程会话并不能直接跳转到扩展会话。具体的会话跳转关系视项目要求而定。
1.1、服务器从非默认跳到默认会话时,服务器应该启用安全性校验,终止默认会话中不支持的诊断功能,且重置通信控制(0x28)和控制DTC设置(0x85)服务的状态,也就是说若会话切换为默认会话时,正常通信功能为禁用,则应重启正常通信。
1.2、服务器从非默认会话跳到非默认会话时,服务器应该启用安全性校验,应维护好新会话中支持的且不依存于安全访问的所有其他有效诊断功能,即若切换会话时正常通信为禁用,则应保持禁用状态。
1.3、服务器的任何会话跳转都应当停止基于事件响应(0x86)服务已配置的所有事件。
2、服务应用
在请求10诊断会话控制服务时,第一个字节10表示诊断会话服务,第二个字节01/02/03表示对应的子服务。
肯定响应时第一个字节为50,第二个字节对应相应的子服务,3-6字节数据表示的内容可参考
因篇幅问题不能全部显示,请点此查看更多更全内容