在之前的文章中介绍了LIN主、从节点各自如何去做诊断测试,不太清楚的可以移步:LIN协议的诊断测试(附CAPL自动化代码)
一、LIN诊断帧的帧结构
LIN诊断帧分为主机请求帧0x3C和从机应答帧0x3D,两者数据场固定为8个字节,都采用标准型校验和。
主机请求帧0x3C由帧头和携带诊断服务的数据段组成。
从机应答帧0x3D由帧头和携带从节点根据诊断服务的响应数据段组成。
需要注意区分的是:
1、主机请求帧应答部分的发布节点是主机节点;从机应答帧应答部分的发布节点是从机节点。
2、从机应答帧是一帧完整的LIN报文,要区别于LIN帧结构的应答部分。
二、诊断数据内容分析
-
单帧SF:
-
首帧FF:
-
续帧CF:
如上图,诊断数据byte0为NAD节点地址,具体NAD是多少可以在LDF文件中看到,位置如下图
byte1为PCI,Protocol control information协议控制信息。其中,PCI的具体信息如下图:
byte2-7为诊断数据内容,不够的用0xFF补齐。
三、仿真测试实战
仿真发送0x3C报文
NAD:xx
PCI:0:单帧;数据长度:1
诊断数据内容:B6,其后补齐0xFF,执行保存配置。
仿真发送0x3D帧头
NAD:xx
PCI:0:单帧;数据长度:1
从节点诊断应答数据内容:F6,其后补齐0xFF,肯定响应,保存配置成功。
这里需要指出一点:
1、仿真发送0x3C后,不能立刻仿真发送0x3D帧头,需要等待100ms,否则会出现错误帧。理由是从节点需要100ms以内进行初始化。(实现方式CAPL函数testwaitfortimeout(100))