基于车机can网络信号测试的自动化实现方法

文档序号:118020 发布日期:2021-10-19 浏览:29次 >En<

阅读说明:本技术 基于车机can网络信号测试的自动化实现方法 (Automatic realization method based on vehicle machine CAN network signal test ) 是由 代维怀 孙佩杰 张洪全 于 2021-04-08 设计创作,主要内容包括:本发明公开了一种基于车机CAN网络信号测试的自动化实现方法,包括以下步骤:第一步.解析Can信号:自动解析车机DBC文件,得到信号的枚举值、起始位置startSignal、信号长度signalLen、第一偏移量和因子;第二步.组装Can信号:采用第一步解析出来的Can矩阵信息,通过预设组装算法计算出Can信号发送的值;第三步.发送Can信号:通过Can设备发送组装好的Can信号;第四步.读取Can信号:通过Can设备读取对应的Can信号,进行业务断言。本发明提升了测试效率,降低了测试复杂度。(The invention discloses an automatic realization method based on a vehicle machine CAN network signal test, which comprises the following steps: in the first step, the Can signal is analyzed: automatically analyzing the DBC file of the vehicle to obtain an enumerated value of a signal, a starting position startSignal, a signal length signalLen, a first offset and a factor; second step, assembling Can signal: calculating a value sent by a Can signal by adopting the Can matrix information analyzed in the first step through a preset assembly algorithm; third step, sending a Can signal: sending the assembled Can signal through Can equipment; reading a Can signal: and reading the corresponding Can signal through the Can equipment, and performing service assertion. The invention improves the testing efficiency and reduces the testing complexity.)

基于车机CAN网络信号测试的自动化实现方法

技术领域

本发明属于整车网络测试技术领域,具体涉及一种基于车机CAN网络信号测试的自动化实现方法。

背景技术

随着汽车电子技术的发展和对汽车性能要求的提高,汽车上的电控单元(ECU)的数量越来越多,各个电控单元之间的交互信息通过CAN、LIN、MOST总线组成的网络来实现。因而对整车网络的测试显得尤为必要。然而在车机前期开发阶段,无实体控制器,只能通过CAN模拟工具对CAN信号进行仿真测试。传统模式通过手动发送仿真信号,进行CAN网络测试,容易出现以下问题:

(1)收信号可能会漏掉(部分反馈信号瞬间发送3帧);

(2)部分信号发送间隔有时间要求,若时间间隔短,手动无法实现;

(3)人工发送仿真信号时序复杂,且容易出错;

(4)Can网络压力测试工作重复率高,人力成本大。

因此,有必要开发一种新的基于车机CAN网络信号测试的自动化实现方法。

发明内容

本发明的目的是提供一种基于车机CAN网络信号测试的自动化实现方法,能提升测试效率和降低测试复杂度。

本发明所述的一种基于车机CAN网络信号测试的自动化实现方法,包括以下步骤:

第一步.解析Can信号:自动解析车机DBC文件,得到Can矩阵信息,Can矩阵信息包括信号初始值rowValue、起始位置startSignal和信号长度signalLen;

第二步.组装Can信号:采用第一步解析出来的Can矩阵信息,通过预设组装算法计算出Can信号发送的值;

第三步.发送Can信号:通过Can设备发送组装好的Can信号;

第四步.读取Can信号:通过Can设备读取对应的Can信号,进行业务断言。

可选地,所述通过预设组装算法计算出Can信号发送的值,具体为:

根据起始位和长度信息确定lsb;

根据lsb确定信息跨越的byte位;

根据跨越的byte位组合为数据,该数据即为Can信号发送的值。

可选地,所述lsb的计算公式如下:

lsb = b2 - (b2 % 8) + 7 - (b2 % 8) ;

b2 = b1 + signalLen – 1;

b 1= startSignal- (startSignal% 8) + 7 - (startSignal% 8);

其中:signalLen表示信号长度,startSignal表示信号的起始位置。

可选地,根据lsb确定信息跨越的byte位,具体为:

计算结束字节endByte=取整(lsb/8);

计算结束字节剩余的bit位remainBits=lsb& 7;

计算值在64bit位中的第二偏移量offset=remainBits + 8 * (8 – endByte -1)。

可选地,根据跨越的byte位组合为数据,具体为:

将rowValue的值通过位移0ffset位,再采用大端模式转换为8个byte;

其中,rowValue的值为信号的枚举值减去第一偏移量,然后除以因子,再通过四舍五入取整所得。

可选地,将所述预设组装算法组装为多个API接口,至少包括收API接口和发API接口;

所述收API接口被配置为接收信息的时间间隔小于等于0.01 ms;

所述发API接口被配置为以固定时间间隔发送;

所述收API接口和发API接口被配置为顺序调用;

所述收API接口和发API接口被配置为循环收发

本发明具有以下优点:

(1)将预设组装算法组装为API接口,提供了汽车Can网络自动化解决方案;

(2)收API接口被配置为时间间隔0.01 ms以内,达成can网络中信号无遗漏接收,规避人为漏信号场景;

(3)发API接口被配置为固定时间间隔发送(通过上层代码来实现),达成人工无法实现的固定时间间隔发信号;

(4)收API接口和发API接口均被配置为顺序调用(通过上层代码来实现),能够达到需要多个Can信号收发的复杂业务场景,规避人工模拟困难问题;

(5)收API接口和发API接口均被配置为循环发送(通过上层代码来实现),能够实现业务压力测试,降低人工值守成本;

