诊断服务.docx
《诊断服务.docx》由会员分享,可在线阅读,更多相关《诊断服务.docx(22页珍藏版)》请在冰点文库上搜索。
诊断服务
一、一元诊断服务概况
这一部分定义了应用到CAN的诊断服务,定义每一个可应用服务,可应用子功能和数据
表26对所有一元诊断化服务进行了总结,为了确保诊断服务能够在CAN上实现将限制可用服务的数量,并对这些服务根据特定的应用区域/诊断会话(默认回话,程序编制会话等等)
诊断服务名称
服务的ID值
(hex)
支持子功能?
限制各位上的代表含义
章节介绍
诊断和通信管理功能单元
诊断会话控制
10
是
是
电子控制单元复位
11
是
是
安全进入
27
是
是
通信控制
28
是
是
检测
3E
是
是
安全数据传输
84
----
N/A
设置DTC
85
是
是
当前回应
86
是
是
链路控制
87
是
是
数据传输功能单元
通过标识符读数据
22
-----------
N/A
通过地址读内存
23
------------
N/A
通过标识符读数据范围
24
-------------
N/A
通过标识符周期的读取数据
2A
-------------
N/A
动态定义数据标识符
2C
是
是
通过标识符写数据
2E
-------------
N/A
通过地址写内存
3D
----------------
N/A
传输储存数据的功能单元
读DTC的信息
19
是
是
清除诊断信息
14
---------
N/A
输入/输出控制功能单元
通过标识符控制输入输出
2F
-----------
N/A
远程执行程序功能单元
远程控制
31
是
是
上传下载功能单元
下载请求
34
----------
N/A
上传请求
35
-----------
N/A
传送数据
36
-------------
N/A
退出请求传送
37
-------------
N/A
表26
诊断会话控制单元
表27是为在CAN上能够实现这一服务而定义的子功能参数
十六进制(0位到6位)
描述
Cvt(汽车变速器)
助记
01
默认会话
U
DS
02
ECU程序会话
U
ECUPS
03
ECU扩展诊断会话
U
ECPDS
表27
表28定义了响应报文的数据参数的结构
字节记录
描述
Cvt
16进制值
助记
#1
#2
#3
#4
SessionParameterRecord[]#1=[
P2CAN-SERVER-MAX高字节
P2CAN-SERVER-MAX低字节
P2*CAN-SERVER-MAX高字节
P2*CAN-SERVER-MAX高字节]
M
M
M
M
00-FF
00-FF
00-FF
00-FF
SPREC_
P2CSMH
P2CSML
P2ECSMH
P2ECSML
表29是对会话参数记录内容的定义
参数
描述
占用字节数
分辨率
最小值
最大值
P2CAN-SERVER-MAX
诊断会话下支持默认P2CAN-SERVER-MAX的时间设置
2
1ms
0ms
65535ms
P2*CAN-SERVER-MAX
诊断会话下加强对P2CAN-SERVER-MAX时间设置的支持
2
10ms
0ms
655350ms
ECU复位服务(11hex)
表30定义了这一功能的参数
16进制的6到0位
描述
Cvt
助记
01
硬件复位
U
HR
02
开关开闭的复位
U
KOFFONR
03
软件复位
U
SR
04
能够快速切断电源
U
ERPSD
05
不能够快速切断电源
U
DRPSD
安全进入服务(27hex)
表31定义了实现这一功能的参数
16进制的6到0位
描述
cvt
助记
01
请求根据
U
RSD
02
发送key
U
SK
03,05,07-5F
响应根据
U
RSD
04,06,08-60
发送key
U
SK
通信控制服务(28hex)
表32定义了实现这一功能的参数
16进制的6到0位
描述
Cvt
助记
00
能接收能发送
U
ERXTX
01
能接收不能够发送
U
ERXDTX
02
不能接收能发送
U
DRXETX
03
不能接收不能发送
U
DRXTX
表33定义了数据参数——通信类型
位1-0
描述
Cvt
助记
01b
应用
U
APPL
10b
网络层管理
U
NWM
位1-0可以用于任何组合,每一位代表一种通信类型,多于一种个的通信类型可能被同时初始化
检测服务(3Ehex)
16进制的6到0位
描述
Cvt
助记
00
零子功能
M
ZSUBF
安全数据传输服务(84hex)
没有外加的要求或限制被定义
控制DTC设置的服务
功能参数如下定义
16进制的6到0位
描述
Cvt
助记
01
开
M
ON
02
关
M
OFF
当前响应服务
以下是对于完成该服务所提出的要求
a.多响应服务可以同时因为不同的请求去开始和停止诊断服务
b.当响应事件正在进行,服务器应该能够并发的处理诊断请求和相应的响应报文。
这将出现一对服务(请求,响应)的CAN标识符。
看图16.如果相同的诊断请求/响应CAN标识符被同时使用在诊断通信中,服务ToRESPondTO-response,对它的限制应该遵循:
1.当一个事件正在发生服务器应该忽略进来的诊断请求,直到完成服务ToRESPondTO-response都在进行
2.客户端发送一个诊断要求并得到了响应后,响应可根据可能的服务ToRESPondTO-response进行分类,期望的诊断响应已经发送
3.如果响应是一个服务ToRESPondTO-response,在服务ToRESPondTO-response已经完全接受后,客户端也将重复请求
4.如果响应有歧义,客户端将同时代表服务ToRESPondTO-response和诊断请求的响应。
除了错误响应代码BUSYREPEATREQUEST(21hex)
c.响应事件服务只有在诊断会话下才被允许
d.当ResponseOnEvent(86hex)服务执行,诊断会话的任何改变都将使服务终止,例如服务被设定在扩展诊断会话,如果将它变成默认会话服务将终止。
e.如果服务设定默认会话,则应遵从
1.如果事件类型参数的第六位被设定为0(不储存事件)当服务器断电,当复位或上电后服务器将不继续响应事件诊断服务
2.如果事件类型参数的第六位被设定为1(储存事件),在服务器周期性提断电的情况下,事件响应启动则重发服务ToRESPondTO-response
F.只有eventType=stopResponseOnEvent时,功能参数值responseRequired=”no”,当规定的事件被检测到,服务器将一直返回startResponseOnEvent或clearResponseOnEvent的响应
服务器将返回一个最终正确响应表明ResponseOnEvent(86hex)服务已经到达了最终的限定窗口,除非有以下情况发生
1.未设置ResponseOnEvent的类型
2.如果时间窗口被设计为
----在事件窗口关闭以前服务已将无效
----事件类型参数的第六位被设置为0(不存储),服务器掉电后再上电
h.当指定的事件被检测到,服务器将立刻给出适当的服务ToRESPondTO-response的报文,这一报文不会破坏任何诊断请求,或是程序中正在传送的响应
服务ToRESPondTO-response将被延时直到当前传输报文传输完成
I.ResponseOnEvent服务只适用于短暂事件和情况,每一个事件发生服务器将返回一个响应。
响应服务只有在事件发生初期执行一次,并且这一情况将持续一段时间。
由于事件类型已经定义,服务ToRESPondTO-response以高频率执行,并采取正确的方法去防止ResponseOnEvent服务返回,ResponseOnEvent服务之间的最小时间间隔是事件类型记录中的一部分。
以下对于一些参数的设定
第六位值
描述
Cvt
助记
0
不储存事件
M
DNSE
1
储存事件
U
SE
Bit(5-0)
描述
Cvt
助记
00
停止事件响应
U
STPROE
01
DTC状态改变
U
ONDTCS
02
定时器中断
U
OTI
03
数据标识符改变
U
OCOCID
04
报告活动事件
U
RAE
05
开始事件响应
U
STRTROE
06
清除事件响应
U
CLRROE
07
值的比较
M
OCOV
表38是对服务ToRespondToRecord.serviceid的数据参数定义
推荐服务(服务ToRespondTo)
请求服务标识
通过标识符读数据
22
读DTC的信息
19
例行控制
31
通过标识符对输入输出的控制
2F
链路控制服务
以下是对服务的子功能参数的定义
Bit6-0
描述
Cvt
助记
01
固定波特率查证
U
VBTWFBR
02
特殊波特率查证
U
VBTWSBR
03
传输波特率
U
TB
数据传输功能单元
通过标识符读取数据:
无另加的要求与限制
通过地址读内存:
无另加的要求与限制
通过标识符读数据范围:
无另加要求与限制
通过周期标识符读数据
定义了两种类型的响应报文
——类型一:
这一类型的响应报文映射到USDT报文,同其他的的USDT报文应用相同的CAN标识符。
一个单一周期数据标识符的USDT的报文不能够超过单帧的最大值,这意味着USDT响应报文的完成需要适应SingleFrameN-PDU
____类型二:
这一类型的响应报文映射到UUDT报文,与USDT报文使用不同的CAN报文,一个单一周期数据标识符的USDT的报文不能够超过单帧的最大值
以下是两种响应类型的映射来确定客户端与服务器的需求
报文类型
客户端请求需求
服务器响应需求
服务器的进一步限制
USDT
在诊断通信和每一阶段的传输使用相同的CAN标识符
无限制条件
对阶段传输只做出单帧响应
非阶段传输的新请求可以做出多帧响应
任何新进来的请求将优先解决,周期性传送将被推迟
服务器使用USDT报文在网络层处理周期响应,这意味着一个周期数据标识符使用一般地址最多可用5字节,使用扩展地址最多可用4字节
当接收到多阵请求报文,在多帧请求N-USDATAFF.ind或单帧请求N-USDATA.ind在应用层被处理后,列表中的任何周期传送的报文都将被推迟。
当服务处理完成,周期传送将被继续
USDT:
未公开的分段数据传输(网络层)包括每一段数据传输的协议控制信息
UUDT未公开的分段数据传输,单帧,不包括协议控制信息,最多数据字节数一般地址7字节,扩展地址8字节
报文类型
客户端请求需求
服务器响应需求
服务器的进一步限制
UUDT
每一阶段传输使用不同的标识符
无限制条件
对阶段传输只做出单帧响应
非阶段传输的新请求可以做出多帧响应
对规律的诊断请求通过网络层作周期性传输,
当接收到N-USDATA.con表明正确的响应传输完成,应用将开始一个独立调度程序来处理周期性传输
服务器中的程序机处理周期性传输使用单帧UUDT报文
对于一个UUDT报文么有必要包含协议控制信息(PCI)和服务标识符(SID)只包括周期标识符,一般地址最多可用7字节,使用扩展地址最多可用6字节
图18和19显示了周期响应的两种类型,图是在假设非默认会话下制成的
a.通过向网络层发送N-USData.req客户端的诊断应用开始ReadDataByPeriodicIdentifier(2Ahex)服务请求报文,网络层向服务器传送ReadDataByPeriodicIdentifier(2Ahex)服务。
请求报文可以是单帧也可以是多帧(根据请求报文中PeriodicDataIdentifier的数目)例子给出的报文是单帧报文
b.客户端通过N-USData.con来表示请求报文已经成功传送
c.服务器通过N-USData.ind来表示请求报文已经成功传送
d.图示是假设客户端需要服务器给出响应,服务器要传送ReadDataByPeriodicIdentifier正确响应报文来表明请求已被处理,周期报文将开始传送
e.服务器N-USData.con表明ReadDataByPeriodicIdentifier正确响应报文传送完成。
这时服务器启动S3server定时器,只要时间不超出,都将保持非默认会话。
f.服务器开始传送周期响应报文(单帧报文),每一个周期报文利用网络层协议和响应标识符。
因此,传输每一个周期报文是服务器向网络层发送N-USData.req,服务器当前没有其他的服务要被处理。
例子给出的是在假设服务器能够传送3个周期报文优先于下一个客户端发送的请求报文。
周期响应报文不会对S3server定时器有任何影响。
g.客户端向网络层发送N-USData.req以开始传送下一个请求报文。
网络层向服务器传送请求报文。
请求报文可以是单帧也可以是多帧。
例子假设请求报文是多帧
h.服务端通过N-USData.con来表示请求报文已经完成
i.服务器通过N-USData.FF.ind指明请求报文的开始(单帧是N-USData.ind)同时周期调度开始,为了处理持续接收到的请求报文,服务器将临时停止周期调度。
服务器处理任何诊断服务的任何时间,它将停止S3server定时器
j.服务器通过N-USData.ind来表示多帧请求报文已经完成。
周期报文传送的调度仍不可以
k.图示是假设客户端需要服务器的响应。
服务器将传送正确(或错误)响应报文通过给它的网络层传送N-USData.req
l.当S3client定时器时间超出,客户端传送功能性地址TesterPresent请求报文去重置服务器中的S3server定时器
m.服务器正在传送先前请求的多帧响应,所以,服务器在接收到TesterPresent请求报文后不作回应,因为S3server定时器没有重新开始
n.当诊断服务处理完成,服务器重启S3server定时器。
这意味着任何诊断服务,包括TesterPresent见重置S3server定时器。
一个诊断服务在开始接收请求报文(接收N-USData.FF.ind或N-USData.ind)到响应报文传送的完成(或请求所引起的任何动作的完成。
这包括包含响应代码为78hex的错误响应报文。
当处理完服务服务器将可以周期调度
o.服务器重新开始传输周期响应报文(单帧)。
每一个周期报文利用网络层协议和响应标识符。
因此,传输每一个周期报文是服务器向网络层发送N-USData.req,服务器当前没有其他的服务要被处理。
例子给出的是在假设服务器能够传送3个周期报文优先于下一个客户端发送的请求报文。
周期响应报文不会对S3server定时器有任何影响。
p.当客户端S3client定时器开始计数,这将引起TesterPresent请求报文的传送,这不需要响应,每一次S3client定时器都超时
q.TesterPresent请求报文通过网络层的N-USData.con来表明它的传送完成。
客户端将再次启动S3client定时器,这表示每一个S3client定时器周期都会发送TesterPresent请求报文
a.通过向网络层发送N-USData.req客户端的诊断应用开始ReadDataByPeriodicIdentifier(2Ahex)服务请求报文,网络层向服务器传送ReadDataByPeriodicIdentifier(2Ahex)服务。
请求报文可以是单帧也可以是多帧(根据请求报文中PeriodicDataIdentifier的数目)例子给出的报文是单帧报文
b.客户端通过N-USData.con来表示请求报文已经完成
c.服务器通过N-USData.ind来表示请求报文已经成功传送
d.图示是假设客户端需要服务器给出响应,服务器要传送ReadDataByPeriodicIdentifier正确响应报文来表明请求已被处理,周期报文将开始传送
e.服务器N-USData.con表明ReadDataByPeriodicIdentifier正确响应报文传送完成。
这时服务器启动S3server定时器,只要时间不超出,都将保持非默认会话。
f.服务器开始传送周期响应报文(单帧报文),每一个周期报文是一个UUDT报文,与其他的响应报文应用不同的标识符(USDT标识符)响应标识符。
因此,传输每一个周期报文是服务器发送N-UUData.req,每一次周期报文独立于其他当前正在处理的服务二独立传输。
这意味着当服务器处理其他的诊断服务要求时周期响应报文继续传输。
周期响应报文不会对S3server定时器有任何影响。
g.客户端向网络层发送N-USData.req以开始传送下一个请求报文。
网络层向服务器传送请求报文。
请求报文可以是单帧也可以是多帧。
例子假设请求报文是多帧
h.客户端端通过N-USData.con来表示请求报文已经完成
i.服务器通过N-USData.FF.ind指明请求报文的开始(单帧是N-USData.ind)同时周期调度开始,为了处理持续接收到的请求报文,服务器将不停止周期调度。
客户端要注意接收这些周期性响应报文,服务器处理任何诊断服务的任何时间,它将停止S3server定时器
j.服务器通过N-USData.ind来表示多帧请求报文已经完成。
周期报文传送的调度仍不可以
k.图示是假设客户端需要服务器的响应。
服务器将传送正确(或错误)响应报文通过给它的网络层传送N-USData.req。
例子假设的是多帧响应报文。
报文通过网络层传输,周期调度继续传送周期响应报文。
l.当S3client定时器时间超出,客户端传送功能性地址TesterPresent请求报文去重置服务器中的S3server定时器
m.服务器正在传送先前请求的多帧响应,所以,服务器在接收到TesterPresent请求报文后不作回应,因为S3server定时器没有重新开始
n.当诊断服务处理完成,服务器重启S3server定时器。
这意味着任何诊断服务,包括TesterPresent见重置S3server定时器。
一个诊断服务在开始接收请求报文(接收N-USData.FF.ind或N-USData.ind)到响应报文传送的完成(或请求所引起的任何动作的完成。
这包括包含响应代码为78hex的错误响应报文。
当处理完服务服务器将可以周期调度
o.当客户端S3client定时器开始计数,这将引起TesterPresent请求报文的传送,这不需要响应,每一次S3client定时器都超时
p.TesterPresent请求报文通过网络层的N-USData.con来表明它的传送完成。
客户端将再次启动S3client定时器,这表示每一个S3client定时器周期都会发送TesterPresent请求报文
TransmissionMode(传送模式)的定义
十六进制
描述
Cvt
助记
01
低速传送
U
SASR
02
中速传送
U
SAMR
03
高速传送
U
SAFR
04
停止传送
U
SS
动态定义数据标识符服务(2Chex)
当客户端动态定义周期数据标识符,如果动态定义的总长度超过适应单帧周期响应报文的最大长度,请求将会被拒绝已接收包含错误代码31hex的错误响应报文的形式
当多个动态定义数据标识符服务请求报文被用来配制成一个周期数据标识符,服务器为后来的周期数据标识符服务检测字节限度的最大值,然后服务器将离开周期数据标识符的定义因为它优先于请求这将导致超限
以下是为这一服务所做的参数
Hex(bit6-0)
描述
Cvt
助记
01
通过标识符定义
U
DBID
02
通过内存地址定义
U
DBMA
03
清楚动态定义数据标识符
U
CDDDI
通过标识符写数据:
无另加的要求和限制
通过内存地址写数据:
无另加的要求和限制
读DTC信息(19hex)服务DTC;故障码
以下是对其子功能才能数的定义
Hex(bit6-0)
描述
Crt
助记
01
通过MASK状态报告DTC号码
U
RNODTCBSM
02
通过MASK状态报告DTC
M
RDTCBSM
03
报告DTC快照识别
U
RDTCSSI
04
通过DTC号报告DTC快照记录
U
RDTCSSBDTC
05
通过记录号码报告DTC快照记录
U
RDTCSSBRN
06
通过DTC号报告DTC扩展数据
U
RDTCEDRBDN
07
通过严重MASK记录报告DTC号码
U
RNODTCBSMR
08
通过严重MSAK记录报告DTC
U
RDTCBSMR
09
报告DTC的严重信息
U
RSIODTC
0A
报告被支持的DTC
U
RSUPDTC
0B
报告第一次检测失败的DTC
U
RFTFDTC
0C
报告第一次被确认的DTC
U
RFCDTC
0D
报告最近检测失败最多的DTC
U
RMRVDTC
0E
报告最近确认最多的DTC
U
RMRCDTC
0F
通过Maskr状态报告反射内存的DTC
U
RMMDTCCBSM
10
通过DTC号报告反射内存的DTC扩展数据记录
U
RMMDEDRBDN
11
通过Mask状态报告反射内存的DTC的号码
U
RNOMMDTCBSM
12
通过Mask状态报告与OBD有关的发行的DTC的号码
C
RNOOBDDTCBSM
13
通过Mask状态报告与OBD有关的发行的DTC的号码
C
ROBDDTCBSM
下表是对DTC的状态位的定义
Bit
描述
Cvt
助记
发行未发行
0
检测失败
U
U
TF
1
这一监视周期检测失败
M
C1
TFTMC
2
悬而未决的DTC
M
U
PDTC
3
确认的DTC
M
M
CDTC
4
由于最终清除检测未完成
C2
C2
TNCSLC
5
由于最终清除检失败
C2
C2
TFSLC
6
这一监视周期检测未完成
M
M
TNCTMC
7
指示器警告
M
U
WIR
C1:
如果支持第二位则第一位被强制,如果第二位不被支持则第一位对于用户来说是可选的
C2:
第四位和第五位同时被支持
清除诊断信息服务(14hex)
数据参数
十六进制
描述
Cvt
助记
000000-FFFFF