UDS(ISO14229 - 1)-0x10(Session Control,诊断会话控制)

UDS(ISO14229 - 1)-0x10(Session Control,诊断会话控制)

DiagnosticSessionControl (0x10) service服务描述

诊断会话控制服务用于在服务器中启用不同的诊断会话。UDS中所有的服务都是基于诊断会话控制执行的,这就意味着你只能在某一种诊断会话下面进行其他的诊断服务。诊断会话在服务器中启用一组特定的诊断服务和/或功能。
服务器中应始终只有一个诊断会话处于活动状态,服务器在通电时应始终启动默认诊断会话(default session-10 01)。如果未启动其他诊断会话,则只要服务器通电默认诊断会话就会运行。如果客户端请求了一个已经在运行的诊断会话,那么服务器应发送一条肯定的响应消息,其行为如图 1所示,该图描述了在会话之间转换时的服务器内部行为。会话之间的转换应当保持以下几个原则:

  1. 每当客户端请求新的诊断会话时,服务器应在服务器中激活新会话的计时之前发送 positive response 消息。
  2. 在某些情况下(暂时还不清楚,了解了再更新),可能需要在发送肯定响应之前进入新会话,同时保持发送响应的旧协议计时。
  3. 如果服务器无法启动请求的新诊断会话,则它应响发送negative response消息,并且继续当前会话。
  4. 在切换到任何非默认诊断会话(除了切换到编程会话)时,需保持默认会话的诊断功能也可用
  5. 当服务器从默认会话转换到除默认会话以外的任何其他会话时,则服务器应初始化诊断会话并且通过stopResponseOnEvent(0x86) 服务停止在服务器中配置的事件。

在这里插入图片描述
表 1定义了在默认会话和非默认会话(定时服务)下所支持的诊断服务。任何非默认会话都会绑定到诊断会话计时器(计时器超过一定的时间便会切回到默认会话),客户端必须保持活动状态。
注意表中的×表示支持,而不是不支持的意思
在这里插入图片描述

请求服务格式

在了解了10服务所表述的意思后,下一步就是学会怎样发一条10服务的诊断请求,在这之前我们必须学习一下请求服务的格式:
在这里插入图片描述
服务的请求采用的是十六进制的数来表示,首先第一个数字就是SID,即Service ID-10
第二个数字跟着10服务的子服务,这里常用的有0x01(默认会话)、0x02(编程会话)以及0x03(扩展会话)
在这里插入图片描述在这里插入图片描述

回复请求格式

Positive Response

这里需要知道的是一般positive response的SID = 请求服务ID + 40,那么在这里请求服务ID为10,那它的positive response的SID就是0x50。第二位仍然是前面讲到的子服务也就是0x01 或者 0x02等等。3到6位实际上是跟的一些服务器与客户端之间的一些传输时间参数,这里先了解就行,后面有时间会针对这个用一篇文章做一个具体的解释。
在这里插入图片描述在这里插入图片描述

Negative Response

Negative Response 的SID使用0x7F表示,这是由协议统一规定的,任何服务的负响应的SID都为0x7F。第二位则为请求服务的SID,在这里就是0x10(不同的服务对应不同的SID),第三位则是NRC(negative response codes),NRC会记录具体的出错原因,下表为10服务可能发生错误的原因:
在这里插入图片描述
这里用一个在CANoe里面例子来展示以下真实情况下的Negative response,在这里请求消息为10 02 01,实际上10服务的请求长度为2,这里多加了一位01,所以反馈的NRC为13,表示不正确的消息长度。
在这里插入图片描述
以上就是10服务的总结了,如果有什么遗漏的地方或者理解错误可以帮博主留下评论,欢迎大家指正!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值