一、服务描述
- 10服务用于在服务器中启用不同的诊断会话。 诊断会话在服务器中启用一组特定的诊断服务和/或功能。
- 该服务提供的功能是,服务器可以报告数据链路层特定的参数值,使能诊断会话(例如计时参数值)。
- 在服务器中始终只有一个诊断会话处于活动状态。服务器在上电时应该总是启动默认的诊断会话。如果没有启动其他诊断会话,那么只要服务器通电,默认诊断会话就会运行。
- 如果客户端请求了一个已经在运行的诊断会话,那么服务器应该发送一个积极的响应消息,并按照图1所示的方式进行操作,图1描述了在会话之间转换时服务器的内部行为。
- 每当客户端请求一个新的诊断会话时,服务器应该在新会话的计时在服务器中激活之前发送DiagnosticSessionControl积极响应消息。有些情况可能要求在发送积极响应之前进入新的会话,同时保持发送响应的旧协议时间。如果服务器无法启动所请求的新诊断会话,那么它将使用DiagnosticSessionControl否定响应消息进行响应,当前会话将继续进行。非默认诊断会话(不包括programmingSession)中的诊断服务和诊断功能集是defaultSession中提供的功能的超集,这意味着在切换到任何非默认诊断会话时,默认会话的诊断功能也是可用的。一个会话可以启用车辆制造商特定的服务和功能。
- 为了启动一个新的诊断会话,服务器可能会请求满足某些条件。所有这些条件都是用户定义的。这种情况的例子有:
1、服务器可能只允许具有特定客户端标识符(客户端诊断地址)的客户端启动特定的新诊断会话(例如,服务器可能要求只有具有客户端标识符F4的客户端才能启动extendedDiagnosticSession)。
2、可能需要满足某些安全条件(例如车辆不得移动或发动机不得运转)。例如,programmingSession可能导致正常功能的丧失,因此,一些ecu可能要求车辆处于安全状态。 - 在某些系统中,当一个新的诊断会话启动时,需要更改通信定时参数。DiagnosticSessionControl服务实体可以使用适当的服务原语更改为底层指定的计时参数,以更改本地节点中的通信计时,也可能更改客户机希望与之通信的节点中的通信计时。
关键点:
1、默认会话:当服务器在默认会话中,客户端请求启动defaultSession时,服务器必须完全重新初始化defaultSession。服务器将在激活会话期间重置所有已激活/已启动/已更改的设置/控件。这还不包括编程到非易失性内存中的长期更改。
2、其他转换到任何defaultSession:当服务器从defaultSession转换到任何其他会话而不是defaultSession时,服务器应该只暂停事件(类似于在非defaultSession是活动的时间段内的stopResponseOnEvent),在defaultSession期间通过ResponseOnEvent(86)服务在服务器中配置的事件
3、当服务器从非默认会话的诊断会话转换到非默认会话(包括当前激活的诊断会话)时,服务器应该(重新)初始化诊断会话,这意味着:
1)通过ResponseOnEvent(86)服务在服务器中配置的每个事件都将被停止。
2)安全要重新上锁。任何依赖于安全访问权限的主动诊断功能应重置安全访问权限的锁,进行重新解锁(例如DID的主动输入输出控制)
3)应维护新会话中支持的、不依赖于安全访问的所有其他活动的诊断功能。例如,当从一个非defaultsession转换到另一个或相同的非defaultsession时,任何配置的定期调度器都应保持活动状态,并且CommunicationControl和ControlDTCSetting服务的状态不应受到影响,这意味着正常通信在会话切换时处于禁用状态时应保持禁用
- 转换到defaultSession:当服务器从缺省会话以外的任何诊断会话转换到defaultSession时,服务器将恢复通过ResponseOnEvent(86)服务在服务器中配置的每个事件,并且事件窗口仍然有效。此外,应在服务器中激活一个锁定的安全级别。defaultSession不支持的任何其他活动诊断功能都将被终止。例如,任何配置的定期调度器或输出控制都应该被禁用,并且CommunicationControl和ControlDTCSetting服务的状态应该被重置,这意味着当会话被切换到defaultSession时,正常的通信应该被重新启用。服务器将在激活会话期间重置所有已激活/已启动/已更改的设置/控件。这还不包括编程到非易失性内存中的长期更改
下图为默认和非默认诊断会话期间允许的服务
二、请求数据
diagnostics sessioncontrol服务使用SubFunction参数diagnostics sessiontype来选择服务器的特定行为。下图详细描述了可能的诊断会话的解释和用法。
三、积极回复
四、负响应代码–NRC