概念

参考
https://zhuanlan.zhihu.com/p/162710671
https://zhuanlan.zhihu.com/p/438099472

基本概念

分类

  • 诊断和通信控制管理功能相关的
  • 故障码传输功能类
  • 数据传输类的服务
  • 输入输出控制类功能
  • 例程控制服务
  • 上传、下载服务,从ECU读取/写入,刷写ECU

请求与响应

UDS请求和响应
诊断仪请求 ECU给响应
诊断仪:CANoe/VBA工具/手持诊断仪

读取工作电压:诊断仪发送(诊断)报文
ECU返回的结果就是诊断响应(报文)

请求/响应规定
报文格式:SID(服务ID)+对应服务中某一项的数据ID
肯定响应:(SID+40)+服务特有的响应
否定响应:7F+SID(否的是哪个请求)+否定响应码(失败的原因是什么)

否定响应码NRC:3个字节
7F(固定)
SID(否定的响应服务)
NRC:

  • 11 请求的服务ID不支持
    (数据ID项(不是SID)不被支持 <- 请求22 02 07中02 07代表某项数据的数据ID,不被当前ECU支持)
    诊断仪发送的请求就没有做进去,就是ECU不支持服务
  • 12 服务SID下的子功能不支持
  • 22 先决条件不满足,本来是在扩展会话下进行,但是在默认会话下执行请求,所以就是先决条件不满足
  • 31 参数数据溢出,
  • 33 不满足安全策略,想用2E服务写入一些数据,但是必须先解锁ECU,如果没有解锁那么就报33错误,必须先解锁
  • 35 秘钥不匹配,如果想用27服务解锁ECU时,ECU需要诊断仪提供一个秘钥,如果秘钥不匹配那么报错
  • 36 解锁次数上限
  • 78 不代表响应失败,值代表收到请求,但是没有马上返回响应,ECU会等一会再返回响应

寻址信息

物理寻址

功能寻址

协议格式???

750/758厂家自定义的吗???, 所有的UDS服务都在这里边吗???

UDS服务

10 服务

10服务- 诊断会话控制

诊断会话:
会话(聊天),会话分场合,
诊断仪-ECU之间通信,就是需要构建一个会话的场合
默认会话1001:读取数据、故障码、重置ECU,22、19、14、11
扩展会话1002:解锁ECU,控制输入输出,2E,2F,27
编程会话1003:刷写ECU的相关服务:34,35,36,38,对ECU进行编程,刷写固件程序

编程会话和扩展会话,为非默认会话
ECU上电默认就是默认会话

如果在跳转到非默认会话后,没有使用非默认会话下的服务,那么ECU就会跳转回默认会话下,一般推荐5s

进入编程会话必须先进入扩展会话

USD 服务
请求报文:10+会话子功能
响应报文:肯定响应(10+40)+会话子功能+会话超时时间(规定)+增强型会话超时时间(78响应码相关)

PDU: 协议数据单元,其实就是报文

==================================
UDS报文帧
单帧CAN传输UDS报文
多帧CAN传输UDS报文

单帧传输,一个CAN帧最多传输8个字节,如果UDS请求和发送报文要传输的字节小于8个字节,就使用单帧传输
单帧例子:https://www.bilibili.com/video/BV1DN4y1Q7Da/?spm_id_from=333.999.0.0&vd_source=7155082256127a432d5ed516a6423e20
请求:02 10 03 00 00 00 00 00 其中02中的0就表示单帧
响应:06 50 03 00 32 01 F4 00 其中06中的0表示单帧
多帧传输:- 见视频图片https://www.bilibili.com/video/BV1DN4y1Q7Da/?spm_id_from=333.999.0.0&vd_source=7155082256127a432d5ed516a6423e20
首帧 ->
<-流控帧(高速发送方,后续的多个连续的帧,最少间隔多少发送一个帧,最多发几个帧,能不能发连续帧)
连续帧 -> (发送方接收流控帧的指示,发送多个连续帧)

连续帧 ->(等待接收下一个流控帧的指示)
<- 流控帧

0:单帧
1:首帧
3:流控帧
2:连续帧

11-26 12:44