本文介绍了如何使用PicoLIN工具进行快速的LIN从节点一致性测试

1. PicoLIN工具简介

PicoLIN是博主自己制作开发的一款针对汽车LIN总线的仿真调试工具,它可以支持模拟主节点进行发送和接收报文;也可以作为从节点监听实际物理总线的报文;此外它还具备以下特别功能:

  • 离线调度表: 充当主机节点,只需供电即可自当加载预设的调度表进行报文的调度,该功能适用于非专业人士进行产品功能的测试;
  • LIN从节点一致性测试: 进行基本的LIN总线协议层的一致性测试;

有关PicoLIN具体的使用说明可以参照PicoLIN的Wiki百科

2. 如何使用PicoLIN工具进行从节点一致性测试

有关一致性测试内容可以查看wiki百科LIN从节点一致性测试的内容,这里不做多余介绍;
使用PicoLIN进行一致性测试,需要了解配置命令:

2.1 “p0”命令配置设置消息log的时间戳类型

命令 功能 备注
p000\r\n 设置时间戳为默认时间戳 默认时间戳以上电时刻为起始累计,单位ms
p001\r\n 设置时间戳表示当前消息的数据场占用时间 此配置可以用来计算从机响应的波特率,单位us
p002\r\n 设置时间戳表示除报头外响应空间占用时间 此配置可以用来表示从机响应空间时间,单位us

上述命令为保持性配置,一次配置,后续所有报文按照此配置发送接收;使用到的测试用例为TG2-TC1、TG2-T6;

2.2 "p1"命令设置波特率上限和下限值

命令 功能 备注
p100\r\n 设置默认波特率19200bps 默认,仿真测试使用
p101\r\n 设置波特率19100bps 此配置可以测试从机响应波特率兼容性
p102\r\n 设置波特率19300bps 此配置可以测试从机响应波特率兼容性

上述命令为保持性配置,一次配置,后续所有报文按照此配置发送接收;使用到的测试用例为TG2-TC2;

2.3 "p2"命令设置报头Break长度

命令 功能 备注
p20d\r\n 设置Break长度13Tbit 默认,仿真测试使用
p21a\r\n 设置Break长度26Tbit Break长度兼容性测试
p214\r\n 设置Break长度20Tbit Break长度兼容性测试

上述命令为一次性配置,一次配置,后续一个报文按照此配置发送接收;随后Break长度复位为13Tbit,使用到的测试用例为TG2-TC3;

2.4 "p3"命令设置报头Delimiter长度

命令 功能 备注
p301\r\n 设置Delimiter长度1Tbit 默认,仿真测试使用
p30e\r\n 设置Delimiter长度14Tbit Delimiter长度兼容性测试
p30a\r\n 设置Delimiter长度10Tbit Delimiter长度兼容性测试

上述命令为一次性配置,一次配置,后续一个报文按照此配置发送接收;随后Delimiter长度复位为1Tbit,使用到的测试用例为TG2-TC4;

2.5 "p4"命令设置报头Header长度

命令 功能 备注
p401\r\n 设置Header长度13+1+0 Tbit 默认,仿真测试使用
p402\r\n 设置Header长度19+2+6 Tbit Header长度兼容性测试
p403\r\n 设置Header长度15+3+2 Tbit Header长度兼容性测试
p404\r\n 设置Header长度13+1+13 Tbit Header长度兼容性测试

上述命令为一次性配置,一次配置,后续一个报文按照此配置发送接收;随后Header长度复位为13+1+0Tbit,使用到的测试用例为TG2-TC5;

2.6 "p5"命令设置发送报头完整性

命令 功能 备注
p500\r\n 正常功能 默认,仿真测试使用
p501\r\n 发送报头时,只发送Break Header不完整性响应测试
p502\r\n 发送报头时,只发送Break+Sync Header不完整性响应测试
p503\r\n 发送报头时,PID的奇偶校验错误 Header不完整性响应测试

上述命令为保持性配置,一次配置,后续所有报文按照此配置发送接收;使用到的测试用例为TG2-TC9,TG2-TC10;

2.7 "p6"命令设置发送报文完整性

命令 功能 备注
p600\r\n 正常功能 默认,仿真测试使用
p601\r\n 发送报文时,PID奇偶校验错误 response error 测试
p602\r\n 发送报文时,Checksum错误 response error 测试
p503\r\n 发送报文时,第一个数据错误 response error 测试

上述命令为保持性配置,一次配置,后续所有报文按照此配置发送接收;使用到的测试用例为TG3-TC1,TG3-TC2;

2.8 TG2-TC6和TG2-TC7测试

这两个测试在正常模式下即可测试,只需判断log中有无错误帧即可;

3. 使用Python脚本进行LIN从节点一致性测试

有关测试脚本的具体实现请详阅《LIN从节点一致性测试》并结合本章第2节内容阅读脚本源码,picolin-python工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# -*- coding: utf-8 -*-

'''
You can using this py script to realize your custom lin comformance test:
- 1.purchase a PicoLIN tool
- 2.change this demo and run
'''

from pico_lin_com import PicoLinCom, _picolin_rsp_message
from lin_slave_conformance_test import LinSlaveConformTest
import time

if __name__ == "__main__":
# 连接COM12串口,PicoLIN默认作为主节点模式
lin = PicoLinCom("COM12")
# lin.setTimeStampMode(1)
# 需要指定收发ID和长度,以及response_error位
test_m = LinSlaveConformTest(True, 0x22, 0x24, 8, 8, 63)
test_m.setDevice(lin)
test_m.setLogPath("./test_logs")

# 主节点发送完整报文
test_m.resetTimeStamp()
test_m.testNetWorkWakeup()
time.sleep(2)
# 执行LIN一致性测试TG-TC1-10和TG3-TC1-2
test_m.testSlaveBaudrateValue()
test_m.testSlaveBaudrateCompatibility()
test_m.testSlaveBreakLengthCompatibility()
test_m.testSlaveDelimiterLengthCompatibility()
test_m.testSlaveHeaderLengthCompatibility()
test_m.testSlaveResponseTimeValue()
# TODO: multi response id, every will be tested
test_m.testSlaveResponseDlc()
test_m.testSlaveChecksum()
test_m.testSlaveIncompleteHeader()
test_m.testSlaveHeaderPIDError()
test_m.testSlaveChecksumError()
test_m.testSlaveDataError()

该脚本测试过程中会将log信息保存在对应输出文件夹目录下,文件名为:
lin_test + 日期 + 时间 .txt

演示效果如下,小破站链接: