UDS诊断协议规范与要求_uds诊断测试规范(1),大厂直通车

77 阅读39分钟

img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

展示案例: 1.请求消息流程案例 0x3E| 0x00 0x7E| 0x00 2.可定响应消息流程 0x3E| 0x80 无响应由服务器发送


##### 3.2.1.6. 0x83 - AccessTimingParameter



读取/修改活动通信时间参数,此功能取决于ECU能力支持和数据链路拓扑结构。每个争端会话只支持一个扩展时序参数集。因ECU支持的时序参数集不用,通常仅考虑用于物理寻址。 改服务提供四种模式: 1.扩展时间参数设置; 2.默认时间参数设置; 3.当前时间参数获取; 4.指定时间参数设置; 格式: 0x83| timingParameterAccessType(0x00 - 0xFF)| timingparameterrequestRecord...... timingParameterAccessType: 0x00:保留; 0x01:读取服务端扩展时序参数集(当前服务器支持值); 0x02:更改服务端所有定时参数为默认值; 0x03:读取当前使用的定时参数; 0x04:更改定时参数值; 0x05 - 0xFF:保留;

肯定响应: 0xC3| 0x00-0x7F| Data ..... 否定响应: 0x12:不支持子功能参数; 0x13:消息长度或格式错误; 0x22:条件不满足; 0x31:无效参数;

展示案例: 1. 时序参数设置为默认值 0x83| 0x02 0xC3|0x02


##### 3.2.1.7. 0x84 - SecuredDataTransmission



执行扩展数据链接安全性数据传输; 常见诊断服务数据传输方法: 1.不安全的数据传输模式 2.安全的数据传输模式 注:如下服务不可在安全模式下执行:a.0x86/0x2A/0x3E 格式: 0x84| Data.....

肯定响应: 0xC4| Data..... 否定响应: 0x13:数据长度错误; 0x38 - 0x4F:保留;


##### 3.2.1.8. 0x85 - ControlDTCSetting



控制(开关)ECU中DTC状态位存储; 格式: 0x85| Data..... DTCSettingType: 0x00:保留; 0x01:请先恢复更新诊断故障码状态位; 0x03-0x3F:保留; 0x40-0x5F:整车厂商自定义; 0x60-0x7E:系统供应商自定义; 0x7F:保留;

肯定响应: 0xC5| 0x00 - 0x7F 否定响应: 0x12:不支持子功能参数; 0x13:消息长度或格式错误; 0x22:条件不满足; 0x31:无效参数;

展示案例: 1.请求消息流程1.0 0x85| 0x02 0xC5| 0X02 2.请求消息流程2.0 0x85| 0x01 0xC5| 0x01


##### 3.2.1.9. 0x86 - ResponseOnEvent



命令ECU自主上报DTC及相关的环境数据,关闭也是使用该指令(一般用于开发前期)。 注: 1.该服务可以在任何会话中设置与激活; 2.当诊断服务正在执行任务时,将会被推迟执行; 3.多个事件发生一个事件正执行,多个事件处理应整车厂商定义事件; 4.当事件将被执行时,服务器应执行对应响应服务中包含的服务; 5.该服务启动后,服务器将会对客户端做出响应,知道服务结束; 6.移动非默认控制通信会话时,应先请求停止该服务。在返回默认状态下处于活动状态下的所有该服务应该被重新激活; 7.多个该服务可以与不同的需求同时启动和停止诊断服务; 8.设置该服务应适用如下内容: a.若eventtype第六位为0(不存储事件),服务断电时,应终止服务器进行复位; b..若eventtype第六位为1(存储事件),应根据服务器重新启动并继续执行; 9.抑制响应位打开后,客户端将用于控制该服务的停止、启动、清除; 10.若设置有限窗口时间过时,将有最终响应,若有限时间窗口结束前ROE被停止,则不发送最终响应; 11.为使得各响应之间更好的隔离,该服务更适合应用于瞬时状态时间。每次时间都有对应的响应。 格式: 0x86| eventType(0x00-0xFF)| eventWindowTime...| serviceToRespondToRecord ..... eventType(功能位6): 0x00 0x01 子功能参数: 0x00:停止服务端继续发送响应; 0x01:检测到当前任务匹配的新的DTC; 0x02:定时器中断; 0x03:将事件表示为新的内部数据记录; 0x04:在肯定响应中的所有事件都已经报告在服务端使用; 0x05:激活服务端; 0x06:清除服务端设置逻辑; 0x07:*** 0x08-0x1F:保留; 0x20-0x02F:整车厂商自定义; 0x30-0x3E:系统供应商自定义; 0x3F:保留;

肯定响应: 0xC6| eventType(0x00-0x7F)| numberOfIdentifiedEvents(0x00 - 0xFF ....)|响应附加参数| 服务请求响应所需附加服务参数 否定响应: 0x12:不支持子功能参数; 0x13:消息长度或格式错误; 0x22:条件不满足; 0x31:事件类型参数错误、事件窗口时间无效、DID不支持、有限事件窗口与存储状态为请求事件;

展示案例: 1.请求消息流程示例1.0 0x86| 0x01| 0x08| 0x01| 0x19 0x01 0x01 0xC6| 0x01| 0x00| 0x08| 0x01(testFailed)| 0x19 0x01 0x01 2.请求消息流程示例2.0 0x86| 0x05| 0x08 0xC6| 0x01| 0x00| 0x08 3.请求消息流程示例3.0 0x86| 0x05| 0x08 0xC6| 0x01| 0x00| 0x08 readDTCInformation: 更多查看P128


##### 3.2.1.10. 0x87 - LinkControl



调整ECU数据链路层和物理层状态,如控制通信波特率(带宽),调整步骤:1.客户端验证是否可以执行转换;2.客户发送执行请求; (1) 判断ECU是否支持将要调整的目标波特率; (2) 让ECU数据链路层和物理层转到目标波特率的通信状态; 格式: 0x87| linkControlType(0x01)| linkControlModeldentifier(0x00 - 0xFF) 子功能参数: 0x00:保留; 0x01:验证是否可以执行指定预定义参数的转换; 0x02:验证是否可以执行特定定义参数转换; 0x03:请求服务端将数据链路转换为当前验证信息中的请求模式; 0x04-0x3F:保留; 0x40-0x5F:整车厂商自定义; 0x60-0x7E:系统供应商自定义; 0x7F:保留;

