overview前言
A.服务命令选择区
B.手动命令输入区
C.诊断命令发送/应答区
❖ 输入诊断参数:
Request PDU:诊断模块要发送的诊断数据包字节,该部分数值是不可编辑的,用户在填入参数值过后,该部分数据自动生成对应的诊断数据值。
诊断参数:对应关系如下:
【1】 Para0,数据类型为UInt,数据长度为8Bits,输入12,则对应字节为0x0C。
【2】 Para1,数据类型为Int,数据长度为8Bits,输入为-1,则对应字节为0xFF。
【3】 Para2,数据类型为Single,数据长度为32Bits,输入为3.1,则对应字节为0x40, 0x46,0x66,0x66。
【4】 Para3,数据类型为Double,数据长度为64Bits,输入为3.2,则对应字节为0x40, 0x09,0x99,0x99,0x99,0x99,0x99,0x9A。
【5】 Para4,数据类型为Hex数组,数据长度为8Bits,输入为0x11,则对应字节为0x11。
【6】 Para5,数据类型为ASCII字符串,数据长度为24Bits,输入字符串为”ASC”,则对应字节为0x43,0x53,0x41。
Para6,数据类型为系统变量。数据长度根据提取的系统变量的值为64bits,系统变量名称为Diagnostic0.BC_cebal_fw_srf05dbg_StartAddressAndDataLength,在执行过程中,系统会根据该名称自动提取系统变量的实际值,并解析到发送报文中。
完成上述诊断参数的输入过后,生成的诊断请求数据包为:0x24 0x00 0x01 0x0C 0xFF 0x40 0x46 0x66 0x66 0x40 0x09 0x99 0x99 0x99 0x99 0x99 0x9A 0x11 0x43 0x53 0x41,正如上图所示。
❖ 输入应答参数:
其中,第1部分跟前一个章节输入诊断参数完全一样,这里不再讲解。但是应答参数增加了一个可选命令,是否检查(Check)这部分参数。如果勾选了Check,则ECU的应答必须等于配置的应答参数,本诊断测试才算通过。如果不勾选,则诊断模块不检测ECU应答中这部分字节的内容。
【1】当上述所有配置应答都勾选上的时候,ECU应答的报文必须等于:
0x64 0x00 0x01 0x7B 0xFE 0x40 0x4C 0xCC 0xCD 0x40 0x1A 0x00 0x00 0x00 0x00 0x00 0x00 0x12 0x34 0x43 0x53 0x41才被系统认定为通过诊断测试。
【2】去掉勾选判断Para1和Para2,如下图所示:
此时,ECU应答的报文必须等于:0x64 0x00 0x01 0x7B 0xXX 0xXX 0xXX 0xXX 0xXX 0x40 0x1A 0x00 0x00 0x00 0x00 0x00 0x00 0x12 0x34 0x43 0x53 0x41。其中红色部分0xXX表示该部分字节不予判断,其他字节必须等于上述配置字节才被系统认定通过诊断测试。
【3】去掉勾选判断Para0-Pra5,如下图所示:
D.诊断运行
E.诊断信息/Trace区
❖ 服务/原始报文 Trace 对比:
通过上图对比可以看到:
【1】原始的CAN/CANFD报文区还可以看到多帧,单帧,首帧等传输层信息。
【2】诊断模块中的Trace呈现给用户的是直接的服务层报文。对于用于来说,只需要关心自己发送的服务内容即可,不需要关心这些内容具体是怎么拆分发送的。因此,做诊断服务的时候,重点观察诊断模块内部Trace界面即可。