UDS诊断服务详解
📘
30章完整版
🎯
01
UDS诊断协议概述
#背景
OSI七层模型与UDS · 功能寻址与物理寻址 · 诊断服务分类
02
UDS协议栈架构
#分层
应用层 · 会话层 · 网络层(ISO 15765-2) 职责
03
诊断会话控制 (0x10)
#会话切换
默认/编程/扩展会话 · 安全等级切换机制
04
ECU复位服务 (0x11)
#复位类型
硬复位 · 软复位 · 快速复位 · 钥匙下电复位
05
安全访问服务 (0x27)
#种子&密钥
种子与密钥机制 · 安全等级 · AES/CRC算法
06
通信控制服务 (0x28)
#报文控制
报文使能/禁止 · 网络管理报文 · 应用报文控制
07
测试仪在线服务 (0x3E)
#保持活跃
会话活跃机制 · 超时配置 · 项目实战坑点
08
读取数据服务 (0x22)
#DID
数据标识符定义 · 读取单个/多个DID实现
09
读取内存数据 (0x23)
#按地址
按地址读取内存 · 对齐要求 · 长度限制
10
读取故障码 (0x19)
#DTC
状态掩码 · 快照/扩展数据 · 严重程度过滤
11
写入数据服务 (0x2E)
#写入DID
写入流程 · 安全校验 · 写入条件判断
12
写入内存服务 (0x3D)
#Flash编程
按地址写入内存 · Flash编程实际应用
13
例程控制服务 (0x31)
#启动/停止
启动/停止/获取结果 · 擦除/校验/自学习
14
输入输出控制 (0x2F)
#引脚控制
物理引脚控制 · 模拟/数字输入输出实现
15
传输数据服务 (0x36)
#长数据
分包机制 · 块大小与间隔时间(STmin)
16
请求下载服务 (0x34)
#刷写握手
刷写前握手 · 内存地址与大小协商
17
请求上传服务 (0x35)
#读取ECU
从ECU读取数据握手 · 与下载对称性
18
文件传输服务 (0x3F)
#文件系统
文件操作 · 目录列表 · UDSonCAN扩展
19
链路控制服务 (0x87)
#波特率
波特率切换 · 唤醒模式 · 物理层参数调整
20
网络层协议 ISO 15765-2
#帧格式
单帧/多帧/流控制帧格式与解析
21
网络层时间参数
#N_As~N_Cr
N_As, N_Ar, N_Bs, N_Br, N_Cs, N_Cr 配置与影响
22
应用层定时参数
#P2/S3
P2_Server, P2*_Server, S3_Server 工程意义
23
诊断请求与响应格式
#编码规则
SID, Sub-function, DID, Data 编码规则
24
否定响应码 (NRC)
#0x10~0x78
完整NRC列表 · 常见排查思路
25
诊断栈集成与测试
#CANoe/Python
Vector CANoe, Peak CAN, Python CAN库实战
26
UDS刷写流程详解
#状态机
预编程 · 主编程 · 后编程 三个阶段
27
UDS在AUTOSAR实现
#DCM/DEM/FIM
DCM模块 · DEM模块 · FIM模块交互
28
新能源车UDS应用
#BMS/VCU
BMS, VCU, MCU, OBC诊断需求差异
29
UDS安全机制
#SecOC/TLS
SecOC, TLS, 加密通信在诊断中的应用趋势
30
UDS诊断实战项目
#模拟器
从零搭建UDS诊断模拟器 (Python实现)