肯定响应:
	0xC7| 0x00 - 0x7F
f否定响应:
	0x12:不支持子功能参数;
	0x13:消息长度或格式错误;
	0x22:条件不满足;
	0x24:
	0x31:参数错误;
	

展示案例: 1.请求格式:0x87| 0x02| Data.... 2.请求格式:0x87| 0x03 3.设置波特率 0x87| 0x01| 0x05(115200kBit/s) 0xC7| 0x01 转换波特率 0x87| 0x83 无响应应答 4.转换波特率为特定值 0x87| 0x02| 0x02 0x49 0xF0 (249F0 - 150000) 0xC7| 0x02 转换波特率 0x87| 0x83 无响应应答 5.验证是否满足转换条件 0x87| 0x01| 0x20 0xC7| 0x01 转换到编程调度器 0x87| 0x83


#### 3.2.2 数据传输单元



##### 3.2.2.1. 0x22 - ReadDataByIdentifier



客户端请求包含一个或者多个字节的诊断数据,用于表示服务器维护记录。数据的格式由整车制造商或系统供应商定义。 格式: 0x22| dataIdentifier(0x00-0xFF...) |......

肯定响应: 0x62| dataIdentifier(0x00-0xFF...)|....... 否定响应: 0x13:消息长度或格式错误; 0x14: 0x22:条件不满足; 0x31:参数错误; 0x33:安全校验未通过;

展示案例: 1.读取VIN码数据 0x22| 0xF1 0x90 0x62| 0xF1 0x90| 0x57 0x30 0x4C 0x30 0x30 0x30 0x30 0x34 0x33 0x4D 0x42 0x35 0x34 0x31 0x33 0x32 0x36 2.读取多个数据(0x010A和0x0110) 0x22| 0x01 0x0A| 0x01 0x10 0x62| 0x01 0x0A| 0xA6 * * * * * * * * * | 0X01(MSB) 0X10(LSB)| 0x8C


##### 3.2.2.2. 0x23 - ReadMemoryByAddress



允许客户通过提供起始地址和读取内存大小向服务器请求内存数据。 格式: 0x23| addressAndLengthFormatIdentifier(0x00-0xFF)| 起始地址参数| 内存大小参数 肯定响应: 0x63| dataRecord (0x00=0xFF)....... 否定响应: 0x13:消息长度或格式错误; 0x22:条件不满足; 0x31:参数错误; 0x33:服务器被锁定;

展示案例: 1.4字节寻址(从0x2048 1392地址开始读取4字节) 0x23| 0x24| 0x20 0x48 0x13 0x92| 0x01 0x03 0x63| 0x00 ..... 0x8C(260个字节长度) 2.2字节寻址(从0x4813地址开始读取2字节) 0x23| 0x12| 0x48 0x13 0x05 0x63| 0x43 0x2A 0x07 0x2A 0x55 3.3字节寻址 0x23| 0x23| 0x20 0x48 0x13| 0x00 0x03 0x63| 0x00 0x01 0x8C


##### 3.2.2.3. 0x24 - ReadScalingDataByIdentifier



请求数据信息。 格式: 0x24| Data .....

肯定响应: 0x64| dataidentifier(0x00 MSB|0x00 LSB)|scalingByte(0x00)| scalingByteExtension(0X00 ....)| scalingByte(0x00)| scalingByteExtension(0X00 ....) 否定响应: 0x13:参数长度错误; 0x22:服务不支持; 0x31:请求不支持; 0x33:安全检查未通过;

展示案例: 1.请求消息流程示例 0x24| 0xF1 0x90 0x64| 0xF1 0x90 | 0x6F | 0X62 2.请求车速(0x0105) 0x24| 0x01 0x05 0x64| 0x01 0x05| 0x01(无符号数字,1byte)| 0x95(公式,5byte)| 0x00(公式标识符) 0xE0 0x4B(c0=7510p-2p) 0X00 0X1E(c1=3010p0p)| 0xA1(单位,1byte)| 0x30(unit id,km/h) 车速=(0.75*x + 30)km/h 3.请求数据(0x0967)示例数据定义见表171 0x24| 0x09 0x67 0x64| 0x09 0x67| 0x22(2个数据字节)| 0x03 0x43


![在这里插入图片描述](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/09c5e5ce832e4596b7238c55d2447191~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=RbMfSsg5uFwI4id7R59LpsY83Ck%3D)


##### 3.2.2.4. 0x2A - ReadDataByPeriodicIdentifier



请求服务端周期性传输数据。 格式: 0x2A| TransmissionMode(0x0000xFF)| Data ..... 肯定响应: 0x6A 定期数据响应:periodicDataIdentifier (0x00-0xFF)| Data..... 否定响应: 0x13:参数长度错误; 0x22:条件不满足; 0x31:请求不支持; 0x33:安全检查未通过;

展示案例: 1.读取0xE3 0x24数据 E3包含冷却液温度、节气门温度、发动机转速、车速传感器;0x24包含电池正极电压、气管绝对值眼里、质量控制流量、车辆气压、负载值; 发出数据传输请求: 0x2A| 0x02| 0xE3| 0x24 0x6A 0xE3| 0xA6 0x66 0x07 0x50 0x00 0x24| 0x8C 0x20 0x1A 0x63 0x4A 发出数据停止传输请求: 0x2A| 0x04| 0xE3 0x6A


##### 3.2.2.5. 0x2C - DynamicallyDefineDataIdentifier



