【ISO14229_UDS_0x83服务详解】

0x83服务用于读取和设置通讯链路的时序参数,涉及诊断会话控制、读取扩展参数集合、设置默认值和当前激活参数等操作。请求报文包含子函数参数和可能的数据记录,而肯定应答报文则反馈参数值。服务支持的否定应答码包括子函数不支持、消息错误、条件不符和参数范围错误等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、0x83服务(访问时序参数服务)

  0x83服务(访问时序参数服务)用于读取和改变通讯链路的时序参数,当通讯链路激活期间。
  访问时序参数服务使用起来比较复杂,且取决于ECU能力及数据链路的拓扑结构。每个诊断会话仅支持一个扩展时序参数集合,因此只推荐采用物理寻址方法使用该服务,因为不同服务端的时序参数集合不同,不适合使用一对多型的功能寻址。
  推荐使用如下服务顺序:
——诊断会话控制服务,DiagnosticSessionControl (diagnosticSessionType) service;
——访问时序参数(读取扩展时序参数集合)服务,AccessTimingParameter (readExtendedTimingParameterSet) service;
——访问时序参数(设置时序参数至指定值)服务,AccessTimingParameter (setTimingParametersToGivenValues) service;
  如果要求ECU需要应答,那么在ECU对0x83服务做出肯定应答之后,ECU和客户端需要激活新的时序参数设置。如果不不允许ECU应答,那么在请求报文接收/发送之后,ECU和客户端需要激活新的时序参数设置。
  服务端和客户端在成功完成会话跳转时,即使是同样的会话切换,应该重新设置时序参数到默认值(比如,通过诊断会话控制服务(0x10),ECU重启服务(0x11),或者是会话超时)。
  访问时序参数服务提供了四种不同的访问时序参数的模式:
  1)读取扩展时序参数集合,readExtendedTimingParameterSet;
  2)设置时序参数至默认值,setTimingParametersToDefaultValues;
  3)读取当前激活的时序参数值,readCurrentlyActiveTimingParameters;
  4)设置时序参数至给定值,setTimingParametersToGivenValues;

2、请求报文格式

请求消息的格式定义:

