ISO14229-1-2013 UDS 汉译笔记(第9章)诊断和通信管理功能单元
9 诊断和通信管理功能单元
9.1 概述
表22 是诊断和通信管理功能单元的定义
** 表22 诊断和通信管理功能单元**
服务 | 描述 |
---|---|
DiagnosticSessionControl 诊断会话控制 |
客户端请求控制(若干)服务器的诊断会话 |
ECUReset ECU重置 |
客户端强制(若干)服务器实行重置 |
SecurityAccess 安全访问 |
客户端请求解锁(若干)安全服务器 |
CommunicationControl 通信控制 |
客户端控制服务器通信参数(例如:通信波特率) |
TesterPresent 诊断仪在现场 |
客户端指示(若干)服务器客户端当前在现场 |
AccessTimingParameter 访问定时参数 |
客户端使用该服务读取和修改进行中的通信的定时参数 |
SecuredDataTransmission 安全数据传输 |
客户端使用本服务执行扩展的安全链路层数据传输 |
ConrolDTCSetting DTC(故障码)控制 |
客户都控操控务器的DTC设置 |
ResponseOnEvent 事件响应 |
客户端请求设置或控制服务器的事件机制 |
LinkControl 链路控制 |
客户端请求控制通信波特率 |
9.2 DiagnosticSessionControl诊断会话控制(0x10)服务
9.2.1 服务描述
DiagnosticSessionControl服务可以在(若干)服务器上启用不同的诊断会话。
译注:诊断会话(diagnostic session),session 原意是指持续一段时间的活动、会议、交谈。本文中不同的诊断会话代表着不同的功能权限
一个诊断会话在服务器端启用一组诊断服务或诊断功能。该服务使服务器能够向数据链路层报告满足已生效的诊断会话的参数值(例如定时参数值)。本国际标准的用户可定义针对各生效诊断会话的特定服务或功能集。
服务器上通常只有一个生效的诊断会话,在上电的同时服务器会启用其默认诊断会话,若未启用其他会话,则默认诊断会话会在上电时一直持续。
服务器有提供在正常操作条件和车辆厂商定义的其他操作环境下(例如跛行操作模式)的诊断功能的能力。
如果客户端请求一个正在运行的诊断会话,则服务器会发送一个积极响应消息,在Figure 7中进行了描述了会话切换时服务器的内部行为。
无论何时客户端请求新的诊断会话,服务器会在启动新会话定时之前发送诊断会话控制(DiagnosticSessionControl
)的正响应消息。某些情况况下肯能需要在发送正响应之前进入新会话,同时维护旧协议的定时响应发送。如果服务器不能启动请求的诊断会话,则会发送诊断会话控制(DiagnosticSessionControl
)的负响应,并且当前会话保持不变(关于服务器——客户端行为的更多信息,参考diagnosticSession参数定义)。在非默认诊断会话(不包括编程会话programmingSession
)的诊断服务和诊断功能集是默认会话的超集,这说明默认诊断会话的功能在非默认诊断会话中依然有效。车辆制造商自定义的诊断会话不在本文之列。
服务器需要满足某些条件才能启动新的诊断会话,所有条件均由用户定义。条件示例如下:
- 服务器可能只允许某些客户端标识(客户端诊断地址)启动特定诊断会话(例如服务器可能需要只带有0xF4标识的客户端启动扩展诊断会话
extendedDiagnosticSession
)。 - 需要满足某些安全条件(例如车辆保持静止或发动机保持熄火)。
某些系统需要在启动新诊断会话时更新通信定时参数。诊断会话控制(DiagnosticSessionControl
)实体使用适当的服务原语来改变客户端欲与之通信的的本地节点或隐含于本节点之中特定底层通信参数。
Figure 7 提供关于诊断会话变更和服务器如何切换到新会话
关键点:
- 默认会话:当服务器处于默认会话中且客户端请求启动默认会话,则服务器会完全重新初始化默认会话,在新的活动会话中服务器会重置所有活动的、初始化的、变更的设置或控制。这不会影响在非易失性存储器(
non-volatile memory
)中编程造成的长期变更。 - 其他会话:服务器从默认会话切换到其他非默认其他会话时,服务器会仅停止在默认会话中服务器通过
ResponseOnEvent
(0x86)配置的事件(类似于stoipResponseOnEvent
)。 - 相同或其他会话:服务器从非默认会话切换到非默认会话(包括当前正在使用的会话)时,服务器应当(重新)初始化诊断会话,这说明:
i) 服务器上任何已通过ResponseOnEvent
(0x86)配置的所有事件都会停止。
ii) 重新安全锁定。通过安全访问解锁的活动的诊断功能会被重置(例如:一个DID正活动的inputOutputControl
(输入输出控制))。
iii) 应维护新会话支持且不依赖于安全访问的其他处于活动状态的诊断服务。例如,在切换会话从一个非默认会话切换到相同的非默认会话时,应保持配置的定期调度任务,以及保持CommunicationControl
和ControlDTCSetting
不受影响,这意味着正常通信在切换会话时禁用,他将在切换会话后保持禁用状态。 - 默认会话:当服务器从其他非默认绘画切换到默认会话中,服务器应停止通过
ResponseOnEvent
(0x86)配置的所有事件,并启用安全。任何默认回鹘不支持的诊断功能都会终止。例如:将重置任何CommunicationControl
和ControlDTCSetting
服务配置的定期调度任务或输出控制。这意味着切换到默认会话时禁用的正常通信将重新启用。服务会重置所有在活动会话中的活动的/初始化的/变更的设置或控制。这不包括在非易失性存储器中进行编程造成的长期变更。
Figure 7 - 服务诊断会话状态图
表23 定义了在默认会话和非默认会话(定时服务)中都支持的服务。任何非默认会话都绑定与一个诊断会话定时器,该定时器有客户端保持活动。
表23--默认和非默认诊断会话中都允许的服务
服务 | 默认会话 | 非默认会话 |
---|---|---|
DiagnosticSessionControl – 0x10 |
x | x |
ECUReset – 0x11 |
x | x |
SecurityAccess – 0x27 |
不适用 | x |
CommunicationControl – 0x28 |
不适用 | x |
TesterPresent – 0x3E |
x | x |
AccessTimingParameter – 0x83 |
不适用 | x |
SecuredDataTransmission – 0x84 |
不适用 | x |
ControlDTCSetting – 0x85 |
不适用 | x |
ResponseOnEvent – 0x86 |
xa | x |
LinkControl – 0x87 |
不适用 | x |
ReadDataByIdentifier – 0x22 |
xb | x |
ReadMemoryByAddress – 0x23 |
xc | x |
ReadScalingDataByIdentifier – 0x24 |
xd | x |
ReadDataByPeriodicIdentifier – 0x2A |
不适用 | x |
DynamicallyDefineDataIdentifier – 0x2C |
xd | x |
WriteDataByIdentifier – 0x2E |
xb | x |
WriteMemoryByAddress – 0x3D |
xc | x |
ClearDiagnosticInformation – 0x14 |
x | x |
ReadDTCInformation – 0x19 |
x | x |
InputOutputControlByIdentifier – 0x2F |
不适用 | x |
RoutineControl – 0x31 |
xe | x |
RequestDownload – 0x34 |
不适用 | x |
RequestUpload – 0x35 |
不适用 | x |
TransferData – 0x36 |
不适用 | x |
RequestTransferExit – 0x37 |
不适用 | x |
RequestFileTransfer – 0x38 |
不适用 | x |
a. 默认会话中是否允许ResponseOnEvent
服务取决于具体实现。
b. 安全数据标识符需要安全访问SecurityAccess(0x27)
服务,因此需要非默认会话。
c. 安全内存区域需要安全访问SecurityAccess(0x27)
服务,因此需要非默认会话。
d. 一个数据标识符可以在默认和非默认诊断会话中动态定义。
e. 安全例程需要安全访问SecurityAccess(0x27)
服务,因此需要非默认会话。需要客户端主动停止的例程依然需要非默认会话。
重点--服务器和客户端需要满足第7.5节所规定的请求和响应消息行为
9.2.2 请求消息
9.2.2.1 请求消息定义
表 24 请求消息的定义。
Table 24 请求消息定义
A_Data byte | Parameter Name | Cvt | Byte Value | Mnemonic |
---|---|---|---|---|
#1 | DiagnosticSessionControl Request SID | M | 0x10 | DSC |
#2 | sub-function = [diagnosticSessionType] | M | 0x00 - 0xFF | LEV_DS_ |
9.2.2.2 请求消息子功能参数(sub-function parameter)$Level(LEV_)定义
子功能参数 diagnosticSessionType
用于 DiagnosticSessionControl
服务选择服务器指定的行为。其解析和用法在表25中进行了详细列举。
接下来是子功能值的定义(不显示 suppressPosRspMsgIndicationBit
(bit 7))。
Table 25 -- 请求消息子功能参数定义
Bit 6-0 | Description | Cvt | Mnemonic |
---|---|---|---|
0x00 | ISOSAEReserved 本文件预留值 |
M | ISOSAERESRVD |
0x01 | defaultSession 默认会话 该诊断会话在服务器上启用默认的诊断会话,并且不对诊断应用超时处理提供任何支持(例如不需要TesterPresent服务保持会话)。 如果服务器上非默认会话处于活动状态,默认会话一旦启动,下列实现规则需要被遵循(也可参考上文中服务诊断会话状态图): 服务器在响应DiagnosticSessionControl时应停止当前诊断会话,然后启用请求的新会话。 如果服务器发送DiagnosticSessionControl正响应消息,若在诊断会话中解锁服务器,服务器此时将重新锁定。 若在服务器接收DiagnosticSessionControl请求服务标识后服务器发送负响应,其处于活动状态的会话将持续进行。 注意 如果使用数据链路需要一个初始化步骤,那么初始化的服务器预置启动默认会话。 初始化步骤过后不需要DiagnosticSessionControl将diagnosticSession切换到defaultSession。 |
M | DS |
0x02 | ProgrammingSession 编程会话 此diagnosticSession启用支持服务器存储器编程的所有服务 如果服务器在boot software(引导程序)运行programmingSession。要退出编程会话可以通过几种方式:客户端发起 ECUReset (0x11)服务、DiagnosticSessionControl (0x10)服务、服务器端会话超时。如果服务器运行引导程序(boot software)时收 到sessionType 为defaultSession 的DiagnosticSessionControl (0x10)或者会话层超时,并且应用软件在上述两种状态下均有效,服务器会重启应用软件。本文件不具体说明重启有效的应用软件的不同实现方法(例如在ECU重置等ECU启动阶段,可以直接在引导软件可以确定有效的应用软件)。 |
U | PRGS |
0x03 | extendedDiagnosticSession扩展会话 该diagnosticSession可用于启用所有需要支持调整功能的诊断服务,例如服务器存储中的“怠速状态下一氧化碳值 Idle Speed, CO Value, etc. ”等。它也用于启用未绑定于调节功能的诊断服务(例如在Table 23 中参考定时服务)。 |
U | EXTDS |
0x04 | safetySystemDiagnosticSession 安全系统诊断会话本diagnosticSession启用所有安全系统相关的诊断服务(例如部署安全气囊)。 |
U | SSDS |
0x05–0x3F | ISOSAEReserved 本文件预留该值,留待进一步定义。 |
U | ISOSAERESRVD |
0x40–0x5F | vehicleManufacturerSpecific 该值的范围为车辆制造商指定使用而预留。 |
U | VMS |
0x60–0x7E | systemSupplierSpecific 该值的范围为系统供应商指定使用而预留。 |
U | SSS |
0x7F | ISOSAEReserved 本文件预留该值,留待进一步定义。 |
M | ISOSAERESRVD |