通过内存地址和内存大小,在服务端定义一个数据标识。 格式: 1.difinitionType=defineByIdentifier(0x01) 0x2C| 0x01| difinitionType(0x00)| dynamicDefinedDataIdentifier(MSB(0xF2/0xF3) LSB(0x00))| sourceDataIdentifier(MSB(0X00) LSB(0X00))| positioninSourceDataRecord(0x00)| mqmorySize(0x00)| ..... 2.difinitionType=defineByMemoryAddress(0x02) 0x2C| 0x02| dynamicDefinedDataIdentifier(MSB(0xF2/0xF3) LSB(0x00))| addressAndLengthFormatIdentifier(0x00)| memoryAddress...| memorySize ....| .... 3.difinitionType=clearDynamicallyDefinedDataIdentifier(0x03) 0x2C| 0X03| dynamicDefinedDataIdentifier(MSB(0xF2/0xF3) LSB(0x00)) 4. difinitionType=0X00保留 5. 0x00-0x7F保留 肯定响应: 0x6C| difinitionType(0x00-0x7F)| dynamicDefinedDataIdentifier(MSB(0xF2/0xF3) LSB(0x00)) 否定响应: 0x12:子功能不支持; 0x13:消息长度或格式错误; 0x22:条件不满足; 0x31:参数错误; 0x33:安全校验不通过;

展示案例:见UDS翻译文档P213 1.生成单个数据信息(2字节标识符) 0x22| 0xF3 0x01 0x6C| 0xF3 0x01| 0x4C 0X36 0X4D 0x49 0x21 0x00 0x17 2.生成多个数据信息的组合数据块 0x2C| 0x01| 0xF3 0x02| 0x01 0x0A| 0x02(发动机冷却液温度)| 0x01| 0x01 0x0A| 0x04(发动机转速)| 0x02| 0x01 0x0A| 0x0B(怠速空气控制)| 0x01| 0x05 0x0B| 0x02(爆震传感器)| 0x01 0x6C| 0x01| 0xF3 0X02 -----请求消息 0x22| 0xF3 0x02 0X6C| 0xF3 0x02| 0xA6 0x07 0x50 0x82 0x91 3.发送依据内存地址构建的数据标识符的数据请求(动态数据请求) 0x2C| 0x02 0xF3 0x02| 0x14| 0x21 0x09(发动机温度)| 0x19 0x69| 0x01| 0x21 0x09 0x19 0x6B(发动机转速)| 0x02| 0x013 0x10 0x19 0x95(爆震传感器)| 0x01 0x6C| 0x02| 0xF3 0x02 ------请求消息 0x22| 0xF3 0x02 0X6C| 0xF3 0x02| 0xA6 0x07 0x50 0x91 4.动态构建数据标识符,并依据标识符请求服务端定期发送数据 生成包含发动机冷却液0x010A、发动机转速0x010A、保准传感器0x050B的动态数据标识符0xF2E7。 0x2C| 0x01| 0xF2 0xE7| 0x01 0x0A| 0x02(发动机冷却温度)| 0x01 0x0A| 0x04(发动机转速)| 0x02| 0x05 0x0B| 0x02(震爆传感器)| 0x01 0x6C| 0x01| 0xF2 0xE7 ------请求消息 0x2A| 0x04| 0xE7 0x6A| 0xE7| 0xA6 0x07 0x50 0x91 0xE7| 0xA6 0x07 0x55 0x98(周期性发送数据) 5.删除动态定义的数据标识符 请求清除0xF303消息 0x2C| 0x03| 0xF3 0x03 0x6C| 0x03| 0xF3 0x03 6.使用两种定义类型建立一个动态数据标识符 a.发动机油温和环境空气温度2字节DID引用; b.内存地址引用的发动机冷却液温度和发动机转速; c.发动机油位由2字节DID引用; 0x2c| 0x01| 0xF3 0x01| 0x12 0x34(发动机油温)| 0x01 0x02| 0x56 0x78(环境空气温度)| 0x01| 0x01 0x6C| 0x01| 0xF3 0x01 ----- 0x2C| 0x02| 0xF3 0x01| 0x14| 0x21 0x09 0x19 0x69| 0x01(发动机冷却液温度)| 0x21 0x09 0x19 0x6B(发动机转速)| 0x02 0x6C| 0x02| 0xF3 0x01 ------ 0x2C| 0x01| 0xF3 0x01| 0x9A 0xBC(发动机油位)| 0x01| 0x04 0x6C| 0x01| 0xF3 0x01 ------- 0x22| 0xF3 0x01 0x62| 0xF3 0x01| 0x4C 0x36 0x4D 0xA6 0x07 0x50 0x49 0x21 0x00 0x17 ------ 0x2C| 0x03| 0xF3 0x01 0x6C| 0x03| 0xF3 0x01


##### 3.2.2.6. 0x2E - WriteDataByIdentifier



客户端向指定内存地址写入数据,如配置信息VIM码写入、清除非易失性存储器数据、重置参数、设置选项等。 格式: 0x2E| 0x00 0x00(地址)| 0x00 0x00(数据)......

肯定响应: 0x6E| 0x00 0x00(响应的2字节数据) 否定响应: 0x13 0x22 0x31 0x72:写入内存错误; 展示按理: 0x2E| 0xF1 0x90| 00x57 0x30 0x4C 0x30 0x30 0x30 0x30 0x34 0x33 0x4D 0x42 0x35 0x34 0x31 0x33 0x32 0x36 0x6E| 0xF1 0x90


##### 3.2.2.7. 0x3D - WriteMemoryByAddress



允许客户端在一个或多个连续内存位置将信息写入服务器,如清除存储器数据、修改校验值。 格式: 0x3D| addressAndLengthFormatIdenfitier(0x00)| 0x00 0x00.......| 0x00 0x00 ......| 0x00 0x00 肯定响应: 0x7D| 0x00| 0x00 0x00 ......| 0x00 0x00 ..... 否定响应: 0x13:消息长度或格式错误; 0x22:条件不满足; 0x31:参数错误; 0x33:安全校验不通过; 0x72:擦除或刷写内存时发生错误; 展示案例: 1.将数据字节写入服务内存(2字节寻址) 0x3D| 0x12| 0x20 0x48(memoryAddress)| 0x02(memorySize)| 0x00 0x8C 0x7D| 0x12| 0x20 0x48| 0x02 2.将数据字节写入服务内存(3字节寻址) 0x3D| 0X13| 0x20 0x48 0x13| 0x03| 0x00 0x01 0x8C 0x7D| 0x13| 0x20 0x48 0x13| 0x03 3.’将数据字节写入服务内存(4字节寻址) 0x3D| 0x14| 0x20 0x48 0x13 0x13 0x09| 0x05| 0x00 0x01 0x8C 0x09 0xAF 0x7D| 0x14| 0x20 0x48 0x13 0x09| 0x05


