一个最简单的例子(0x10-诊断会话控制服务): 一个不带sub-function的例子(0x22-通过DID读数据): 负响应消息由两部分组成:SID和负响应码(NRC)。SID用于标识响应的服务,负响应码指示服务执行失败的原因。 负响应报文的字节组成格式如下所示: 一个0x10-诊断会话控制服务例子: 4.负响应码(Negative Response Code -...
格式1:[SID] + [Sub-function] 格式2:[SID] + [DID] 格式3:[SID] + [Sub-function] + [DID] Positive Response: 格式1:[SID + 0x40] + [Sub-function] 格式2:[SID + 0x40] + [DID] 格式3:[SID + 0x40] + [Sub-function] + [DID] Negative Response: [0x7F] + [SID] + [NRC] I...
ServiceIdentifier,诊断服务标识符,简称为SID,一字节的无符号整数,用来指代某个诊断服务。诊断协议为每个诊断服务都分配唯一SID,因此更方便协议的软件实现。同时,在开发过程中沟通更加方便。比如,ReadDataByIdentifier服务是去按照ID去读诊断数据,直接说22服务会更加便捷。 DataIdentifier 简称DID,2个字节无符号整数的ID,...
使用2F控制AirInletDoorPosition(进气口门位置),用DID(标识符)=0x9B00来标识进气口门的位置。 AirInletDoorPosition[%]=decimal(Hex)*1[%],即用一个百分比来表示这个位置。 step1: tester发送229B00读取当前进气口门的位置,这里22即SID,0x9B00即第二三字节DID。 ECU返回629B000A,这里0x0A=10(dec),即表示当...
而有的UDS服务里面是不支持 Subfunction,是支持DID的,DID是“数据ID”的意思, 请求格式为:“SID+具体的DID+数据内容”,肯定响应为:“SID+40+DID+具体的数据”。 支持Subfunction和DID: 请求格式为:“SID + Sub-Function + DID + 数据。 2.2 response ...
读取数据服务($22)是根据DataIdentifier(即DID)去请求读取数据,其请求格式为SID+DID。 注意DID表示存储数据的地方,一般存储整车厂和零件供应商定义的数据,包括模拟输入和输出信号(比如转速信号),数字输入和输出信号(比如车门信号),内部数据和系统状态信息等,这里请求的DID可以是一个,也可以是多个。
SID+SF(Sub-function), SID+DID(Data Identifier)(读写用), SID+SF+DID。 NRC:Negative Response Code(否定响应码)。如果ECU拒绝了一个请求,它会回应一个NRC。不同的NRC有不同的含义。 NRC.jpg 例子:以CAN总线网络举例。 八个数据字节,第一字节被网络层占用。
UDS诊断包括6大类,26种服务,每种服务都有自己独立的ID,即SID(Service Identifier)。 UDS诊断服务的通信协议基本相似,但又有所区别。 以诊断和通信管理功能单元(Diagnostic and Communication Management functional unit )为例,服务请求和响应有两类:一类是具有Subfunction(子功能),另一类是不具有Subfunction(子功能)...
看两个名词,一个叫做Subfunction,一个叫做ID,UDS服务支持Subfunction的请求和响应格式,“请求”为“SID+一个字节Subfunction+具体的数据”,肯定响应为“SID+40+Subfunction+具体的数据”,而有的UDS服务里面是不支持Subfunction,是支持DID的,DID是“数据ID”的意思,那么它的请求格式为“SID+具体的DID+数据内容”,...
UDS服务的协议数据单元(PDU)包含地址信息和诊断消息(数据字段)。数据字段由服务标识符组成(SID)和可选的数据参数组成。数据字段由一字节长的服务标识符来控制服务的功能(这一个字节也可理解成为是Applictionlayer的协议控制信息)。 应用协议层的下方是传输层/网络层,其PDU包含控制信息PCI,数据信息Data.即N_PDU=N_PC...