跟我学UDS(ISO14229) ———— 0x87(LinkControl)

客户端请求控制通信波特率。LinkControl服务用于控制客户端和服务器之间的通信链接波特率,以交换诊断数据。 该服务可选地应用于那些数据链路层,这些数据链路层允许在活动诊断会话期间进行波特率转换。

在实现转换数据链路层的波特率过程中,将整个流程划分为两个步骤。主要是为了克服功能性通信,即必须同时在多个服务器中转换波特率。
步骤1:客户端验证是否可以执行转换,并通知服务器要使用的波特率。在客户端执行步骤2之前,要求每个服务器都应作出肯定响应。但此步骤并不执行波特率转换。
步骤2:客户端实际上请求转换波特率。仅在验证可以执行波特率转换(执行步骤#1)的情况下,才应执行此步骤。在进行功能通信的情况下,建议在转换波特率时(suppressPosRspMsgIndicationBit = TRUE),服务器不应有任何响应,因为一台服务器可能已经转换为新的波特率,而其他服务器仍需要传输它们响应消息(避免波特率不匹配)。

任何波特率转换应按以下方式进行:
⎯preventPosRspMsgIndicationBit = TRUE:成功发送/接收客户端请求消息后,该请求请求波特率转换。
⎯preventPosRspMsgIndicationBit = FALSE:成功发送/接收服务器肯定响应消息后,确认消息已成功接收,该请求请求波特率转换。

注意:此服务绑定到非defaultSession。 会话层计时器超时会将服务器转换回其正常运行速度。 如果执行ECUReset服务(十六进制),则同样适用。 过渡到另一个非defaultSession不会影响波特率。

诊断请求格式

当 sub-function参数等于verifyBaudrateTransitionWithFixedBaudrate(0x01)时,诊断请求具体格式如下:
跟我学UDS(ISO14229) ———— 0x87(LinkControl)_第1张图片
当 sub-function参数等于verifyBaudrateTransitionWithSpecificBaudrate(0x02)时,诊断请求具体格式如下:
跟我学UDS(ISO14229) ———— 0x87(LinkControl)_第2张图片
关于其他的sub-function的参数值以及说明,这边请看下表:

Hex Name Description
00 ISOSAEReserved ISO 保留,未定义
01 verifyBaudrateTransitionWithFixedBaudrate 验证是否可以执行到由baudrateIdentifier数据参数指定的预定义波特率的转换
02 verifyBaudrateTransitionWithSpecificBaudrate 验证是否可以执行到由linkBaudrateRecord数据参数指定的特定定义的波特率的转换
03 transitionBaudrate 将波特率转换为前面的验证消息中指定的波特率
04 ISOSAEReserved ISO保留,未定义
...
3F
40 vehicleManufacturerSpecific 主车场定义
...
5F
60 systemSupplierSpecific 供应商定义
...
7E
7F ISOSAEReserved ISO 保留,未定义

对于没有给出具体格式定义的sub-function,请参看主车场给到的需求进行分析。不可盲目套用在ISO中定义好的另外两个sub-function。

ISO定义的波特率参数如下:

Hex Name Description
00 ISOSAEReserved ISO 保留,未定义
01 PC9600Baud 9600 的标准PC波特率
02 PC19200Baud 19200 的标准PC波特率
03 PC38400Baud 38400 的标准PC波特率
04 PC57600Baud 57600 的标准PC波特率
05 PC115200Baud 115200 的标准PC波特率
06 ISOSAEReserved ISO 保留,未定义
...
0F
10 CAN125000Baud 125000 的标准CAN波特率
11 CAN250000Baud 250000 的标准CAN波特率
12 CAN500000Baud 500000 的标准CAN波特率
13 CAN1000000Baud 1000000 的标准CAN波特率
14 ISOSAEReserved ISO 保留,未定义
...
FF

正响应格式

具体的格式如下:
在这里插入图片描述

负响应NRC码

具体的NRC码如下:
跟我学UDS(ISO14229) ———— 0x87(LinkControl)_第3张图片
在这些NRC码中,需要格外注意0x31(requestOutOfRange)。因为这里的错误原因与其他服务的错误原因不太一样。

你可能感兴趣的:(ISO,14229,软件测试,黑盒测试)