8.11 读取数据(周期标识符) Read Data By Periodic Identifier (2Ah)
此服务允许诊断工具请求读取ECU中由一个或多个周期数据标识符(periodic Data Identifier)标识 的周期发送的数据记录值。
在初始响应报文之后,有两种方式来发送周期数据响应报文给诊断工具。本规范只使用其中的一种 方式。
8.11.1 报文格式
表 54 读取数据(周期标识符)服务的请求报文
Byte | Name | Cvt | Value (Hex) |
#1 | RequestServiceIdentifier | M | 2A |
#2 | TransmissionMode | M | 01/02/03/04 |
#3 | PeriodicDataIdentifier[]#1 | C | 00-FF |
… | … | … | … |
#m+2 | PeriodicDataIdentifier[]#m | U | 00-FF |
C:如果传输模式(transmission Mode)为send At Slow Rate,send At Medium Rate或send At Fast Rate,第一 个周期数据标识符在请求报文中强制使用。如果传输模式为stop Sending,可以为了终止所有调度中的周期 数据标识符,不使用周期数据标识符,诊断工具也可以明确的定义一个或多个要终止的周期数据标识符。 |
表 55 读取数据(周期标识符)服务的肯定响应—初始响应
Byte | Name | Cvt | Value (Hex) |
#1 | PositiveResponseServiceIdentifier | M | 6A |
表 56 读取数据(周期标识符)服务的肯定响应—后续响应
Byte | Name | Cvt | Value (Hex) |
#1 | PeriodicDataIdentifier | M | 00-FF |
#2 … #k+2 | DataRecord[]=[ data#1 … data#k] | M … U | 00-FF |
8.11.2 支持的否定响应码
表 57 读取数据(周期标识符)服务的否定响应码
Hex | Cvt | ErrorText |
13 | M | 报文长度错误 如果报文长度错误或者诊断工具超过了一次请求周期数据标识符允许的最大 个数,则发送此否定响应码。 |
22 | M | 条件不满足 如果ECU的操作条件不满足执行相应动作的要求, 发送此否定响应码。例如, 如 果诊断工具请求不同传输类型的周期数据标识符而ECU不支持同时进 行多种传输模式。 |
31 | M | 请求超出范围 如下情况时,发送此否定响应码: 1.设备不支持任意一个请求的周期数据标识符值; 2.设备在当前会话下不支持任意一个请求的周期数据标识符值; 2.设备不支持规定的传输模式。 |
8.11.3 参数定义
参数“传输模式” (transmissionMode)定义见表58。
表58读取数据(周期标识符)服务参数定义
Hex | Description | Cvt |
01 | Send At Slow Rate 此参数规定了ECU须在低速下发送要求的数据记录信息来响应请求报文。传输模 式参数“slow”规定了重复的速率,此值由h事业部建立并预定义在ECU中。 | U |
02 | Send At Medium Rate 此参数规定了ECU须在中速下发送要求的数据记录信息来响应请求报文。传输模 式参数“medium”规定了重复的速率,此值由h事业部建立并预定义在ECU中。 | U |
03 | Send At Fast Rate 此参数规定了ECU须在高速下发送要求的数据记录信息来响应请求报文。传输模 式参数“fast”规定了重复的速率,此值由h事业部建立并预定义在ECU中。 | U |
04 | stopSendingECU终止发送周期性/重复性的肯定响应报文。 仅在ECU支持至少一种其它传输模式时(低速率发送,中速率发送,高速率 发送),终止发送才要求被ECU支持。 | C |
注: 周期数据标识符为1字节数据, 其是F200h~F2FFh数据标识的低字节, 此范围是特地预留给该服务的。例 如:如果周期数据标识符为E3h,则实际的数据标识符为F2E3h。 |
8.11.4 执行规定
本规范规定整个肯定响应报文长度不会超过一帧报文所能容纳的长度。
由h事业部和系统供应商协定来限制ECU同时支持的周期数据标识符数量。超出最大数量的限制将 导致否定响应并且不发送请求中的任何一个周期标识符对应的数据。在一个请求报文中不允许出现重复 相同的周期标识符, 如果诊断工具违背了这一规则,ECU应该只接收其中的一个。
由周期数据标识符组成的数据标识符需被“通过数据标识符读数据服务(22h服务) ”支持。
8.12 动态定义数据标识符 Dynamically Define DataIdentifier (2Ch)
此服务允许诊断工具在ECU中动态定义一个数据标识符,此后该数据标识符可以被读取数据服务 22h或读取数据(周期标识符) 2Ah所读取。
此服务的目的是提供给诊断工具组合一个或多个数据为一个数据集的能力。
可以通过源数据标识符、内存地址或两种方式的组合来定义一组数据,本规范只定义了第一种方式。 动态定义数据标识符将会包含一个串联的数据参数定义。
8.12.1 报文格式
表 59 动态定义数据标识符服务的请求报文—定义标识符
Byte | Name | Cvt | Value (Hex) |
#1 | RequestServiceIdentifier | M | 2C |
#2 | Sub-Function=[ DefineByIdentifier] | M | 01 |
#3#4 | dynamicallyDefinedDataIdentifier[]=[ byte#1(MSB) byte#2(LSB)] | M | F2,F3 00-FF |
#5 #6 | sourceDataIdentifier[]#1=[ byte#1(MSB) byte#2(LSB)] | M | 00-FF |
#7 | positionInSourceDataRecord#1 | M | 01-FF |
#8 | memorySize#1 | M | 00-FF |
… | … | … | … |
#n-3 #n-2 | sourceDataIdentifier[]#m=[ byte#1(MSB) byte#2(LSB)] | U | 00-FF |
#n- 1 | positionInSourceDataRecord#m | U | 01-FF |
#n | memorySize#m | U | 00-FF |
表 60 动态定义数据标识符服务的请求报文—清除标识符
Byte | Name | Cvt | Value (Hex) |
#1 | RequestServiceIdentifier | M | 2C |
#2 | Sub-Function=[ clearDynamicallyDefinedDataIdentifier] | M | 03 |
#3 #4 | dynamicallyDefinedDataIdentifier[]=[ byte#1(MSB) byte#2(LSB)] | C | F2,F3 00-FF |
C:此参数的存在要求ECU清除包含byte#1和byte#2的动态定义数据标识符。如果参数不存 在则清除ECU中所有的动态定义数据标识符。 |
Byte | Name | Cvt | Value (Hex) |
#1 | PositiveResponseServiceIdentifier | M | 6C |
#2 | DefinitionType=[definitionType] | M | 01,03 |
#3 #4 | dynamicallyDefinedDataIdentifier[]=[ byte#1(MSB) byte#2(LSB)] | C | F2,F3 00-FF |
C:如果请求报文中包含参数“动态定义数据标识符”,此参数存在,否则不允许包含此参数。 |
8.12.2 支持的否定响应码
表 62 动态定义数据标识符服务的否定响应码
Hex | Cvt | ErrorText |
12 | M | 子功能不支持 如果子功能参数不支持,发送此否定响应码。 |
31 | M | 请求超出范围 如下情况时,发送此否定响应码: 1.请求报文中的任何数据标识符(动态定义数据标识符或任何源数据标识符)不 支持/无效; 2.“positionInSourceDataRecord”不正确(小于1或大于ECU允许的最大值); 3.请求报文中的某内存地址ECU不支持; 4.规定的内存大小无效; 5.组合的动态数据标识符中的数据数量超过ECU允许的最大值; |
13 | M | 报文长度错误 如果报文长度错误,发送此否定响应码。 |
22 | U | 条件不满足 如果ECU的操作条件不满足执行相应动作的要求,发送此否定响应码。 |
8.12.3 参数定义
表 63 动态定义数据标识符服务的子功能
Hex | Description | Cvt |
01 | defineByIdentifier 此值用来向ECU指明通过数据标识符定义动态数据标识符 | M |
03 | clearDynamicallyDefinedDataIdentifier 此值用来清除指定的动态数据标识符。注意: ECU应肯定响应诊断工具的清除请 求, 即使请求时指定的动态数据标识符不存在。然而, 指定动态数据标识符需要 在有效范围(F200h-F3FFh) | M |
8.12.4 执行规定
当以下任一情况发生时, 动态定义的标识符将失效:
a)接收到清除动态标识符的指令;
b) ECU硬件或者软件复位;
c)由于任何原因, ECU由非默认会话模式切换到默认会话模式。
为了避免错误并降低复杂度,新定义的标识符不允许嵌套参考另一个动态定义的标识符。如果指定 的动态标识符在请求时正在被周期性(按照请求的时间) 报告, 动态数据标识符应先被终止然后再被清 除。