UDS诊断入门(二)
01引言上篇文章所发的UDS诊断入门(一),大家还是比较感兴趣的,这也给我很大的鼓励,UDS的服务一共有26个,上篇文章我们主要介绍了诊断和通讯管理功能单元所使用的服务:
0x10 诊断会话控制0x11 电控单元复位0x27 安全访问0x28 通讯控制0x3E 待机握手0x83 访问时间参数0x84 安全数据传输0x85 诊断故障码设置控制0x86 事件响应0x87 链路控制上述10个服务的具体服务介绍,数据请求和肯定响应格式我们已经介绍完毕,还未观看的同事可以关注本账号找到历史消息记录查找阅读。或者点击此处跳转~本文接着介绍UDS的服务,本篇文章主要介绍的是数据传输管理单元的7个服务,包括:
0x22 通过ID读数据0x23 通过地址读取内存0x24 通过ID读比例数据0x2A 通过周期ID读取数据0x2C 动态定义标识符0x2E 通过ID写数据0x3D 通过地址写数据以上七个服务中,目前最常用的是0x22和0x2E服务,下面我们继续详细介绍各个服务。02数据传输管理单元2.1 通过ID读数据(0x22)2.1.1 服务介绍通过ID读数据服务允许客户端通过一个或者多个ID从服务器中读取记录的数据客户端请求消息包含一个或者多个2字节的数据标识符(data identifier。DID)值,用于标记出由服务器记录的数据记录参数,数据记录的格式可以由OEM或者tire1指定,可以包括模拟输入输出,数字输入输出,内部数据和其他服务器所支持的系统的状态信息(如版本信息,客户标识等)。服务器可以限制DID的数量,这些DID可以在OEM和Tire1的支持下同时被请求服务器在接收到读取ID数据的请求后,服务器应访问DID参数指定的存储区域记录的数据,并在一个包含相关数据记录参数的肯定响应中来反馈获取到的指定参数值,请求消息中可能多次包含相同的DID,服务器应将每个DID作为一个单独的参数来对待,并根据请求响应每个DID的参数数据。2.1.2 请求数据定义
2.1.2 肯定响应数据定义
2.2 通过地址读取内存(0x23)2.2.1 服务描述通过地址读取内存服务允许客户端通过提供的起始地址和要读取的内存大小从服务器请求内存数据。根据地址读取内存请求消息用于从由参数内存地址和内存大小标识的服务器请求内存数据。内存大小参数由地址和长度格式标识符(低和高)定义。还可以使用固定地址和长度格式标识符,内存地址或内存大小参数中未使用的字节在较高范围的地址位置用值0x00填充。在重叠内存区域的情况下,可以使用一个额外的内存地址字节作为内存标识符(例如,使用内部和外部闪存)。服务器通过读内存通过地址肯定响应消息发送数据记录值。数据记录参数的格式和定义应由OEM指定。数据记录参数可以包括模拟输入和输出信号、数字输入和输出信号、内部数据和服务器所支持的系统状态信息。2.2.2 请求数据定义
请求数据中的参数定义定义地址和长度格式标识符此参数为一个字节单独编码的参数值Bit7-4:内存区域大小参数的长度Bit3-0:内存地址参数的长度内存地址内存地址参数是要从中检索数据的服务器内存的起始地址。用于此地址的字节数由地址和长度格式标识符的低字节(第3 - 0位)定义。内存地址参数中的字节总是服务器中引用的地址的最低有效字节。地址的最高有效字节可以用作内存标识符。使用内存标识符的一个例子是具有16位寻址和内存地址重叠的双处理器服务器(当给定的地址对任何一个处理器都有效,但产生不同的物理内存设备或使用内部和外部闪存时)。在这种情况下,内存地址参数中未使用的字节可以指定为用于选择所需内存设备的内存标识符。该功能的使用应由OEM/系统供应商定义。内存大小通过地址读取内存数据请求消息中的内存大小指定从服务器中地址内存的指定地址开始读取的字节数,用于此大小的字节数由地址和长度标识符的高字节(第7-4位)定义。2.2.3 肯定响应数据定义
2.3 通过ID读比例数据(0x24)2.3.1 服务描述通过ID读取比例数据服务允许客户端通过DID读取服务器中记录的数据客户端请求消息包含一个DID值,该值ID由服务器维护的数据记录。数据记录的格式和定义应根据OEM而定,可包括模拟输入和输出信号、数字输入和输出信号、内部数据以及服务器支持的系统状态信息。当接收到客户端发出去请求信息后,服务器访问指定的DID对应的记录数据,并通过肯定响应的数据来反馈读取到的参数值。2.3.2 请求数据定义
2.3.3 肯定响应数据定义
2.4 通过周期ID读取数据(0x2A)2.4.1 服务描述通过周期性标识符读取数据服务允许客户端从一个或多个周期性数据标识符标识的服务器请求周期性传输数据记录值。客户端请求消息包含一个或多个1字节的周期性数据标识符值,用于读取服务器记录的数据。周期性数据标识符表示本服务保留的数据标识符范围(0xF2XX)之外的数据标识符的低字节,例如本服务使用的周期性数据标识符0xE3就是数据标识符0xF2E3。数据记录的格式和定义应根据车辆制造商而定,可包括模拟输入和输出信号、数字输入和输出信号、内部数据以及服务器支持的系统状态信息。当接收到周期性标识符读取数据请求而不是停止发送时,服务器应该检查是否有正确的条件来执行服务。周期数据标识符只能在给定时间使用单一传输模式来支持。在接收到请求消息时,应执行对周期数据标识符调度的更改,并为相同的周期数据标识符将传输模式参数设置为新的调度。根据汽车制造商的要求,应支持不同周期数据标识符的多个时间表。2.4.2 请求数据定义
2.4.3 肯定响应数据定义
2.5 动态定义标识符(0x2C)2.5.1 服务描述动态定义标识符服务允许客户端在服务器中动态定义一个数据标识符,稍后可以通过定义的标识符,在通过标识符读数据服务读取动态定义的标识符中所包含的数据信息。此服务的目的是为客户端提供将一个或者多个DID数据进行集合的能力,可以通过0x22或者0x2A服务请求多个DID的数据,此服务可以通过以下方式使用:-源数据标识符-内存地址或者内存大小-以上两种的组合,使用多个请求来定义单个数据元素,然后动态定义的数据将包含定义的所有数据参数信息该服务在处理诊断应用程序的特殊数据需求方面提供了更大的灵活性,这些数据需要扩展到可以通过静态定义的数据标识符读取的信息之外,还可以通过避免与频繁请求/响应事务相关的开销损失来减少带宽利用率。动态定义的数据标识符的定义可以通过单个请求消息完成,也可以通过多个请求消息完成。这允许定义引用源标识符和内存地址的单个数据元素。服务器必须连接单个数据元素的定义。动态定义的数据标识符的重新定义可以通过清除当前定义并重新使用新的定义来实现。当多个动态定义数据标识符请求消息用于配置单个数据标识符和服务器检测到的最大字节数的泛滥在后续请求的数据标识符(如周期性数据标识符的定义),然后服务器应当保留数据标识符的定义请求前,会导致溢出。尽管该服务不禁止此类功能,但不建议客户端从另一个动态定义的数据记录引用一个动态定义的数据记录,因为删除被引用的记录可能会在引用记录中产生数据一致性问题。该服务还提供清除现有动态定义的数据记录的能力。如果指定的数据记录标识符在服务器支持的有效动态数据标识符范围内,则应该肯定响应清除数据记录的请求。2.5.2 请求数据定义2.5.2.1 通过数据标识符定义
2.5.2.2 通过地址数据定义
2.5.2.3 清除动态定义
其中2C服务所使用的sub-function在ISO14229-1中有以下定义:Bits 6 – 0Description00ISOSAE保留01通过动态标识符定义这个值应使用向服务器指定动态数据标识符的定义应该通过数据标识符引用来实现02通过内存地址定义这个值应使用向服务器指定动态数据标识符的定义应该通过内存地址的数据引用来实现03清除动态定义的标识符信息此值应使用以清除指定的动态数据标识符。注意,服务器应该积极响应来自客户端的明确请求,即使请求时指定的动态数据标识符不存在。然而,指定的动态数据标识符需要在一个有效的范围内。如果在请求时定期报告指定的动态数据标识符,则应先停止该动态标识符,然后清除。请求数据中的参数定义:Definition动态定义的数据标识符此参数指定了客户机定义的动态数据记录在未来调用服务“按标识符读取数据”或“按周期数据标识符读取数据”时如何被引用。动态定义的数据标识符应在读取数据标识符服务中作为数据标识符处理。定期数据标识服务将其作为读取数据中的定期记录标识进行处理源数据标识符此参数仅在使用通过标识符数据定义动态标识符功能中使用,此参数逻辑上指定要包含在动态数据记录中的信息源。例如,这可以是用于引用发动机转速的2字节DID,或用于引用包含发动机转速、车辆转速、进气温度等的复合信息块的2字节DID。位置源数据此参数仅在使用通过标识符数据定义动态标识符功能中使用,这个1字节参数用于指定要包含在动态数据记录中的源数据记录摘录的起始字节位置。1的位置应该引用源数据标识符引用的数据记录的第一个字节地址和大小格式标识符此参数为一个字节单独编码的参数值Bit7-4:内存区域大小参数的长度Bit3-0:内存地址参数的长度内存地址内存地址参数是要从中检索数据的服务器内存的起始地址。用于此地址的字节数由地址和长度格式标识符的低字节(第3 - 0位)定义。内存地址参数中的字节总是服务器中引用的地址的最低有效字节。地址的最高有效字节可以用作内存标识符。使用内存标识符的一个例子是具有16位寻址和内存地址重叠的双处理器服务器(当给定的地址对任何一个处理器都有效,但产生不同的物理内存设备或使用内部和外部闪存时)。在这种情况下,内存地址参数中未使用的字节可以指定为用于选择所需内存设备的内存标识符。该功能的使用应由OEM/系统供应商定义。内存大小通过地址读取内存数据请求消息中的内存大小指定从服务器中地址内存的指定地址开始读取的字节数,用于此大小的字节数由地址和长度标识符的高字节(第7-4位)定义。2.5.3 肯定响应数据定义
2.6 通过数据标识符写数据(0x2E)2.6.1 服务介绍该服务用于向ECU内数据标识符提供特定位置的写入信息。在写入数据完成后使用ECU复位服务使更新的数据对ECU可用。通过标识符写数据服务用于诊断设备向ECU写数据记录。此数据通过数据标识符区别并且可能是不加密的。主机厂定义执行这条服务的时候ECU条件是否满足。此服务可能用于以下几种情况:---向ECU写入配置信息(如VIN码等);---清除非易失性存储器数据;---复位已学习数值;---设置可选项;ECU可能限制或者阻止向特定的数据标识符写数据(如系统供应商/汽车制造商定义的只读标识符)。2.6.2 请求数据定义
2.6.3 肯定响应数据定义
2.7 通过地址写内存(0x3D)2.7.1 服务介绍此服务允许客户端在一个或者多个连续的内存位置向服务器写入信息此服务请求信息将参数数据指定的信息写入到参数指定的内存位置(内存地址和内存大小)。内存地址和内存大小参数使用的字节数由地址和长度格式标识符(低字节和高字节)定义。还可以使用固定地址和长度格式标识符,内存地址或内存大小参数中未使用的字节在较高范围的地址位置用值0x00填充。2.7.2 请求数据格式
请求数据中的参数定义定义地址和长度格式标识符此参数为一个字节单独编码的参数值Bit7-4:内存区域大小参数的长度Bit3-0:内存地址参数的长度内存地址内存地址参数是要从中检索数据的服务器内存的起始地址。用于此地址的字节数由地址和长度格式标识符的低字节(第3 - 0位)定义。内存地址参数中的字节总是服务器中引用的地址的最低有效字节。地址的最高有效字节可以用作内存标识符。使用内存标识符的一个例子是具有16位寻址和内存地址重叠的双处理器服务器(当给定的地址对任何一个处理器都有效,但产生不同的物理内存设备或使用内部和外部闪存时)。在这种情况下,内存地址参数中未使用的字节可以指定为用于选择所需内存设备的内存标识符。该功能的使用应由OEM/系统供应商定义。内存大小通过地址读取内存数据请求消息中的内存大小指定从服务器中地址内存的指定地址开始读取的字节数,用于此大小的字节数由地址和长度标识符的高字节(第7-4位)定义。2.7.3 肯定响应数据定义
UDS诊断入门(二)就介绍到这里,本文4700 字,第三部分的内容将会在本周六(4.27)晚发出,届时将 介绍在实际工作中经常使用到的读取故障码,清除故障信息以及输入输出控制和例行程序控制四个服务,字数也将突破6000,欢迎继续关注。如您认为本文对您有帮助,请转发关注,让更多人看到,也是对作者的鼓励。
请点亮在看,点击分享