汽车UDS诊断之诊断设备在线服务(0x3E)深度剖析

TesterPresent就是诊断设备在线服务,它是最简单的一个诊断服务。

诊断设备在线
服务描述
TesterPresent

客户端向某服务端请求来确认此服务端是否在线,客户端有没有跟服务端连接上

目录

1.英文术语

2.缩写表

3.服务描述

4.请求消息定义 

4.1.请求消息子功能定义

4.2.请求消息数据参数定义

5.肯定响应消息定义

5.1.肯定响应消息数据参数定义

6.否定响应消息定义

6.1.否定响应码

7.服务使用示例

7.1.示例#1-诊断设备在线(抑制肯定响应位 = 假) 

7.1.1.步骤1:诊断设备在线请求

7.1.2.操作汇总

7.2.示例#2-诊断设备在线(抑制肯定响应位 = 真) 

7.2.1.步骤1:诊断设备在线请求

7.2.2.操作汇总


1.英文术语

英文术语翻译
TesterPresent诊断设备在线
TesterPresent Request SID

诊断设备在线请求SID

ISO14229定义此值为0x3E

sub-function子功能
zeroSubFunction零子功能
TesterPresent Response SID 

诊断设备在线响应SID

ISO14229定义此值为(0x3E+0x40)

2.缩写表

缩写解释
SID服务标识符
Cvt

约定值

M 强制的

C 有条件的

U 用户选项

NRC否定响应码

3.服务描述

诊断设备在线服务就是客户端用来确认无服务端是否在线的操作,利用此服务可实现客户端与服务端的一次“握手”
可以直接理解就是  客户端给服务端发诊断设备在线请求消息(问候一下“你好吗),这时候如果服务端接收到此请求消息,而且此请求消息都符合服务端的条件并且抑制肯定响应位为0,那么服务端就会向客户端回复肯定响应消息(回复一句“我很好)。

诊断设备在线服务还有一个特殊功能:如果服务端可以在非默认会话模式下,再去请求此服务时,服务端就可以保留在此非默认会话模式下,其实就是将诊断会话计时器S3_{server}中记录的还没有超过5000ms的时间记录清除,让他再去从0开始计时,这时候要想回到默认会话就得再等5000ms。

注:这个特殊功能其实并不是在我们这个服务里边做的,而是诊断会话服务中本身具有的一项特性,即有除诊断会话服务以外的其他诊断请求指令时,而且服务器当前处于非默认会话模式下,诊断会话计时器就是重新进行计时5000ms,这样我们去诊断设备在线请求时,也就是在这个“其他诊断请求指令”之内。

服务白话解读:“我叫你一声,你答应就完了”

4.请求消息定义 

请求消息定义
A_Data字节参数名称Cvt字节值助记符
#1诊断设备在线请求SIDM0x3ETP
#2子功能=[零子功能]M0x00/0x80LEV_ZSUBF 

注:子功能字节为0x80表示服务器不能去发肯定响应,即使服务器正常去响应请求,也不能发肯定响应消息。

4.1.请求消息子功能定义

该服务使用子功能参数选择(此字节的bit7表示抑制肯定响应位,下表并没有介绍此位)。

请求消息子功能定义
位6-0描述Cvt助记符
0x00

零子功能

该值表示此服务不支持除抑制肯定响应消息指示位之外的子功能值此服务其实是没有子功能字节的,但是因为它需要设置一个抑制肯定响应位(来控制服务器是否需要发出肯定响应消息),所以我们这个服务就设置一个子功能字节,而0-6bit位本身没有实际意义,ISO14229就用0x00来强制规定一下,其他值目前还是没有定义的。

MZSUBF
0x01-0x7F

ISOSAEReserved

该值为本文件为未来定义预留。

MISOSAERESRVD

4.2.请求消息数据参数定义

此服务中请求消息中没有数据参数。

5.肯定响应消息定义

肯定响应消息定义
A_Data字节参数名称Cvt字节值助记符
#1诊断设备在线响应SIDM0x7ETPPR
#2子功能 = [零子功能]M0x00 LEV_ZSUBF

5.1.肯定响应消息数据参数定义

肯定响应消息数据参数定义
定义

零子功能

此参数与请求消息的子功能参数的位6~0相同。

6.否定响应消息定义

否定响应消息定义
A_Data字节参数名称字节值Cvt助记符
#1否定响应SID0x7FMSIDNR
#2诊断设备在线请求SID0x3EMSIDRQ
#3否定响应码0xXXMNRC_

6.1.否定响应码

此服务支持的否定响应码
否定响应码描述助记符
0x12

子功能不支持

如果不支持子功能参数,则应发送此否定响应码。

SFNS
0x13

消息长度错误或格式无效

如果消息的长度错误,则应发送此否定响应码。

IMLOIF

7.服务使用示例

7.1.示例#1-诊断设备在线(抑制肯定响应位 = 假) 

7.1.1.步骤1:诊断设备在线请求

确认服务端有没有跟客户端连接上

诊断设备在线请求消息

消息方向

客户端→服务端

消息类型

请求

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

诊断设备在线请求SID

0x3E

TP

#2

子功能 = 零子功能

               抑制肯定响应位 = 假

0x00

ZSUBF

诊断设备在线响应消息

消息方向

服务端→客户端

消息类型

响应

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

诊断设备在线响应SID

0x7E

TPPR

#2

子功能 = 零子功能

0x00

ZSUBF

注意:响应报文是不会有抑制肯定响应位的。

7.1.2.操作汇总

步骤1:诊断设备在线请求

图解:

操作CAN报文实体
01234567
诊断设备在线请求0x020x3E0x00     客户端
肯定响应0x020x7E0x00     服务端

7.2.示例#2-诊断设备在线(抑制肯定响应位 = 真) 

7.2.1.步骤1:诊断设备在线请求

确认服务端有没有跟客户端连接上

诊断设备在线请求消息

消息方向

客户端→服务端

消息类型

请求

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

诊断设备在线请求SID

0x3E

TP

#2

子功能 = 零子功能

               抑制肯定响应位 = 真

0x80

ZSUBF

这时候服务端不会发送肯定响应(其实这时候也无法判定服务端是在线的,因为服务端都没有响应了,客户端无法确认服务端是否响应了自己的请求)。

7.2.2.操作汇总

步骤1:诊断设备在线请求

图解:

操作CAN报文实体
01234567
诊断设备在线请求0x020x3E0x80     客户端

到这里我们的0x3E服务基本学完了。

以上解释有没有解决大家的疑惑,如果还是觉得有疑惑的地方,欢迎大家踊跃提出,一起分享,共同进步!!!

有CSDN号的也可以帮忙点个关注,我会陆续更新其它UDS服务

  • 13
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

心骗小白话

和我一起成长吧

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

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

打赏作者

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

抵扣说明:

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

余额充值