#### 3.2.3 存储数据传输单元



##### 3.2.3.1.0x14 - ClearDiagnoticInformation



允许客户端清除服务端诊断信息。 可通过该服务重置/清除DTC信息,如DTC状态信息、DTC快照数据、DTC扩展数据、DTC其他相关数据。 格式: 0x14| 0x00 0x00 0x00 注意:0XFF 0XFF 0XFF时,代表所有种类的DTC

肯定响应: 0x54 否定响应: 0x13:消息长度或格式错误; 0x22:条件错误; 0x31:参数错误; 0x72:擦除或刷写内存时发生错误;

展示案例: 1.请求排放系统信息 0x14| 0xFF 0xFF 0x33 0x54


##### 3.2.3.2.0x19 - ReadDTCInformatioon



允许客户端向服务端请求各种诊断信息。 检索与客户定义的DTC数量、DTC列表、特定功能DTX列表、永久性状态的DTC、冻结帧、DTC计数器信息、DTC发生器、DTC老化计数器、OBD特定计数器(如无故障模式下的架势循环次数)、最后发生时间、测试失败计数器、未完成计数器、客户定义严重性的DTC列表、客户定义严重性的DTC信息、服务器支持DTC状态、失败的第一个DTC、最近失败的DTC、确认的第一个DTC、最近确认的DTC、DTC镜像内存中与客户定义DTC状态码匹配的DTC了列表、DTC镜像内存中检索DTC掩码和DTC扩展数据、DTC镜像内存中检索DTC数量、检索特定信息的DTC数据或相关信息、检索目前为“待定”、“已确认”的DTC类型、从DTC内存中检索客户定义的关联数据、从客户定义DTC存储器中检索匹配列表、用户定义DTC镜像内存中检索DTC列表和扩展数据、DTC内存中检索快照数据确定请求所属类型等 0x01 - 检索与客户端定义状态掩码相匹配的DTC数量 0x02 - 检索与客户端定义状态掩码相匹配的DTC列表 0x03 - 检索DTC快照记录标识 0x04 - 检索客户端定义DTC掩码的快照数据 0x05 - 检索客户端定义记录号的DTC存储数据 0x06 - 检索客户端定的DTC掩码和扩展数据记录号的扩展数据 0x07 - 检索与客户端定义严重性质掩码匹配的DTC数量 0x08 - 检索与客户机定义严重性掩码记录匹配信息的严重性和功能单元信息列表 0x09 - 检索客户定义的DTC严重程度和功能单元信息 0x0A - 检索服务器支持的DTC状态 0x0C - 检索第一个/最近的确认DTC 0x0D - 检索第一个/最近的故障DTC 0x0E - 要求ECU上报最近的一条被置为confirm的DTC 0x0F - 从服务端DTC镜像内存中检索与客户端定义状态掩码匹配的DTC列表 0x10 - 检索镜像内存DCE中客户定义的DTC掩码和DTC扩展数据记录编号的数据记录 0x11 - 检索与客户端定义状态掩码匹配的镜像内存DTC数量 0x12 - 检索与客户端定义状态掩码匹配的“唯一与排放相关的OBD”的DTC数量 0x13 - 检索与客户端定义状态掩码匹配的“唯一与排放相关的OBD”的DTC列表 0x14 - 检索“预先故障” 的DTC状态列表 0x15 - 检索具有“永久性DTC”状态的DTC列表 0x16 - 检索客户端定义DTC扩展数据记录号的DTC扩展数据 0x17 - 检索服务端用户定义DTC存储区中与客户端定义DTC状态掩码匹配的DTC列表 0x18 - 检索服务端用户定义存储器中的DTC快照数据(用于客户端定义的DTC掩码和DTC快照编号) 0x19 - 检索与客户端用户定义内存的DTC扩展数据(用于客户机定义DTC掩码和客户机定义DCE中的DTC扩展数据编号) 0x1A-0x41:保留 0x42 - 检索与客户端定义状态掩码匹配的WWH-OBD DTC列表 0x43-0x54:保留 0x55 - 检索具有“永久性”状态的WWH-OBD DTC列表 0x56-0x7F:保留

格式: 1.请求定义子功能信息 0x19| 0x01 0x02 0x0F 0x11 0x12 0x13| DTCStatusMask(0x00) 2.请求定义子功能信息 0x19| 0x03 0x04| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCSnapshotRecordNumber(0x00) 3.请求DTC存储数据 0x19| 0x05| DTCSnapshotRecordNumber(0x00) 4.请求DTC扩展数据 0x19| 0x06 0x10| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCExtDataRecordNumber(0x00) 5.请求DTC严重性掩码和信息 0x19| 0x07 0x08| DTCSeverityMask(0x00) DTCStatusMask(0x00) 6.请求DTC严重信息 0x19| 0x09| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00) 7.请求特定DTC信息 0x19| 0x0A 0x0B 0x0C 0x0D 0x0E 0x14 0x15 8.按记录编号请求DTC信息 0x19| 0x16| DTCExtDataRecordNumber(0x00) 9.通过任务状态请求用户定义内存DTC信息 0x19| 0x17| DTCStatusMask(0x00) MemorySelection(0x00) 10.通过DTC编号请求用户定义内存快照数据 0x19| 0x18| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCSnapshotRecordNumber(0x00)| MemorySelection(0x00) 11.通过DTC编号请求用户定义内存扩展数据 0x19| 0x19| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCExtDataRecordNumber(0x00)| MemorySelection(0x00) 12.通过任务记录请求WWHOBD信息 0x19| 0x42| FunctionalGroupIdentifier(0x00)| DTCStatusMask(0x00) DTCSeverityMask(0x00) 13.请求WWHOBD参数状态 0x19| 0x55| FunctionalGroupIdentifier(0x00)

