尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

UDS诊断实战:手把手教你用CANoe配置0x35 RequestUpload服务(附报文解析)

UDS诊断实战:手把手教你用CANoe配置0x35 RequestUpload服务(附报文解析) UDS诊断实战手把手教你用CANoe配置0x35 RequestUpload服务附报文解析在汽车电子诊断领域UDSUnified Diagnostic Services协议是工程师必须掌握的核心技能之一。0x35 RequestUpload服务作为数据传输的关键起点其正确配置直接决定了后续数据上传的成败。本文将带您从零开始在CANoe环境中完整实现0x35服务的配置、发送与解析全流程。1. CANoe诊断环境搭建在开始配置0x35服务前需要确保CANoe诊断环境正确配置。打开CANoe后首先创建新的诊断配置1. File - New Configuration - CANoe Diagnostics 2. 在Hardware界面添加对应的CAN通道 3. 设置正确的波特率典型值为500kbps诊断数据库CDD/ODX文件的导入是关键步骤。右击Diagnostics标签选择Import Diagnostic Description加载您的诊断描述文件。常见问题排查数据库版本不匹配确保CDD文件与ECU版本对应通信参数错误检查CAN ID设置是否符合目标ECU要求服务支持验证在Diagnostic Console中发送0x10服务测试基础通信提示建议在正式操作前先用0x3E服务保持会话避免因超时导致操作中断2. 0x35服务参数深度解析0x35服务的核心在于四个关键参数的配置它们共同决定了数据传输的格式和范围参数名字节长度取值范围作用说明dataFormatIdentifier10x00-0xFF高位定义压缩方法低位定义加密方式addressAndLengthFormatIdentifier10x00-0xFF高4位定义memorySize长度低4位定义memoryAddress长度memoryAddress可变视ECU而定数据起始地址支持内存标识符扩展memorySize可变视ECU而定要上传的数据总大小典型配置示例# 假设需要上传从0x08001000开始的1024字节数据 dataFormatIdentifier 0x00 # 无压缩无加密 addressAndLengthFormatIdentifier 0x22 # 地址和长度均为2字节 memoryAddress [0x08, 0x00, 0x10, 0x00] # 小端格式 memorySize [0x00, 0x04, 0x00, 0x00] # 10240x04003. CANoe中的服务配置实战在CANoe Diagnostic ISO-TP配置界面中按步骤创建0x35服务请求右击Diagnostic Requests选择Add Request命名请求为RequestUpload_Example在Service下拉菜单中选择0x35 RequestUpload按以下顺序添加参数[Byte 0] Service ID: 0x35 (固定) [Byte 1] dataFormatIdentifier: 用户自定义 [Byte 2] addressAndLengthFormatIdentifier: 根据需求设置 [Byte 3..n] memoryAddress: 按格式输入 [Byte n1..m] memorySize: 按格式输入常见配置错误及解决方案NRC 0x13检查参数总长度是否匹配addressAndLengthFormatIdentifier的定义NRC 0x31确认memoryAddress是否在ECU允许范围内NRC 0x33先执行安全访问0x27服务注意某些ECU要求memoryAddress必须按特定对齐方式如4字节对齐4. 报文捕获与响应解析成功发送请求后在Trace窗口可以捕获到ECU的响应。典型的肯定响应格式为75 10 00 08 00 00各字节解析0x750x35服务的肯定响应SID0x10lengthFormatIdentifier高4位1表示maxNumberOfBlockLength为1字节0x00 08 00 00maxNumberOfBlockLength0x08002048字节否定响应案例分析7F 35 22表示收到NRC 0x22conditionsNotCorrect可能原因包括ECU未处于允许上传的状态已有激活的上传会话必要的预条件未满足在Measurement Setup中添加Diagnostics Filter可以方便地过滤和统计特定服务的通信情况。右击分析窗口选择Add Statistic View勾选Service Statistics即可查看各服务的成功率统计。5. 工程实践中的进阶技巧在实际项目中以下几个技巧可以显著提升工作效率自动化脚本实现# CAPL脚本示例自动配置并发送0x35请求 on key a { byte request[6]; request[0] 0x35; // SID request[1] 0x00; // dataFormatIdentifier request[2] 0x22; // addressAndLengthFormatIdentifier request[3] 0x08; // memoryAddress request[4] 0x00; request[5] 0x10; request[6] 0x00; diagSendRequest(request); }多会话管理策略使用0x10服务延长会话超时时间实现自动重试机制处理NRC 0x22建立服务状态机管理诊断流程性能优化建议合理设置maxNumberOfBlockLength平衡传输效率和内存占用对大数据传输采用分块机制实现CRC校验确保数据完整性在最近的一个车载ECU刷写项目中我们发现当memorySize超过256KB时ECU会返回NRC 0x70。解决方案是将大文件分割为多个256KB的块分别发起RequestUpload。这种分块处理不仅解决了限制问题还提高了传输可靠性——当某块传输失败时只需重传该块而非整个文件。
返回列表