UDS诊断学习

ISO 14229

UDS服务的协议数据单元(PDU)包含地址信息和诊断消息(数据字段)。数据字段由服务标识符组成(SID)和可选的数据参数组成。

UDS服务:

常用的NRC

  • 11:ServiceNotSupported/服务不支持,诊断仪发送的请求消息中服务标识符无法识别或不支持;
  • 12:SubFunctionNotSupported/不支持子服务,诊断仪发送的请求消息中子服务无法识别或不支持;
  • 13:IncorrectMessageLengthOrInvalidFormat/不正确的消息长度或无效的格式,请求消息长度与特定服务规定的长度不匹配或者是参数格式与特定服务规定的格式不匹配;
  • 21:BusyRepeatRequest/重复请求忙,表明ECU太忙而不能去执行请求。一般来说,在这种情况下,诊断仪应进行重复请求工作;
  • 22:conditionsNotCorrect/条件不正确,表明ECU的状态条件不允许支持该请求;
  • 24:requestSequenceError/请求序列错误,表明收到的是非预期的请求消息序列;
  • 25:noResponseFromSubnetComponent/子网节点无应答,表明ECU收到请求,但所请求的操作无法执行;
  • 26:failurePreventsExecutionOfRequestedAction/故障阻值请求工作执行,表明请求的动作因一故障原因而没有执行;
  • 31:requestOutOfRange/请求超出范围,请求消息包含一个超出允许范围的参数,或者是不支持的数据标识符/例程标识符的访问;
  • 33:securityAccessDenied/安全访问拒绝,诊断仪无法通过ECU的安全策略;
  • 35:invalidKey/密钥无效,诊断仪发送的密钥与ECU内存中的密钥不匹配;
  • 36:exceedNumberOfAttempts/超出尝试次数,诊断仪尝试获得安全访问失败次数超过了ECU安全策略允许的值;
  • 37:requiredTimeDelayNotExpired/所需时间延迟未到,在ECU所需的请求延迟时间过去之前诊断仪又执行了一次请求;
  • 70:uploadDownloadNotAccepted/不允许上传下载,表明试图向ECU内存上传/下载数据失败的原因是条件不允许;
  • 71:transferDataSuspended/数据传输暂停,表明由于错误导致数据传输操作的中止;
  • 72:generalProgrammingFailure/一般编程失败,表明在不可擦除的内存设备中进行擦除或编程时ECU检测到错误发生;
  • 73:wrongBlockSequenceCounter/错误的数据块序列计数器,ECU在数据块序列计数序列中检测到错误发生;
  • 78:requestCorrectlyReceived-ResponsePending/正确接收请求消息-等待响应 表明ECU正确接收到请求消息,但是将执行的动作未完成且ECU未准备好接收其它请求;
  • 7E:subFunctionNotSupportedInActiveSession/激活会话不支持该子服务,当前会话模式下ECU不支持请求的子服务;
  • 7F:serviceNotSupportedInActiveSession/激活会话不支持该服务,当前会话模式下ECU不支持请求的服务;
  • 92:voltageTooHigh/电压过高,当前电压值超过了编程允许的最大门限值;
  • 93:voltageTooLow/电压过低,当前电压值低于了编程允许的最小门限值;

Request:

诊断的request格式无非以下两种:

<SID> + <Sub-function> + <Parameter>

<SID> + <Parameter>

Bit7用来指示是否要抑制Positive Response。当Bit 7为1时,对该request的Positive Response要被抑制,即不发送Positive Response;当Bit7为0时,对该request的Positive Response不被抑制,正常发送。

Response:

Positive Response:

基本格式:

<SID+0x40> + <Sub-function> + <Parameter>

<SID+0x40> + <Parameter>

要注意,第一个字节是由SID和0x40的和构成。这里的Parameter项是optional的,具体要看协议规定。

比如,session control这个服务:

Send:02 10 01(02中的0代表网络层单帧SF,2代表数据域有2个字节;10是SID,02是子功能)

肯定响应:

Receive:02 50 01 (02同上,10+40表示对SID的肯定回复,01是sub-funtion)

否定响应:

03 7F 10 22 xx xx xx xx;(03同上,7F表示否定响应,10是SID,22是NRC)不论是物理寻址还是功能寻址,对于Positive Response来说都没有影响,只需要关注sub-function中的Bit 7 suppressPosRspMsgIndicationBit是0还是1,如果为0即false,那么正常发送即可,如果是1即true,那么就不发送response。如果根本没有subfunction呢,那么什么都不要考虑,肯定是要发送positive response的。

Negative Response:

基本格式:

<0x7F> + <SID> + <NRC>

看起来比较简单,格式比较固定,只要是Negative Response,第一字节就是0x7F,第二字节照抄原来的SID,第三个字节是错误响应码,指示具体错误响应的原因,这个NRC可以在下文中参看。

比如,session control 这个服务:

Send:10 05(现在sun-function变为05了,假定系统不支持这个sub-function)

Receive:7F 10 12(7F即指代错误响应,10为SID,12是NRC,查协议可知其指代sub-function not supported 这个错误)

通信模式:

有响应:

无响应:

UDS寻址模式

  • 物理寻址,点对点,一对一,可根据物理地址的不同进行访问,但只能访问单个节点,各个ECU也采用不同的CANID针对提问作出应答。
  • 功能寻址,广播模式,一对多,根据功能的不同进行访问,它可以访问多个ECU节点,各个ECU也采用不同的CANID针对提问作出应答。其SID对于标准帧来说,通常是7DF。

比如,通过诊断仪请求各控制器进入编程模式(10 02):

物理寻址:诊断仪请求EMS进入刷新模式7E0 10 02 ECU响应诊断仪进入刷新模式7E8 50 02

功能寻址:诊断仪请求所有控制器进入刷新模式7DF 10 02EMS应答诊断仪进入刷新模式7E8 50 02TCU应答诊断仪进入刷新模式7E9 50 02MMI应答诊断仪进入刷新模式7EA 50 02

安全访问:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值