肯定响应: 0x59| 0x01 0x07 0x11 0x12| DTCStatusAvailabilityMask(0x00)| 0x00 0x01 0x02 0x03 0x04| DTCCount(0x00 0x00) 0x59| 0x02 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x13 0x15| DTCStatusAvailabilityMask(0x00)|Data ..... 0x59| 0x03| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCSnapshotRecordNumber(0x00)| ... |...|... 0x59| 0x04| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00)| DTCSnapshotRecordNumber(0x00)| DTCSnapshotRecordNumberOfIdentifiers(0x00)| ...| ...| ... 0x59| 0x05| DTCStoredDataRecordNumber(0x00)| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00) statusOfDTC(0x00)| DTCStoredDataRecordNumberOfIdentifiers(0x00)| ...| ... 0x59| 0x06 0x10| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00) statusOfDTC(0x00)| DTCExtDataRecordNumber(0x00)| ...| ... 0x59| 0x08 0x09| DTCStatusAvailabilityMask(0x00)| ... 0x59| 0x14| ... 0x59| 0x16| DTCExtDataRecordNumber(0x00)| ...| ... 0x59| 0x17| MemorySelection(0x00)| DTCStatusAvailabilityMask(0x00)| ...| ... 0x59| 0x18| MemorySelection(0x00)| 0x00 0x00 x00 0x00| DTCSnapshotRecordNumber(0x00)| DTCSnapshotRecordNumberOfIdentifiers(0x00)| ...| ... 0x59| 0x19| MemorySelection(0x00)| DTCHighByte(0x00) DTCMiddleByte(0x00) DTCLowByte(0x00) statusOfDTC(0x00)| DTCExtDataRecordNumber(0x00)| ...| ... 0x59| 0x42| FunctionalGroupIdentifier(0x00)| DTCStatusAvailabilityMask(0x00)| DTCSeverityAvailabilityMask(0x00)| DTCFormatIdentifier(0x04 0x02)| ... 0x59| 0x55| FunctionalGroupIdentifier(0x00)| DTCStatusAvailabilityMask(0x00)| DTCFormatIdentifier(0x04 0x02)| ... 否定响应: 0x12:不支持此功能参数; 0x13:消息长度错误; 0x31:无法识别的DTXMaskRecord、无效的counter/DTCSnapshotRecordNumber、无法识别的FunctionalGroupIdentifier、无法识别的MemorySelection。

注意:
1.DTCStatusMask/DTCSeverityMask解析与定义
	7~5:DTC严重性信息(可选)
		7:是否立即检查,0-否,1-是
		6:是否在下次停车时检查车辆故障,0-否,1-是
		5:是否将故障请求仅维护,0-无维护,1-有维护
	4~0:DTC类别信息
2.DTCFormatIdentifier
	0x00 - 标识参考ISO 15031-6中定义的DTC格式
	0x01 - 依据DTCAndStatusRecord标识服务器报告DTC格式
	0x02 - 标识参考SAE J1939-73中定义的DTC格式
	0x03 - 标识参考SAE J11992-4中定义的DTC格式
	0x04 -标识参考ISO 27145-2中定义的DTC格式
	0x05-0xFF:保留
3.FunctionalGroupIdentifier
	作用:
		a.用于请求UDS版本号来识别协议
		b.请求车辆DTC状态信息
		c.清除车辆DTC信息
	定义:
		0x00 - 0x32:保留
		0x33:排放系统组
		0x34-0xCF:ISO/SAE保留使用
		0xD0:安全系统组
		0xD1-0xDF:立法只读组
		0xE0-0xFD:ISO/SAE保留使用
		0xFE:VOBD系统
		0xFF:所有系统组
	

展示案例: 1.离合位置传感器-对地短路0x080511,DTC为0x24; 2.混合电池温度传感-电路电压高于阈值0x0A9B17,DTC为0x26; 3.间歇电路0x25221F,0x2F; 4.请求状态掩码为0x08的数据信息 0x19| 0x01| 0x08 0x59| 0x01| 0x2F| 0x01| 0x00 0x01 5.请求与状态掩码匹配的信息 0x19| 0x02| 0x84 0x59| 0x02| 0x7F| 0x0A 0x9B 0x17 0x24| 0x08 0x05 0x11 0x2F --- 0x19| 0x02| 0x01 0x59| 0x02| 0x7F --- 6.返回三个快照数据 0x19| 0x03 0x59| 0x03| 0x12 0x34 0x56 0x01| 0x12 0x34 0x56 0x02| 0x7 0x9A 0xBC 0x01 发动机冷却液温度:0xA6 0x66 0x07 0x50 0x20 7.返回一个快照数据 0x19| 0x04 | 0x12 0x34 0x56| 0x02 0x59| 0x04| 0x12 0x34 0x56 0x24| 0x02| 0x01| 0x47 0x11| 0xA6 0x66 0x07 0x50 0x20 8.返回DTC存储数据 0x19| 0x05| 0x02 0x59| 0x05| 0x02| 0x12 0x34 0x56 0x24 0x01| 0x47 0x11| 0xA6 0x66 0x07 0x50 0x20 9.返回DTC扩展数据编号 预热循环计数器-0x05->0x17 DTC故障检测计数器-0x10->0x79 0x19| 0x06|0x12 0x34 0x56| 0xFF 0x59| 0x06| 0x12 0x34 0x56 0x24| 0x05| 0x17| 0x10| 0x79 10.报告所有的DTC扩展记录 0x19| 0x06| 0x12 0x34 0x56| 0xFF 0x59| 0x06| 0x12 0x34 0x56 0x24| 0x05| 0x17| 0x10| 0x79 11.P314(其他案例此处暂时省略)


