• 【车载开发系列】UDS诊断---写入数据($0x2E)


    车载开发系列】UDS诊断—写入数据($0x2E)

    一.概念定义

    1. 根据ISO14119-1标准中所述,诊断服务2E主要用于Client向Server(ECU)通过DID的方式写入相关的数据。
    2. 2E服务作为诊断服务中的基础服务,可以简单理解为就是一个用于写入ECU数据的外部接口,可实时获取软件内部的相关的状态信息。
    3. WriteDataByIdentifier按标识符写数据
      该服务不含有sub-function的参数
    4. 服务器可以限制或禁止对某些 DID 值(由供应商/主车厂 定义为只读的 DID)的写访问以提高自身的安全性。
    5. 0x2C(DynamicallyDefineDataIdentifier)服务不得与此服务一起使用

    二.应用场景

    1. 在整车下线的过程中写入相关配置信息,如常见的VIN码;
    2. 清除NVM;
    3. 重置已写入到Flash中的数据;
    4. 其他需要写入内部相关参数的场合;
      内部测试时需要写入相关测试用状态和数据的场合

    三.报文格式

    1)请求报文

    dataIdentifler(数据标识符DID)是客户端请求消息,它的大小为2字节,例如:VIN码(0xF190,通常该数值用于表示车辆唯一标识的数据标识符)。一般常用标识符如下(具体根据整车厂的诊断需求文档来定):

    1. 版本信息相关
      软件版本号(数据内容包含如:软件版本,时间,修订次数等信息),硬件版本号以及FBL版本号。
    2. 内部数据相关
      车辆总里程,ECU供电电压,车辆VIN码(每辆车都有它唯一标识符,即VIN码)等。
    3. 诊断相关
      当前诊断会话(和诊断相关的,通过读取该DID信息,ECU返回当前诊断处于哪个会话模式)
    4. IO Control标识符
      属于0x2E服务,比如通过该服务控制远光灯打开,也需要DID用来标识下该功能。
    5. Routine Control标识符
      是0x31例行控制服务,例如在通过诊断FBL更新程序之前,需要检查下更新环境是否满足,如:车速是否低于2km/h,电源电压是否满足刷写要求等。
      在这里插入图片描述

    2)肯定响应

    在这里插入图片描述

    3)否定响应

    在这里插入图片描述

    HexDescription描述
    0x13incorrectMessageLengthOrInvalidFormat报文长度错误
    0x31requestOutOfRange请求超出范围
    0x33securityAccessDenied安全访问拒绝
    0x72generalProgrammingFailure一般编程错误

    四.特记事项

    1. 允许测试工具将数据写入由数据标识符指定的内部存储单元。
    2. 该服务请求报文只允许包含1个ECU支持的数据标识符。
  • 相关阅读:
    线上展厅搭建流程案例
    计算机竞赛 深度学习 机器视觉 车位识别车道线检测 - python opencv
    基于DPDK(x86平台)应用性能优化实践
    seata使用说明及AT模式异常回滚失败记录
    Leetcode刷题笔记——二分法
    Java中线程的状态
    php+vue3实现点选验证码
    【【萌新的FPGA学习之按键控制蜂鸣器之消抖介绍】】
    爱普生LQ1900KIIH复位方法
    Java项目:springboot医院管理系统
  • 原文地址:https://blog.csdn.net/Last_Impression/article/details/128079727