UDS(ISO14229-2006) 理解(No.9 诊断和通信管理功能单元)
9 诊断和通信管理功能单元
9.1 概述
表23 -- 诊断和通信管理功能单元
服务 | 描述 |
DiagnosticSessionControl | 客户端请求控制与一个或若干服务器之间的诊断会话 |
ECUReset | 客户端强制执行服务器重置 |
SecurityAccess | 客户端请求解锁受保护的服务器 |
CommunicationControl | 客户端请求控制服务器的通信 |
TesterPresent | 客户端通知服务器其保持在线状态 |
AccessTimingParameter | 客户端使用此服务读取或修改活动通信的定时参数 |
SecuredDataTransmission | 客户端使用此服务直行带有扩展数据链路安全的数据传输 |
ControlDTCSetting | 客户端控制服务器的DTC设置 |
ResponseOnEvent | 客户端请求在服务器开始一个事件机制 |
LinkControl | 客户端请求控制通信波特率 |
9.2 DiagnosticSessionControl(0x10)服务
9.2.1 服务描述
DiagnosticSessionControl服务用于在单个或多个服务器中激活不同的诊断会话。
一个诊断会话激活服务器中指定的服务或功能集合。其同样可以激活依赖于数据链路层的定时参数集,使之适用于启动的会话。
本服务提供使服务器可报告对于活动会话中数据链路层特定参数值的功能(例如:定时参数值)。
数据链路层特定的实现文档定义了服务响应消息中可选参数记录的结构和内容。使用本国际标准的用户,需要针对各诊断会话制定明确的服务和(或)功能集(为默认会话的功能集的超集)。
服务器中必须有且只有一个会话当前处于活动状态。服务器在上电后一般会启动默认会话(default session)。如未启动其他诊断会话,则服务器上电后会一直保持运行默认会话。
服务器应在正常运行条件下和其他厂商定义条件下提供诊断功能,例如跛状态行运行条件。
如果客户端请求的诊断会话当前正在运行,服务器会返回积极状态响应,并执行如图9所描述的会话切换时服务器内部行为。
每当客户端请求新的诊断会话,服务器会在新会话定时启动之前发送该DiagnosticSessionControl请求的积极响应消息。但是在某些情况下,如维护旧的协议发送响应时间周期时,需要在积极响应消息发送之前启动新会话。若服务器未能启动请求的诊断会话,那么服务器将响应DiagnosticSessionControl消极状态响应消息,且保持当前会话(对于服务器和客户端更多行为的定义,详情参阅diagnosticSession参数定义)。在同一时间只能够有一个会话出于活动状态。车辆制造商制定关于诊断会话对应的特定服务、功能集,该集合的诊断服务和诊断功能的非默认会话(同样不包括编程会话programmingSession)必须是默认会话defaultSession提供功能的超集,这意味着默认会话提供的诊断功能同样适用于其他非默认诊断会话。会话可以激活车辆制造商制定的不包含在ISO 14229的服务和功能。
要启用新的诊断会话,服务器可能要求满足某些条件。所有上述条件均为用户自定义。这些条件示例如下:
- 服务器可能只允许一个带有某些特定客户端标识(客户端诊断地址)启用某些新会话(例如,服务器需要带有0xF4客户端标识的客户端启动扩展会话extendedDiagnosticSession)。
- 在某些系统中,当新会话启动,应更改定时参数。DiagnosticSessionControl服务实体可以使用适当的服务原语来更改为底层指定的计时参数,从而更改本地节点中的通信计时,并可能更改客户机希望与之通信的节点中的通信计时。
图 9 展示了诊断会话转换和当诊断会话转换时服务器的内部处理流程
Key
- 默认会话
- 其他会话
- 相同会话或其他会话
- 默认会话
图 9 -- 服务诊断会话状态图
以下内容描述转变诊断会话
- 当服务器为默认会话defaultSession,且客户端请求启动默认会话,则服务器应重新初始化默认会话。服务器应重置活动会话中所有运行的、初始化的、变化的设置和控制,但不包括编程写入非易失性存储中的长效变更。
- 当服务器将会话从默认会话切换到其他会话,服务器应重置由默认会话期间的ResponseOnEvent(0x86)服务所配置的所有事件(event)。
- 当服务器在任意非默认会话间切换(包括当前活动会话),则服务器应初始化(、重新初始化)该诊断会话,这意味着服务器中每个由ResponseOnEvent(0x86)配置的事件将被重置,且激活其安全机制。非默认会话间切换时,任何配置的定时任务将继续保持活动。CommunicationControl和ControlDTCSetting(通信控制和DTC设置控制)将不受影响。这意味着,例如:正常通信在执行会话切换时被禁用,它将会保持禁用状态。
- 当服务器从非默认会话切换回默认会话,服务器应重置由ResponseOnEvent(0x86)配置的事件,并激活相应安全机制。所有配置完的定时任务将被禁用。此外,CommunicationControl和ControlDTCSetting服务将被重置。这意味着,例如:在切换会话时禁用的一般通信将重新启用。服务器应重置所有活动会话期间活动的、初始化的、变化的设置和控制。但不包括已经编程写入非易失性内存的长期变化。
表 24 展现了默认和非默认会话的相关服务(时效性服务)。任何非默认会话与客户端保持在线诊断会话定时器有关联。
表 24 -- 默认和非默认会话允许的服务
服务 | 默认会话 | 非默认会话 |
DiagnosticSessionControl - 10 hex | x | x |
ECUReset - 11 hex | x | x |
SecurityAccess - 27 hex | N/A | x |
CommunicationControl - 28 hex | N/A | x |
TesterPresent - 3E hex | x | x |
AccessTimingParameter - 83 hex | N/A | x |
SecuredDataTransmission - 84 hex | N/A | |
ControlDTCSetting - 85 hex | N/A | x |
ResponseOnEvent - 86 hex | xa | x |
LinkControl - 87 hex | N/A | x |
ReadDataByIdentifier - 22 hex | xb | x |
ReadMemoryByAddress - 23 hex | xc | x |
ReadScalingDataByIdentifier - 24 hex | xd | x |
ReadDataByPeriodicIdentifier - 2A hex | N/A | x |
DynamicallyDefineDataIdentifier - 2C hex | xd | x |
WriteDataByIdentifier - 2E hex | xb | x |
WriteMemoryByAddress - 3D hex | xc | x |
ClearDiagnosticInformation - 14 hex | x | x |
ReadDTCInformation - 19 hex | x | x |
InputOutputControlByIdentifier - 2F hex | N/A | x |
RoutineControl - 31 hex | xe | x |
RequestDownload - 34 hex | N/A | x |
RequestUpload - 35 hex | N/A | x |
TransferData - 36 hex | N/A | x |
RequestTransferExit - 37 hex | N/A | x |
a 在默认会话(defaultSession)期间依据实现方式所特定的规则决定是否允许ResponseOnEvent b 安全的数据标识(dataIdentifiers)需要安全访问(SecurityAccess),因此需要非默认会话环境。 c 安全内存地址需要安全访问,因此需要非默认会话环境。 d 数据标识可以在默认和非默认会话环境下动态定义。 e 安全例程需要安全访问,因此也需要非默认会话环境。需要客户端主动停止的例程也需要非默认会话环境。 |
重要:服务实现的这些寻址方法,则服务器和客户机应满足7.5.2中所描述的请求和响应消息行为。
9.2.2 请求消息
9.2.2.1 请求消息定义
表 25 -- 请求消息定义
A_Data byte | Parameter name | Cvt | Hex value | Mnemonic |
#1 | DiagnosticSessionControl 请求服务ID | M | 10 | DSC |
#2 |
sub-function = [ |
M | 00-FF |
LEV_ DS_ |
9.2.2.2 请求函数子函数参数$Level (LEV_) 定义
子功能参数diagnosticSessionType用于DiagnosticSessionControl服务选择服务器特定行为。