#### 3.2.4 输入输出控制单元



##### 3.2.4.1.0x2F - InputOutputControlByIdentifier



用于简单的输入替换输出控制。 格式: 0x2F| 0x00 0x00| 0x00 0x00 ...| 0x00 0x00 ... 肯定响应: 0x6F| 0x00 0x00| 0x00 0x00 ... 否定响应: 0x13:长度错误; 0x22:条件不满足; 0x31:参数无效; 0x33:安全检查未通过;

注意: InputOutputControlParameter 0x00:结束控制 0x01:将所有输入信号、内部参数、输出信号重置为默认状态 0x02:请求冻结输入信号的当前状态 0x03:将RAM中dataIdentifier引用的输入信号、内部参数、受控输出信号调整为控制选项中包含的值 0x04-0xFF:保留

展示案例: 1.读取进气门位置的当前状态、数据 查询状态: 0x22| 0x9B 0x00(进气门位置) 0x62| 0x9B 0x00| 0x0A(当前位置为10%) --- 获取数据: 0x2F| 0x9B 0x00| 0x03 0x3C(调整到60%) 0X6F| 0x9B 0x00| 0x03 0x0C(当前位置12%) --- 查询状态: 0x22| 0x8B 0x00 0x62| 0x9B 0x00| 0x3C(60->60%,说明当前位置已到了60%) --- 查询数据: 0x2F| 0x9B 0x00| 0x00 0X6F| 0x9B 0x00| 0x00| 0x3A(接收请求,58->58%,说明当前位置已到了58%) --- 0x2F| 0x9B 0x00| 0x02 0X6F| 0x9B 0x00| 0x02 0x32(50%) 2.仅控制IAC Pintle位置 0x2F| 0x01 0x55| 0x03 0x07 0x0XX 0xXX 0xYZ 0xXX| 0x80 0x6F| 0x01 0x55| 0x03 0x07 0x02 0xEE 0x12 0x59 --- 仅控制RPM 0x2F| 0x01 0x55| 0x03 0xXX 0x03 0xE8 0xYZ 0xXX| 0x40 0x6F| 0x01 0x55| 0x03 0x09 0x03 0xB6 0x12 0x59 --- 控制踏板位置A和EGR占空比 0x2F| 0x01 0x55| 0x03 0xXX 0xXX 0xXX 0x3Z 0x72| 0x28 0x6F| 0x01 0x55| 0x03 0x07 0x03 0x52 0x32 0x69 --- 将所有参数的控制返回给ECU 0x2F| 0x01 0x55| 0x00| 0xFF 0x6F| 0x01 0x55| 0x00 0x09 0x03 0x52 0x12 0x59


#### 3.2.4 常规功能单元



##### 3.2.4.1.0x31 - RoutineControl



执行已定义的步骤序列并获取任何相关结果。如内存擦除、重置、学习自适应数据、运行内检、覆盖正常服务器控制决策、控制服务值随时间变化等。 常见步骤:1.开始一个历程;2.停止一个历程;3.请求例行结果; 格式: 0x31| routineControlType(0x00)| routineIdentifier(0x00 0x00)| routineControlOptionRecord(0x00 ... 0x00) 子函数参数: 0x00:保留; 0x01:启动指定历程; 0x02:停止指定历程; 0x03:返回指定历程结果值; 0x04-0x7F:保留;

肯定响应: 0x71| 0x00-0x7F| 0x00 0x00| 0x00| 0x00 0x00 ... 否定响应: 0x12:子功能不支持; 0x13:消息长度错误; 0x22:未按标准进行请求; 0x24:未在正常状态下执行操作; 0x31:参数错误; 0x33:安全访问被拒绝; 0x72:在访问服务段内部存储器例程时检测到错误;

注意: routineIdentifier - RID 0x0000-0x00FF:保留; 0x0100-0x01FF:保留,用于表示行驶记录仪测试结果; 0x0200-0xDFFF:保留,整车制造商自定义; 0xE000-0xE1FF:保留,用于用于表示OBD/EOBD; 0xE200:启动先前选择的点火回路的部署; 0xE201-0xE2FF:保留,用于安全系统实现; 0xE300-0xEFFF:保留; 0xF000-0xFEFF:保留,系统供应商自定义; 0xFF00:用于启动服务端内存擦除; 0xFF01:用于检查服务端内存编程依赖; 0xFF02:用于擦除服务端镜像内存DTC; 0xFF03-0xFFFF:保留;

展示案例: 1.基于测试条件:已点火、未打开发动机、速度为0进行测试,进行启动测试。 0x31| 0x01| 0x02 0x01 0x71| 0x01| 0x02 0x01 0x32 2.基于测试条件:已点火、未打开发动机、速度为0进行测试,进行停止测试。 0x31| 0x02| 0x02 0x01 0x71| 0x02| 0x02 0x01 0x30 3.检测结果值 0x31| 0x03| 0x02 0x01 0x71| 0x03| 0x02 0x01 0x30 0x33 ... 0x8F 4.在规定条件下,启动例程 0x31| 0x01| 0x02 0x02| 0x06 0x01 0x71| 0x01|0x02 0x02| 0x32 0x33 ....0x8F


#### 3.2.5 下载上传功能单元



##### 3.2.5.1.0x34 - RequestDownload



格式: 0x34| dataFormatIdentifier(0x00)| addressAndLengthFormatIdentifier(0x00)| 0x00 0x00 ...| 0x00 0x00 ... 肯定响应: 0x74| LengthFormatIdentifier(0x00)| 0x00 0x00 ... 否定响应: 0x13:消息长度错误; 0x22:服务端与客户端之间的数据大小不匹配; 0x31:参数无效; 0x33:安全校验失败; 0x70:下载到服务端内存失败;


##### 3.2.5.2.0x35 - RequestUpload



从服务端到客户端进行数据传输。 格式: 0x35| dataFormIdentifier(0x00)| addressAndLengthFormatIdentifier(0x00)| 0x00 ... 0x00| 0x00 ... 0x00

