UDS(ISO14229-2006) 理解(No.8 服务描述约定)
8 服务描述约定
8.1 服务描述
本节定义ISO14229如何描述各服务,并定义通用的诊断服务描述格式。
本节清楚地描述服务的功能轮廓。每个诊断服务规范始于描述客户端和服务器特定服务的执行动作。每个服务的描述包含一张表,其中列举了其积极、消极响应的原语参数:请求/指示、响应/确认。每个结构都与此雷同。
对于给定请求/指示和响应/确认的A_PDU定义,每个参数的存在由表8中给出的以下约定 (CVT) 值之一描述。
表8 --A_PDU参数约定
类型 | 名称 | 描述 |
M | Mandatory(强制) | 该参数应存在于A_PDU中 |
C | Conditional(条件) | 基于某些标准该参数可以存在于A_PDU中。(例如A_PDU的子函数、子参数) |
S | Selection(选择) | (除非有其他说明)该部分指示参数是强制的,且在参数列表中选择。 |
U | User option(用户选项) | 该参数可能并不存在,基于用户的动态用例。 |
注意:“<服务名>请求服务ID(<Service Name> Request Service Id)”标记为M并不意味着服务器一定支持该服务。M仅指明当服务器支持该服务时,请求A_PDU中强制要求存在此参数。 |
8.2 请求消息
8.2.1 请求消息定义
本节包含多个定义此服务请求/指示 A_PDU 参数(参见第七章)的表格。如果不同子函数参数($Level)的请求消息在 A_Data 参数的结构中存在差异,并且无法在一个表中明确指定,则每个子函数参数($Level)可能有一个单独的表。
表9 -- 请求具有子函数的A_PDU定义
A_PDU参数 | 参数名 | Cvt | 十六进制 | 助记符 |
SA | 源地址 | M | xx | SA |
TA | 目标地址 | M | xx | TA |
TA_type | 目标地址类型 | M | xx | TAT |
RA | 远程地址 | C | xx | RA |
A_Data.A_PCI.SI | <Service Name> Request Service Id | xx | SIDRQ | |
A_Data. |
sub-function = [ parameter] |
xx |
LEV_PARAM |
|
Parameter 2 |
data-parameter#1 |
xx |
DP_…#1 |
|
C: RA(远程寻址Remote Address)PDU参数只存在于远程寻址状况下。 |
表10 -- 请求不具备子函数的A_PDU定义
A_PDU参数 | 参数名 | Cvt | 十六进制 | 助记符 |
SA | 源地址 | M | XX | SA |
TA | 目标地址 | M | XX | TA |
TATYPE | 目标地址类型 | M | XX | TAT |
RA | 远程地址 | C | XX | RA |
A_Data.A_PCI.SI | <Service Name> Request Service Id | M | XX | SIDRQ |
A_Data. |
data-parameter#1 |
U |
xx |
DP_…#1 |
C: RA(远程寻址Remote Address)PDU参数只存在于远程寻址状况下。 |
在所有的请求/指示中,强制要求存在寻址信息TA、SA、TA_type。寻址信息RA可选。
注意:寻址信息展示在上表中以便进行定义。服务请求/指示的进一步定义仅指定A_Data和A_PDU参数,因为A_Data和A_PDU参数含有服务请求/指示的数据字节序列。
8.2.2 请求消息子函数参数$Level (LEV_)定义
本章定义了子函数$levels (LEV_) 参数,是由服务<Service Name>的请求/指示定义的。对于所描述的服务不使用子函数参数值并且不使用 suppressPosRspMsgIndicationBit 的情况,此子句不包含任何定义 (这隐式地表示需要响应)。
子函数参数按bit位分为两部分,参见表11。
表11 -- 子函数参数结构
Bit位置 | 描述 |
7 |
suppressPosRspMsgIndicationBit 该bit位指示服务器应抑制积极响应消息。 '0'=FALSE,不抑制积极响应消息(需要一个积极响应) '1'=TRUE,抑制响应消息(无法发出积极响应;寻址的服务器无法发出积极响应消息)。 独立于suppressPosRspMsgIndicationBit,服务器根据7.5中指定的限制发送负面响应消息。 |
6-0 |
sub-function parameter value 子函数的0-6bit,包含子函数参数值(十六进制00-7F)。 每个服务都使用子函数参数字节,但每个只支持suppressPosRspMsgIndicationBit的服务必须支持子函数参数值:zeroSubFunction(十六进制00)。 |
子函数参数值有7 bit(bit 6-0 是子函数参数值),可以有多个值来进一步指定服务行为。
每个支持持suppressPosRspMsgIndicationBit的服务必须支持zeroSubFunction(00 hex)。
除suppressPosRspMsgIndicationBit外,服务支持子函数参数值应当是在子函数参数值表中所定义的。
每个服务包含一个定义了子函数参数值的表,只考虑 0-6 bit。
表12 -- 请求消息子函数参数定义
Hex(bit 6-0) | 描述 | Cvt | 助记符 |
xx |
sub-function#1 description of sub-function parameter#1 |
M/U | SUBFUNC1 |
: | : | : | : |
xx |
sub-function#m description of sub-function parameter#m |
M/U | SUBFUNCm |
约定(Cvt)列含义如下表所示:
表13 -- 子函数参数约定
类型 | 名称 | 描述 |
M | Mandatory(强制) | 服务器若支持该服务则必须支持该子函数参数。 |
U | User option(用户选项) | 服务器可能支持该子函数参数,取决于用户选项。 |
根据suppressPosRspMsgIndicationBit的值和选择的子函数参数值,计算出完整的子函数参数字节值。
表14 -- 计算子函数字节值
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
suppressPosRspMsgIndicationBit | 作为在服务的子函数参数值表中指定的子函数参数值 | ||||||
得到的子函数参数字节值(Bit 7-0) |
8.2.3 请求消息数据参数定义
本节定义<Service Name>服务相关请求/指示的数据参数 $DataParam (DP_),本节中不包含未使用任何数据参数的服务定义,数据参数可包含多字节。本节内容提供对各种数据参数的通用描述;详细定义参见本文附件,该附件同样指定在服务器支持某服务时,是否支持数据参数或用户选项。
表15 -- 请求消息数据参数定义
定义 |
data-parameter#1 |
: |
data-parameter#n |
8.3 积极响应消息
8.3.1 积极响应消息定义
本节包含若干服务响应/确认的A_PDU参数的定义表(参见第 7 章应用层协议数据单元A_PDU的详细描述)。当不同的子函数参数$Level响应消息与A_Data参数的结构不同时,可能会对每个子函数参数$Level使用单独的表格。
积极响应消息是在执行完诊断服务之后发出的。如果诊断服务需要其他处理(例如:ECUReset服务),在诊断服务的描述中可以找到相关发送积极响应的恰当描述。
表16 -- 积极响应 A_PDU
A_PDU 参数 | 参数名 | Cvt | 十六进制 | 助记符 |
SA | 源地址 | M | xx | SA |
TA | 目标地址 | M | xx | TA |
TA_type | 目标地址类型 | M | xx | TAT |
RA | 远程地址 | C | xx | RA |
A_Data.A_PCI.SI | <Service Name>响应服务ID | S | xx | SIDPR |
A_Data.Parameter 1 |
data-parameter#1 |
U |
xx |
DP_…#1 |
C: RA(Remote Address 远程地址)只在远程寻址时出现。 |
在所有的响应/确认中,寻址信息SA、TA和TA_Type都是必须存在的;当且仅当远程寻址情况下,寻址信息RA才会被使用。
注意 为便于定义,表16展示了寻址相关信息。以后请求/指示的定义仅指定A_Data和A_PDU,因为A_Data和A_PDU代表了服务响应/确认的消息数据字节。
8.3.2 积极响应消息数据字节定义
本节定义服务<Service Name>相应/确认的数据参数。如果被描述的服务并不使用数据参数,则将不包含其定义。数据参数部分可包含多字节。本节对各数据参数提供统一的描述。详细定义参见本文附录部分。附录部分同样指定当服务支持该服务时,支持数据参数或支持用户选择。
表17 -- 响应数据参数定义
定义 |
data-parameter#1 data-parameter#1的描述,如果请求支持子函数参数字节,则此参数是7-bit子函数参数值的回显,该子函数参数值包含第7bit位0的请求消息字节的子函数参数字节。子函数参数字节的suppressPosRspMsgIndicationBit不被回显。 |
data-parameter#m data-parameter#m的描述。 |
8.4支持的消极响应(NRC_)
本节定义服务实现的消极响应代码,表18、19记录了每种响应码发生的情况。在第 7.4 节中能够找到消极响应消息的定义。服务器用消极响应的A_PDU确定引发错误的条件。A.1 中列出能用到的消极响应码,以及在适用背景下的各服务描述的指定的消极响应码。详情参阅A.1。
表18 -- 支持的消极响应码
十六进制 | 描述 | Cvt | 助记符 |
xx |
NegativeResponseCode#1 1. condition#1 |
M | NRC_ |
: | : | U | NRC_ |
xx |
NegativeResponseCode#n 1. condition#1 |
U | NRC_ |
表18种的约定(Cvt)列解释如下:
表19 -- 子函数参数约定
类型 | 名称 | 描述 |
M | Mandatory(强制) | 如果服务受支持,服务器应支持该消极响应码。 |
U | User option(用户选项) | 消极响应码是否被支持要根据用户选项。 |
8.5 消息流示例
本节包含<Service Name>服务的消息流示例。所有示例均以消息级别显示(即不包含寻址信息)。
表20 -- 请求消息流示例
消息流向 | 客户端 → 服务器 | |||
消息类型 | 请求 | |||
A_Data byte | 描述(所有值用16进制表示) | 字节值 | 助记符 | |
#1 (A_PCI) | <Service Name>请求服务ID | xx | SIDRQ | |
#2 : #n |
sub-function/data-parameter#1 : data-parameter#m |
xx xx xx |
LEV_/DP_ DP_ DP_ |
表21 -- 积极响应消息流示例
消息流向 | 服务器 → 客户端 | |||
消息类型 | 响应 | |||
A_Data | 描述(所有值用16进制表示) | 字节值 | 助记符 | |
#1 (A_PCI) | <Service Name>响应服务ID | xx | SIDPR | |
#2 : #n |
data-parameter#1 : data-parameter#n-1 |
xx : xx |
DP_ : DP_ |
这里可以有多个表格适用于<Service Name>服务(例如每个子函数参数$Level对应一个服务)。
表22展示消极响应消息的消息流示例。
Table 22 -- 消极响应消息流示例
消息流向 | 服务器 → 客户端 | |||
消息类型 | 响应 | |||
A_Data | 描述(所有值用16进制表示) | 字节值 | 助记符 | |
#1 (A_PCI.NR_SI) | 消极响应服务ID | 7F | SIDRSIDNRQ | |
#2 (A_PCI.SI) | <Service Name> 请求服务ID | xx | SIDRQ | |
#3 | 响应码 | xx | NRC_ |