Service description:
0x87服务(LinkControl,链接控制服务)用于控制客户端与服务端之间的通讯,以获得用于诊断 目的(如刷新)的总线带宽。此服务可选地应用于那些数据链路层,它提供了在非默认诊断会话模式重新配置其通信参数的能力(例如更改CAN的波特率或重新配置FlexRay周期设计)。
注意: 有关此服务在某个数据链路层上的应用和使用的详细信息,可以在各个数据链路层特定诊断服务实现UDSonXYZ“数据链路”规范中找到。
此服务用于将数据链路层转换到一种允许最大可能用于编程目的的较高诊断带宽的状态。为了克服功能通信的限制(例如,波特率必须同时在多个服务器中转换),转换过程分为两个步骤:
—— Step #1:客户端验证转换是否可行,并通知服务端使用的模式转换机制。在客户端执行Step #2之前,每个服务端都应该肯定应答(suppressPosRspMsgIndicationBit = FALSE)。
—— Step #2: 客户端请求切换模式(例如,更高的波特率)。只有在成功执行 Step #1时才会执行此步骤。在功能通信的情况下,建议在执行模式转换时不应该有任何来自服务端的响应(suppressPosRspMsgIndicationBit = TRUE),因为一个服务端可能已经转换到新模式,而其他服务器仍在进行中。
请求报文中的linkControlType参数与条件linkControlModeIdentifier/linkRecord参数一起提供了一种转换机制,可以使用预定义的模式转换参数,也可以使用特定定义的模式转换参数。
注意: 此服务绑定到非默认会话下。会话层计时器超时将把服务端转换回其正常的操作模式。这同样适用于执行ECUReset服务(0x11)的情况。一旦发生数据链接模式转换,任何附加的非默认会话的请求都不会导致重新转换到默认操作模式(例如,在编程会话期间)。
请求报文(linkControlType = verifyModeTransitionWithFixedParameter)的定义:
字节序号 | 参数值 | 约定 | 字节值 |
---|---|---|---|
#1 | LinkControl Request SID | M | 0x87 |
#2 | sub-function = [ linkControlType] | M | 0x01 |
#3 | linkControlModeIdentifier ] | M | 0x00 - 0xFF |
请求报文(linkControlType = verifyModeTransitionWithSpecificParameter)的定义:
字节序号 | 参数值 | 约定 | 字节值 |
---|---|---|---|
#1 | LinkControl Request SID | M | 0x87 |
#2 | sub-function = [ linkControlType] | M | 0x02 |
#3 #4 #5 |
linkControlModeIdentifier = [ modeParameterHighByte modeParameterMiddleByte modeParameterLowByte ] |
M | 0x00 - 0xFF |
请求报文(linkControlType = transitionMode)的定义:
字节序号 | 参数值 | 约定 | 字节值 |
---|---|---|---|
#1 | LinkControl Request SID | M | 0x87 |
#2 | sub-function = [ linkControlType] | M | 0x03 |
请求报文中子函数参数(linkControlType)用于描述执行的行为(suppressPosRspMsgIndicationBit (bit 7) 在下表中未出现):
Bit 6-0 | 描述 | 约定 |
---|---|---|
0x00 | ISOSAEReserved 该值由ISO文档保留 |
M |
0x01 | verifyModeTransitionWithFixedParameter 此参数用于验证是否可以执行带有预定义参数的转换,该参数由linkControlModeIdentifier数据参数指定。 |
M |
0x02 | verifyModeTransitionWithSpecificParameter 此参数用于验证是否可以转换到由linkRecord数据参数指定的特定参数(例如,特定的波特率)。 |
M |
0x03 | transitionMode 这个子功能参数要求服务端将数据链路转换到前面验证消息中所要求的模式。 |
M |
0x04 - 0x3F | ISOSAEReserved 该值由ISO文档保留 |
M |
0x40 - 0x5F | vehicleManufacturerSpecific 车辆制造商保留 |
M |
0x60 - 0x7E | systemSupplierSpecific 供应商保留 |
M |
0x7F | ISOSAEReserved 该值由ISO文档保留 |
M |
该服务在请求报文中的数据参数定义如下表所示:
定义 |
---|
linkControlModeIdentifier 此条件参数参考了要转换到固定的模式参数,详见下表。 |
linkRecord 该条件参数记录包含了一个指定的模式参数,以便子功能参数表明使用了一个特定的参数。链路记录的格式在单个数据链路特定诊断规范(UDSonXYZ)中指定了。 |
linkControlModeIdentifier值的定义,见下表:
字节值 | 描述 | 约定 |
---|---|---|
0x00 | ISOSAEReserved 该值由ISO文档保留 |
M |
0x01 | PC9600Baud 该值指定标准PC的波特率为9.6 KBaud。 |
U |
0x02 | PC19200Baud 该值指定标准PC的波特率为19.2 KBaud。 |
U |
0x03 | PC38400Baud 该值指定标准PC的波特率为38.4 KBaud。 |
U |
0x04 | PC57600Baud 该值指定标准PC的波特率为57.6 KBaud。 |
U |
0x05 | PC115200Baud 该值指定标准PC的波特率为115.2 KBaud。 |
U |
0x06 - 0x0F | ISOSAEReserved 该值由ISO文档保留 |
M |
0x10 | CAN125000Baud 该值指定CAN的波特率为125 KBaud。 |
U |
0x11 | CAN250000Baud 该值指定CAN的波特率为250 KBaud。 |
U |
0x12 | CAN500000Baud 该值指定CAN的波特率为500 KBaud。 |
U |
0x13 | CAN1000000Baud 该值指定CAN的波特率为1000 KBaud。 |
U |
0x14 - 0x1F | ISOSAEReserved 该值由ISO文档保留 |
M |
0x20 | ProgrammingSetup 该值指定网络的编程设置,可以根据车辆网络的要求进行参数化。 |
U |
0x21 - 0xFF | ISOSAEReserved 该值由ISO文档保留 |
M |
字节序号 | 参数名称 | 约定 | 字节值 |
---|---|---|---|
#1 | LinkControl Response SID | M | 0xC7 |
#2 | linkControlType | M | 0x00 - 0x7F |
Definition |
---|
linkControlType 请求报文中子函数参数(linkControlType)值中的bit 6 - 0。 |
本服务应执行以下否定响应代码。下表记录了每个应答代码发生的情况,如果服务器在错误场景使用了该服务,则应使用如下列出的否定响应。
NRC | 描述 |
---|---|
0x12 | sub-functionNotSupported 子函数参数不支持时,会发送该NRC |
0x13 | incorrectMessageLengthOrInvalidFormat 请求报文长度不正确时,会发送该NRC |
0x22 | conditionsNotCorrect 如果不符合要求的链路控制标准,会发送该NRC |
0x24 | conditionsNotCorrect 当客户端请求转换操作模式,而不需要预先的验证步骤,该步骤指定要转换到的模式,会发送该NRC |
0x31 | requestOutOfRange 如果linkControlModeIdentifier无效时,指定的modeParameter (linkRecord)无效时,会发送该NRC |
例1:Transition baudrate to fixed baudrate (PC baudrate 115200 kBit/s)
Step#1: 验证是否满足波特率切换的所有条件:
案例1步骤1的链接控制服务的请求报文使用如下,由客户端发向服务端(ECU):
字节顺序 | Description | 字节值 |
---|---|---|
#1 | LinkControl Request SID | 0x87 |
#2 | linkControlType = verifyModeTransitionWithFixedParameter, suppressPosRspMsgIndicationBit = FALSE |
0x01 |
#3 | linkControlModeIdentifier = PC115200Baud | 0x05 |
案例1步骤1中的链接控制服务的肯定应答报文见下表,由服务端(ECU)发往客户端:
字节顺序 | Description | 字节值 |
---|---|---|
#1 | LinkControl Request SID | 0xC7 |
#2 | linkControlType = verifyModeTransitionWithFixedParameter | 0x01 |
Step#2: 转换波特率:
案例1步骤2中链接控制服务的请求报文使用如下,由客户端发向服务端(ECU):
字节顺序 | Description | 字节值 |
---|---|---|
#1 | LinkControl Request SID | 0x87 |
#3 | linkControlType = transitionMode, suppressPosRspMsgIndicationBit = TRUE |
0x83 |
服务端没有响应。客户端和服务端必须转换通信链路的波特率。
例2:Transition baudrate to specific baudrate (150kBit/s)
Step#1: 验证是否满足波特率切换的所有条件:
案例2步骤1的链接控制服务的请求报文使用如下,由客户端发向服务端(ECU):
字节顺序 | Description | 字节值 |
---|---|---|
#1 | LinkControl Request SID | 0x87 |
#2 | linkControlType = verifyModeTransitionWithSpecificParameter, suppressPosRspMsgIndicationBit = FALSE |
0x02 |
#3 | linkRecord [ modeParameterHighByte ] (150kBit/s) | 0x02 |
#4 | linkRecord [modeParameterMiddleByte ] | 0x49 |
#5 | linkRecord [modeParameterLowByte ] | 0xF0 |
案例2步骤1中的链接控制服务的肯定应答报文见下表,由服务端(ECU)发往客户端:
字节顺序 | Description | 字节值 |
---|---|---|
#1 | LinkControl Request SID | 0xC7 |
#2 | linkControlType = verifyModeTransitionWithSpecificParameter | 0x02 |
Step#2: 转换波特率:
案例2步骤2中链接控制服务的请求报文使用如下,由客户端发向服务端(ECU):
字节顺序 | Description | 字节值 |
---|---|---|
#1 | LinkControl Request SID | 0x87 |
#3 | linkControlType = transitionMode, suppressPosRspMsgIndicationBit = TRUE |
0x83 |
服务端没有响应。客户端和服务端必须转换通信链路的波特率。
例3:Transition FlexRay cycle design to ‘Programming’
下面的示例反映了一个场景,其中FlexRay网络周期设计转换为优化的“编程”模式(例如,利用增强的动态段进行编程)。
Step#1: 验证调度程序切换是否满足所有条件:
案例3步骤1的链接控制服务的请求报文使用如下,由客户端发向服务端(ECU):
字节顺序 | Description | 字节值 |
---|---|---|
#1 | LinkControl Request SID | 0x87 |
#2 | linkControlType = verifyModeTransitionWithFixedParameter, suppressPosRspMsgIndicationBit = FALSE |
0x01 |
#3 | linkControlModeIdentifier = ProgrammingSetup | 0x20 |
案例3步骤1中的链接控制服务的肯定应答报文见下表,由服务端(ECU)发往客户端:
字节顺序 | Description | 字节值 |
---|---|---|
#1 | LinkControl Request SID | 0xC7 |
#2 | linkControlType = verifyModeTransitionWithFixedParameter | 0x01 |
Step#2: 转换编程调度器:
案例3步骤2中链接控制服务的请求报文使用如下,由客户端发向服务端(ECU):
字节顺序 | Description | 字节值 |
---|---|---|
#1 | LinkControl Request SID | 0x87 |
#3 | linkControlType = transitionMode, suppressPosRspMsgIndicationBit = TRUE |
0x83 |
服务端没有响应。客户端和服务端必须转换FlexRay通信链路的周期设计。
返回UDS诊断服务功能单元介绍目录