肯定响应: 0x75| LengthFormatIdentifier(0x00)| maxNumberOfBlockLength(0x00 ... 0x00) 否定响应: 0x13:消息长度错误; 0x22:服务端与客户端之间的数据大小不匹配; 0x31:参数无效; 0x33:安全校验失败; 0x70:下载到服务端内存失败;


##### 3.2.5.3.0x36 - TransferData



用于服务端与客户端之间的数据传输。 格式: 0x36| blockSequenceCounter(0x00)| 0x00 ... 0x00

肯定响应: 0x76| 0x00| 0x00 ... 0x00 否定响应: 0x13:消息长度错误; 0x24:请求错误(带有blockSequenceCounter的该传输服务请求消息必须等于前一个请求传输消息中包含的请求消息); 0x31:不符合规范的请求; 0x71:下载模块长度与服务端给的内存大小不符合; 0x72:服务端下载数据时数据被擦除; 0x73:blockSequenceCounter错误; 0x92/0x93:服务端主电源应交测量电压超出了将数据下载到服务器的可接受范围;


##### 3.2.5.4.0x37 - RequestTransferExit



终止客户端与服务端之间的数据传输。 格式: 0x37|transferRequestParameterRecord(0x00 .. 0x00)

肯定响应: 0x77| transferResponsetParameterRecord(0x00 .. 0x00) 否定响应: 0x13:消息长度错误; 0x24:收到请求时编程过程未完成;传输服务已停止; 0x31:无效数据; 0x72:服务端下载数据时数据被擦除;

展示案例: 1.客户端从服务端下载数据。 memoryaddress 0x602000 dataFormatIdentifier:0x11 memorySize:0x00FFFF transferResponseParameter:0x0081 --- 请求下载: 0x34| 0x11| 0x33| 0x60 0x20 0x00| 0x00 0xFF 0xFF 0x74| 0x20| 0x00 0x81 --- 传输数据: 0x36| 0x01| 0x00 ...0x00 0x76| 0x01 0x36| 0x05| 0xXX ...0xXX 0x76 0x05 --- 移除出口(停止传输): 0x37 0x77 1.客户端向服务端上传数据。 memoryaddress 0x201000 dataFormatIdentifier:0x11 memorySize:0x0001FF transferResponseParameter:0x0081 --- 请求上传: 0x35| 0x11| 0x33| 0x20 0x10 0x00| 0x00 0x01 0xFF 0x75| 0x20| 0x00 0x81 --- 传输数据: 0x36| 0x01 0x76| 0x01| 0xXX ... 0xXX 0x36| 0x05 0x76| 0x05| 0xXX ... 0xXX --- 移除出口(停止传输): 0x37 0x77


##### 3.2.5.5.0x38 - RequestFileTransfer



启动客户端与服务端之间的数据传输。 格式: 0x38| Transfermode(0x01 - 0x05)| filePathAndNameLength(0x00 0x00)| filePathAndName(0x00 ...)| dataFormatIdentifier(0x00)| fileSizeParameterLength(0x00)| fileSzieUnCompressed(0x00 ...)| fileSizeCompressed(0x00 ...) Transfermode: 0x01:AddfilepathAndName 0x02:DeletefilepathAndName 0x03:Replacefile 0x04:Readfile 0x05:ReadDir 注意: 1.当Transfermode为0x02/0x04/0x05时,没有 dataFormatIdentifier(0x00)| fileSizeParameterLength(0x00)| fileSzieUnCompressed(0x00 ...)| fileSizeCompressed(0x00 ...)参数。 2.当Transfermode为0x05时,请求中测参数应该使用ASCII格式编码。

肯定响应: 0x78| 0x01-0x05| 0x00| 0x00 ... 0x00| 0x00| 0x00 0x00| 0x00 ... 0x00| 0x00 ...0x00 注意: 1.当Trandfermode为0x02,dataFormatIdentifier参数不在响应信息中;当Trandfermode为0x05,dataFormatIdentifier参数为0x00; 2.当Transfermode为0x02/0x04/0x05时,没有 fileSizeParameterLength(0x00)| fileSzieUnCompressed(0x00 ...)| fileSizeCompressed(0x00 ...)参数。 否定响应: 0x13:信息长度错误; 0x22:服务请求未执行成功; 0x31:参数无效; 0x33:安全校验未通过; 0x70:下载因服务端内存故障无法完成;

展示案例: 0x38| 0x01| 0x00 0x1E| 0x44 ....0x7A| 0x11| 0x02| 0xC3 0x50| 0x75 0x30 0x78| 0x01| 0x02| 0xC3 0x50| 0x11


## 4.基于UDS实现ECU刷写


本质:定义了将一个或者多个应用软件以物理方式下载到ROM中。  
 1.ECU上具有BootLoader程序,以解析向ECU发送的诊断指令;  
 编程步骤类型分类:  
 1.标准步骤;  
 2.可选步骤;  
 3.正常厂商的具体步骤;  
 执行过程中每步都需要指定该步骤允许的寻址方法,依据OEM要求选择功能地址或物理地址。基础过程如下:


![内存编程过程概述](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/769fd5837720442fbccd970eb3a1c5a3~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=Ok%2BBl2VIKcgCAO2MtqhzgGZtX%2BQ%3D)  
 主执行:协调/同步多个并行运行的编程步骤,控制“预编程步骤”和“后编程步骤”的执行,以及将车辆维持在其已转换到的操作模式中。如将车辆网络转换为允许对单个ECU编程的操作模式或编程节点的结论。  
 编程执行:各ECU的“编程步骤”可由客户端单独并发执行,直到执行到“编程最后阶段”  
 1. 下载应用程序软件或应用程序数据  
 `a.传输数据到服务端; b.服务端下载数据; c.编程后车辆网络重新同步;`  
 2. 服务器配置(可选)  
 `a.预编程步骤 - 设置车辆网络以进行服务器配置。 b.编程步骤 - 最终服务器配置。例如用于服务器复位后写入数据。 c.后编程步骤 - 在最终服务器配置后重新同步车辆网络。`  
 **预编程:**  
 `a.进入extended session; b.使用0x31执行条件检查;c.使用0x85服务关闭DTC存储;d.使用0x28关闭与诊断无关的报文,提高刷写效率;`  
 **编程:**  
 `a.进入programming session模式;b.使用0x27服务进行安全访问;c.写入指纹信息,标记身份;d.执行0x31,删除存储空间;e.调用数据操作指令进行写数据0x34 0x36 0x37; f.数据校验0x31;g.软件完整性、兼容性等验证;`  
 **后编译:**  
 `a.将ECU重启0x11或者恢复默认模式0x10;`  
 编程顺序:P431  
 **特殊要求**  
 如果在编程过程中发生以下错误情况,服务器应能够恢复并重新编程。  
 a.供电电源连接中断;  
 b.失去地面连接;  
 c.数据链路通信中断;  
 d.过压或欠压;