综上所述,本发明通过自动化方式实现了公有CAN信号收发,以及车机私有CAN网络建立和收发。根据车机业务流程建立CAN网络测试自动化,提升了测试效率,降低了测试复杂度。

附图说明

图1是本发明的流程图;

图2是表示Can信号字节排序和位排序方式的示意图;

图3是具体算法举例获取出来的信号起始位置和结束位置的示意图。

具体实施方式

下面结合附图对本发明作进一步说明。

如图1所示,本实施例中,一种基于车机CAN网络信号测试的自动化实现方法,包括以下步骤:

第一步.解析Can信号:自动解析车机DBC(车机数据库文件)文件,得到信号的枚举值、起始位置startSignal、信号长度signalLen、第一偏移量和因子;

第二步.组装Can信号:采用第一步解析出来的Can矩阵信息,通过预设组装算法计算出Can信号发送的值;

第三步.发送Can信号:通过Can设备发送组装好的Can信号;

第四步.读取Can信号:通过Can设备读取对应的Can信号,进行业务断言。

本实施例中,标准Can信号,每帧CAN报文由8个字节共64位组成。每个报文包含多个CAN控制信号。

如图2所示,本实施例中,每个字节采用大端模式,高位在前,低位在后,采用Z字形组合成为一个矩阵。

本实施例中,所述通过预设组装算法计算出Can信号发送的值,具体为:

根据起始位和长度信息确定lsb(即最低有效位);

根据lsb确定信息跨越的byte位;

根据跨越的byte位组合为数据,该数据即为Can信号发送的值。

本实施例中,所述lsb的计算公式如下:

lsb = b2 - (b2 % 8) + 7 - (b2 % 8) ;

b2 = b1 + signalLen – 1;

b 1= startSignal- (startSignal% 8) + 7 - (startSignal% 8);

其中:% 表示求余运算,signalLen表示信号长度,startSignal表示信号的起始位置。

本实施例中,根据lsb确定信息跨越的byte位,具体为:

计算结束字节endByte=取整(lsb/8);

计算结束字节剩余的bit位remainBits=lsb& 7,&表示求与运算;

计算值在64bit位中的第二偏移量offset=remainBits + 8 * (8 – endByte -1)。

本实施例中,根据跨越的byte位组合为数据,具体为,

将rowValue的值通过位移0ffset位,再采用大端模式转换为8个byte。

已知startSignal=28、signalLen=13和rowValue=0xb2,组装发送数据Byte。其中,rowValue的值为信号的枚举值减去第一偏移量,然后除以因子,再通过四舍五入取整所得。

如图3所示,在车机Can网络DBC数据库中signal采用motorola格式,bitnumbering采用lsb。

(1)b 1= startSignal- (startSignal% 8) + 7 - (startSignal% 8)

=28-4+7-4

=27

(2)b2 = b1 + signalLen – 1

=27+13-1

=39

(3)lsb = b2 - (b2 % 8) + 7 - (b2 % 8)

=39-7+7-7

=32

即lsb在32bit位,参见图3。

(4)endByte=取整(lsb/8)

=4

结束字节endByte为第四个字节,即Byte3,参见图3。

(5)remainBits=lsb& 7

lsb为32,32二进制为0010 0000,7的二进制为0000 0111;与计算的结果为00000000,即计算出结束字节剩余的bit位remainBits为0。

(6)offset=remainBits + 8 * (8 – endByte - 1)

=0+8*(8-4-1)

=32

即计算值在64bit位中的第二偏移量offset为32位。

(7)将rowValue的值通过位移0ffset位,再采用大端模式转换为8个byte;采用的指令如下:

sendData=(rowValue<<offset) .to_bytes(8, byteorder="big");

得到的数据的值为b'\x00\x00\x00\x00\xb2\x00\x00\x00',与如图3所示结果一致。

本实施例中,将所述预设组装算法组装为多个API接口,至少包括收API接口和发API接口;

所述收API接口被配置为接收信息的时间间隔小于等于0.01 ms;

所述发API接口被配置为以固定时间间隔发送;

所述收API接口和发API接口被配置为顺序调用;

所述收API接口和发API接口被配置为循环收发。

本实施例中,上层调用API接口

CAN信号收发通过APICanBus包进行封装,包里面包括CanCommon模块和CanMatriInfo 模块,分别提供Can信号收发和Can信息;用户导入该包,通过调用具体的收发方法,实现Can仿真自动化测试。具体步骤如下:

1、导入包

从APICanBus导入车机CAN矩阵和CAN信号收发API,采用的指令如下:

from APICanBus.canMatriInfo import *

2、调用收发接口

2.1.发API接口

2.1.1.只发送一帧,采用的指令如下:

SendCanData(flag=True,BCM_PowerStatusFeedback=2)

设置flag=True,API通过KVASER发送一帧BCM_PowerStatusFeedback信号

2.1.2采用线程持续发送(修改发送信号),采用的指令如下:

SendCanData(flag=True,BCM_PowerStatusFeedback=2)

设置flag= True,API通过Can设备每隔10ms发送一次BCM_PowerStatusFeedback信号。

2.2.收API接口

2.2.1.可以设置是否收到特定信号,采用的指令如下:

ReadCanData(flg=False, **sig_names)

flg:False表示不接收该信号; True,表示期望收到该信号;

sig_names:key表示CAN信号名称,VALUE表示CAN信号值;

以上为实现该发明主要的二个接口,其他接口可依赖当前两个接口进行扩展开发。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种消息发送方法及VNFM、计算机可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!