字节序号参数值约定字节值
#1AccessTimingParameter Request SIDM0x83
#2sub-function = [ timingParameterAccessType ]M0x00 – 0xFF
#3
.
.
#n
TimingParameterRequestRecord [
               byte#1
               .
               .
               byte#m ]
M
0x00 – 0xFF
.
.
0x00 – 0xFF

  TimingParameterRequestRecord参数值只有当timingParameterAccessType = setTimingParametersToGivenValues时才会出现,TimingParameterRequestRecord内容及结构依赖于数据链路层,在ISO14229实施规范中有详细定义。

请求报文中子函数参数定义说明:
  访问时序参数服务采用子函数参数—timingParameterAccessType,来选择服务端具体的行为。timingParameterIdentifiers的使用及详解具体见下表(suppressPosRspMsgIndicationBit (bit 7)未描述):

Bits 6-0描述约定
0x00ISOSAEReserved
ISO保留
M
0x01readExtendedTimingParameterSet
  当访问时序参数服务子函数timingParameterAccessType = readExtendedTimingParameterSet时,服务端应该读取扩展时序参数集合,也就是服务端能够支持的一些参数。
  如果读取时序参数成功,服务端应该应答肯定应答参数。
如果读取时序参数失败,服务端应该应答带有NRC(否定应答码)的否定应答报文。
  当timingParameterAccessType = setTimingParametersToGivenValues时,该子函数被用于提供当前激活诊断会话的一组额外时序参数集合,即能够读取给定的时间参数值。
U
0x02setTimingParametersToDefaultValues
  当访问时序参数服务子函数timingParameterAccessType = setTimingParametersToDefaultValues时,服务端应该改变所有的时序参数值至默认值,并且在默认参数被应用之前,要求客户端能够先回答肯定应答报文(suppressPosRspMsgIndicationBit = FALSE,否则suppressPosRspMsgIndicationBit = TRUE,即不接收肯定应答报文,应该在请求报文被成功评估之后,默认参数再被应用)。
  如果时序参数因为某种原因无法被改变至默认参数值,服务端应该维持当前激活的时序参数值,并且发送带NRC(否定应答码)的否定应答。
  默认时序参数值的定义依靠于数据链路层的使用,并在ISO14229中有详细的定义。
U
0x03readCurrentlyActiveTimingParameters
  当访问时序参数服务子函数timingParameterAccessType = readCurrentlyActiveTimingParameters时,服务端应该读取当前使用的时序参数值。
  如果读取时序参数成功,服务端应该应答肯定应答参数。
  如果读取时序参数失败,服务端应该应答带有NRC(否定应答码)的否定应答报文。
U
0x04setTimingParametersToGivenValues
  当访问时序参数服务子函数timingParameterAccessType = setTimingParametersToGivenValues时,服务端应该检查在当前条件下时序参数是否可以被改变。
  如果条件有效,服务端应该执行必须的动作,来改变时间参数到给定值。在新的时序参数被应用之前,服务端能够应答肯定应答报文(suppressPosRspMsgIndicationBit = FALSE,否则suppressPosRspMsgIndicationBit = TRUE,即不接收肯定应答报文,应该在请求报文被成功评估之后,默认参数再被应用)。
  由于一些原因,时序参数值无法被改变,服务端应该维持当前激活的时序参数值,并且发送带NRC(否定应答码)的否定应答。
  通过子函数参数timingParameterAccessType = readExtendedTimingParameterSet读取到的最大最小值,不可能设置时序参数在最大最小值区间的任意一组值。服务端的时序参数值只能被设置为用timingParameterAccessType = readExtendedTimingParameterSet 读取到的确切时序参数值。这样做的请求,服务端将会拒绝。
U
0x05 - 0xFFISOSAEReserved
ISO保留
M
        

请求消息中数据参数定义说明:
该服务在请求报文中的数据参数定义如下表所示:

Definition
TimingParameterRequestRecord
通过子函数参数timingParameterAccessType = setTimingParametersToGivenValues,设置时序参数值为指定值时,该数据记录包含了设定的指定值。参数记录的内容和格式以在ISO14229-3中被详细定义。

3、肯定应答报文

肯定应答报文格式定义如下:

字节序号参数值约定字节值
#1AccessTimingParameter Request SIDM0xC3
#2timingParameterAccessTypeM0x00 – 0x7F
#3
.
.
#n
TimingParameterRequestRecord [
               byte#1
               .
               .
               byte#m ]
M
0x00 – 0xFF
.
.
0x00 – 0xFF

  TimingParameterResponseRecord值只有当子函数参数timingParameterAccessType = readExtendedTimingParameterSet 或者 readCurrentlyActiveTimingParameters时才会出现。TimingParameterResponseRecord的值在ISO14229中的数据链路层有详细的定义。

肯定应答报文数据参数定义:

Definition
timingParameterAccessType
请求报文中子函数参数中的 bits 6 - 0
TimingParameterResponseRecord
该参数记录的是通过子函数参数timingParameterAccessType = readExtendedTimingParameterSet 或者 readCurrentlyActiveTimingParameters读取的时序参数值。

4、支持的否定应答码(NRC_)

  对于访问时序参数服务,实施了如下否定应答码。当服务端在错误场景下,使用了该服务,则会答复对应的否定应答码。

NRC描述
0x12sub-functionNotSupported
表示子函数参数不被支持时,会发送该NRC
0x13incorrectMessageLengthOrInvalidFormat
表示消息长度不正确或格式无效时,会发送该NRC
0x22conditionsNotCorrect
表示使用访问时间参数的条件不满足时,会发送该NRC
0x31requestOutOfRange
表示TimingParameterRequestRecord包含了无效的参数值时,会发送该NRC

5、0x83服务(访问时序参数服务)使用案例

例1:设置时序参数为默认值,
  访问时序参数服务请求报文使用案例如下,该报文展示了如何设置服务端的时序参数为默认值,由Tester发送给ECU:

字节顺序Description字节值
#1AccessTimingParameter Request SID0x83
#2timingParameterAccessType =
             setTimingParametersToDefaultValues;
             suppressPosRspMsgIndicationBit = FALSE
0x02

  访问时序参数服务肯定应答报文见下表,由ECU答复Tester:

字节顺序Description字节值
#1AccessTimingParameter Response SID0xC3
#2timingParameterAccessType =
             setTimingParametersToDefaultValues
0x02

返回UDS诊断服务功能单元介绍目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值