1. 诊断会话
诊断会话模式由诊断服务层用于访问受限于特定会话的不同诊断服务。节点需要支持若干
会话模式,如下所示:
非默认会话启动时,控制器应启动 S3
_server
定时器。如果在这个时间范围内没有从任何一方
发送诊断报文,则正在进行的诊断会话将停止,控制器将重启默认会话。控制器接收“TesterPresent”请求报文或其他任何诊断请求报文时,S3_server计时器应重置。
Tester应持续发送诊断服务“TesterPresent”,用于保持非默认会话激活。如果需要,其他有效的诊断服务也可以保持非默认会话。 对于非可编程控制器,应该在控制器上电后的初始时间内进行初始化,然后过渡到默认会话。它应该符合诊断会话的以下转换原则:
状态转换 1(从默认会话到默认会话): 当控制器在默认会话模式下,测试设备请求启动默 认会话时,控制器应该完整的重新初始化默认会话。 在激活的会话期间,控制器应重置所有激活/启动/更改的设置/控制。这不包括编入非易失性存储器的长期变化。状态转换 2(从默认会话到非默认会话): 当控制器从默认会话转换到非默认会话时,控制 器只应停止在默认会话期间通过 ResponseOnEvent(0x86)服务在控制器中配置的事件(类似 stopResponseOnEvent)。状态转换 3(从非默认会话到非默认会话): 当控制器从非默认会话转换到非默认会话时(包括当前激活的诊断会话),控制器应(重新)初始化诊断会话,这意味着:(1)应该停止通过 ResponseOnEvent(0x86)服务在控制器中配置的每个事件。(2)安全性应重新锁定。 请注意,安全访问的锁定应将任何依赖于安全访问的激活诊断功能重置为未锁定状态(例如,激活 inputOutputControl 的一个 DID)。(3)应保持新会话中支持并且不依赖安全访问的所有其他激活的诊断功能。 例如,任何已配置的定期调度器在转换时都应保持激活状态从一个非默认会话到另一个或相同的非默认会话,并且不会影响 CommunicationControl(0x28)和 ControlDTCSetting(0x85)服务的状态。状态转换 4(从非默认会话到默认会话): 当控制器从默认会话以外的任何诊断会话转换 到默认会话时,控制器应通过 ResponseOnEvent(0x86)服务停止控制器中配置的每个事件, 并启用安全性。 任何其他在默认会话中不支持的诊断功能都将被终止。 例如,任何已配置的 周期性调度或输出控制应被禁用,并且 CommunicationControl 和 ControlDTCSetting 服务的 状态应被重置,这意味着正常通信在会话切换时,应重新启用默认会话。 在激活的会话期间, 控制器应重置所有激活/启动/更改的设置/控制。 这不包括编入非易失性存储器的长期变化。详细会话状态转换依据如下状态图:
注:只有一种例外情况必须单独处理:控制器复位或上电后,应保留一个时间窗(20ms),在此 时间窗口之间,控制器可以接收10 02并进入编程会话。