UDS诊断系列之九 诊断仪在线(3E)服务

诊断仪在线服务是一个功能最简单的服务了,它的功能只有一个,就是告诉服务端,也就是ECU,诊断仪仍然还在连接着,服务端不要走神(切换状态)。

一、服务介绍

想象一个场景,我要用诊断仪给ECU发送一些数据,而填写数据的时候,我是没有操作诊断仪给ECU发送任何诊断请求的。而一般遵照ISO14229-2的要求,超过S3时间,ECU就会从非默认会话切换到默认会话。而我不希望发生这种情况,该怎么办呢?
方法就是在填写数据的时候,在S3时间之内发送诊断请求给ECU,那么每个服务都有对应的功能,如果随便选一个,就会执行其功能了。为了保持一个状态而执行一些不必要的服务,这是不太合理的,所以就有了诊断仪在线服务,它唯一的功能就是保持当前状态,不执行任何功能。

二、应用数据格式

1.请求报文

诊断仪在线的请求格式很简单,只有两个字节,第一个字节是它的服务ID,第二个字节是子功能00,是的,它有子功能。一个没有任何功能的服务为什么会有子功能呢?先卖个关子☺
在这里插入图片描述

2.响应报文

响应报文和请求报文一样简单,响应的服务ID和子功能,一共两个字节。
在这里插入图片描述

3.子功能

诊断仪在线服务只有一个子功能,就是00,没有特定的含义,它存在的意义只是为了发送请求的时候可以将抑制肯定响应位置1,也就是子功能字节从00变成80。这一位有什么用,在这儿再复习一下,将名字断句为“抑制”和“肯定响应”,含义就很明显了,抑制就是压抑、控制,抑制的内容就是肯定响应,也就是说这一位表示控制肯定响应不要回了(但除部分特殊情况,否定响应是需要回的,具体参照系列之二)。
控制肯定响应的回复有什么用呢,主要就是为了减少不必要的带宽占用,因为有些服务大部分时候都是由功能寻址发出来的请求,如果要求所有节点都进行响应,就会出现很多响应报文发出来占用总线带宽,而这些响应是没必要的。所以,ECU在接收到抑制肯定响应位是1的请求报文时,如果处理结果是肯定响应,就不需要回复了,这个位适合所有带子功能的服务。
回到诊断仪在线服务,它的使用场景就是告诉ECU不要改变状态,在子功能的抑制肯定响应位设置成1之后,如果ECU的服务执行没有问题,就不需要给出肯定响应,也就是没有消息就是最好的消息。
这里还有个事情需要注意的就是,功能寻址的诊断仪在线服务,如果抑制肯定响应位设置为1,那么要求ECU使用旁路来处理这个请求,而不应该影响其他正在执行的服务。最常用的场景就是执行刷写发送大量数据的过程中,需要保持其他ECU的状态,这时候就会周期发送诊断仪在线请求,如果ECU能够旁路处理,那么就不会影响正在刷写的ECU。

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChenglimK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值