uds(unified diagnostic service)
1. 简介
- 含义: 通常指ISO-14229-1定义在应用层的的诊断服务
- uds可以支持多种网络通信协议,常见包括ethernet, can/canfd, flexray, lin…
block-beta columns 5 a("uds"):5 b("eth") c("can/canfd") d("flexray") e("lin") f("...") classDef UDS fill:#A3D8FF class a UDS
- 诊断服务本质是一个轻量的通信协议
- 故障诊断数据的记录功能
- uds可以支持多种网络通信协议,常见包括ethernet, can/canfd, flexray, lin…
- 使用场景:
- 产线诊断:
- 22/2e等服务进行配置数据的刷写和读取验证
- 2f/31等服务进行下线测试
- 售后维修:
- ota升级软件版本
- 22/2e等服务更改配置数据和读取车辆信息
- 31等服务打开/关闭车辆功能
- 19/14服务读取故障信息诊断故障
- 产线诊断:
2. 功能
- 请求与回复:
- uds会先检查请求的服务状态,若不满足要求,则回复负响应。格式为7f sid nrc
- 常见的nrc有0x7f/7e(当前会话不支持),0x13(长度不对),0x33(未进行安全解锁),0x31(请求超范围),0x78(等待) …
- 正响应格式为 sid+0x40 + subfunction + data
- 部分服务如10,3e, 28, 85等支持响应抑制,子服务+0x80会抑制正响应
- 故障码(diagnostic trouble code)
- 四字节: 三字节编码加一个字节的状态位
- 状态位: bit0 test failed, bit1 test failed this monitoring cycle…
define description Bit 0 Test Failed Bit 1 Test Failed this monitoring cycle Bit 2 Pending DTC Bit 3 Confirmed DTC Bit 4 Test not completed since last clear Bit 5 Test Failed since last clear Bit 6 Test not completed this monitering cycle Bit 7 Warning indicator requested
- 10服务 诊断会话
- 1001(default session): uds启动处于该会话,在切入非默认会话超时自动切回默认会话
- 1002(programming session): 刷写会话,升级相关的功能会限制在该会话执行,02会话不能直接从01进入,需要从03进入
- 1003(extend session): 扩展会话,比默认会话范围大,通常2e等服务会在该会话支持
- 1060(production session): 产线会话,支持多种刷写配置和测试功能等服务,大多数需求由工厂定义
- 11服务 重启功能
- 01(硬重启): 通过设置芯片的reset针脚实现硬件意义上的重启
- 02(快速休眠): 设备进入休眠状态
- 03(软重启): 通过软件的reset功能进行重启
- 27服务 安全访问(securityAccess level = (n+1)/2)
- 奇数n作为seed request
- n+1作为key confirm
- 28服务 通信控制
- 00 开启接收和发送
- 01 开启接收和禁用发送
- 02 开启发送和禁用接收
- 03 禁用接收和发送
- 01 app报文,02 网络管理报文,03 所有报文
- 3E服务 会话维持
- 00子服务需要设备回复响应
- 80子服务会抑制设备的正响应
- 85服务 故障控制
- 01 开启故障
- 02 禁用故障
- 19服务 故障查询
- 01 和掩码匹配的dtc个数 19 01 xx
- 02 和掩码匹配的dtc 19 02 xx
- 04 对应dtc的snapshot 19 04 xx xx xx xx
- 06 对应dtc的扩展信息 19 06 xx xx xx xx
- 0a 设备所有支持的dtc 19 0a
- 14服务 故障清除
- 通常仅支持ff ff ff(清除全部故障)
- 22服务 数据读取
- 会有两个字节的ID来标识需要读取的lidar信息
- 2E服务 数据写入
- 会有两个字节的ID来标识需要写入的lidar信息
- 长度不能小于4
- 31服务 例程控制
- 01子服务,启动例程控制
- 02子服务,停止例程控制
- 03子服务,获取结果
- 34服务 传输请求(34 00 44 00 00 00 00 00 00 00 01)
- 00 表示压缩格式和加密格式(00 没有压缩没有加密)
- 44表示4字节的memory地址和4字节的文件大小
- 回复报文会带有36服务可以接收的单帧最大长度
- 36服务 数据传输
- 36 + n(数据序号) + data_n
- n从1开始,到达255以后重置为0
- 37服务 传输结束
- 结束传输数据
3. 实现
- cp autosar uds大多是c语言和基于CAN网络实现(DoCAN)
-
cp autosar架构如下图所示,其中uds实现基于协议栈的DCM和DEM模块,加上SWC(APP Layer)的功能代码组成
-
DCM(diagnostic communication manager)负责诊断通信,包括报文解析,服务判断和分发等与通信相关的功能
-
DEM(diagnostic event manager)负责故障诊断功能,实现包括DTC,扩展数据和快照,故障关联等故障相关的功能
-
SWC(software component): 类比ap的app,dcm的功能实现比如22/2e/31等和dem的故障条件设置和快照等信息会在这部分实现
-