### 4.1 刷写示例(因为是中文翻译版本,所以表中会有一部分中文):


#### 4.1.1 预编译


##### 4.1.1.1 启动诊断会话


使ECU进入扩展模式。  
 ![启动会话](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/39dc504690774d51ba44ad699e9e840f~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=81J7aNAY%2FmVifXF4ESx0pcQPzlw%3D)  
 02,0代表单帧,2代表2个长度有效数据,10 03 发起扩展服务请求。  
 06,0代表单帧,6代表6个长度有效数据,50 03 是对应的指令响应。  
 疑问:此例子中为什么有两个不同ID内容相同的CAN报文?


##### 4.1.1.2 DTC设置控制(关闭)


设置禁止故障码,关闭DTC功能。  
 ![STC设置控制](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/48f57a6e913f461b87bf780f91b065ed~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=M3es86e3XaCOI5DuuaLrynZ%2F9x0%3D)  
 85 02,85为服务指令,子服务02关闭指令。


##### 4.1.1.3 通信控制


关闭非刷写数据流,关闭普通应用报文。  
 ![通信控制](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/6d6597091ac34fd798c6014c56b413e3~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=EDrNFdfHN3gxb%2FxbBP45S1cRdYo%3D)  
 注意事项:当对传输进行传输失能时,使用0x3E服务将服务器状态保持。  
 28 03 01,28为服务指令,子服务为subfunction 03 disablerxandtx,communicationtype 01 normalcommunicationmessage。


#### 4.1.2 编程阶段


##### 4.1.2.1 编程会话


切换模式,进入编程模式。  
 ![编程会话](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/3bdf8702e5bd4c1b993643cfe8f3bd7e~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=xKgDDzZfjAZ6rGxB7URzRtmjEng%3D)  
 10 02 指令,10切换模式,自服务02表示编程模式。


##### 4.1.2.2安全校验


a.对ECU进行解锁验证。  
 ![请求种子](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/ab3fe688053340b3b69d2bc81e94cb38~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=zH9eH2Wt2xe%2BmxKqvqv3rDCzGFc%3D)  
 27 01指令,27安全服务,子服务01为请求seed,得到21 74,进行计算之后,再给出响应。  
 b.响应种子请求。  
 ![在这里插入图片描述](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/b717b9955c9a4a65b3446eec64f4e224~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=N7cZrGdvVOitmNR3FKqqBh2nJcw%3D)  
 诊断仪给出响应key为47 11,ECU进行校验判断。


##### 4.1.2.3 擦除flash


![清除备份内存数据](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/22b7ea89e94e47fc8b67aa827ec7ae8b~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=jeCr60FMH4b0cgUgq0LZTCe6R1w%3D)  
 31 启动擦除, FF 00 协议规定erasememory DID;


##### 4.1.2.4 请求下载


![数据下载](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/bb0903c4c33b489f9aabb3868abe80b2~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=yEI1ItSzNc8biDmmnB3nZp92Emo%3D)


数据传输  
 ![数据传输](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/48d4b74a9a16420faf32553ceeca2e50~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=uTzV8ep6%2BsPICfKMb60k9D26JAU%3D)


![数据传输](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/c3dece1f64d84121b4b060dc264b89f7~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=fCyFaWpfYO05fX79dCQYghvpmfk%3D)  
 ![数据传输](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/a64cb744e9bf4a4aa7fe1a1ae6e7aa05~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=InKc%2BU7XKN93TPeqEVgNaJymH0s%3D)  
 数据传输结束  
 ![结束传输](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/308683c9e1d24fa49bf56ee27c4dea5f~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=yIptLcF6ywKZEyLWM1jzBGYLytI%3D)


##### 4.1.2.5 数据验证


![验证程序正确和兼容性](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/6227af3ac3a042b09f399f11c0a5a51c~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=7pJ4ezabczX8gXyYijmqh4v7VUw%3D)


##### 4.1.3 后编程


##### 4.1.3.1 写入VIN码


![写入VIM码](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/5c67960e37d845deb223041475f26667~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=jT%2FogoHVOH5UvCwDcn7pU8gkO3o%3D)


##### 4.1.3.2 ECU重启


![重启](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/56d5d26065fd457a950af8858f8eeb63~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=lBYo93o5lbstdk2lbQOtC9wnkv0%3D)


## 5. 参数定义(P466)


### 5.1 诊断和通信管理功能单元数据参数定义


#### 5.1.1 通信类型参数定义


#### 5.1.2 EventwindowTime


#### 5.1.3 LinkContrlModeIdentifier


不同设备连接之间的波特率设置。  
 `CAN:125000、250000、500000、1000000;`  
 `PC:9600、19200、38400、57600、115200;`


#### 5.1.4 NodeIdentificationNumber


### 5.2 数据传输功能单元数据参数定义


#### 5.2.1 DID


#### 5.2.2 ScalingByte



**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/d14bb969714a47ce927610e4a4f4d188~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=P5S%2Ba68dBP0hoC%2BtYVZkVt5r7NI%3D)
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/19ce44c5561f4a61abe07c1746e0a93d~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1751971120&x-signature=QaIOfKg8jy24AVG08rLbVi9be3E%3D)

**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**