用于测试汽车仪表的CAN虚拟报文组建方法及系统与流程

文档序号:24345863发布日期:2021-03-19 12:29阅读:390来源:国知局
用于测试汽车仪表的CAN虚拟报文组建方法及系统与流程

本发明涉及一种用于测试的can报文模拟方法和系统,具体涉及用于用于测试汽车仪表的can报文模拟方法和系统。



背景技术:

can是控制器局域网络(controllerareanetwork,can)的简称,是国际上应用最广泛的现场总线之一,大量运用于工控和汽车领域。在汽车仪表测试的过程中,只要根据该协议和信号值,就能组建can报文,从而模拟车上的各种can信号,对仪表进行测试。

要想组建一条can报文,首先需要知道该报文的数据编号(messageid),数据长度(messagelength)。并且,由于每条报文中包含若干信号,还需要知道每个信号在整个报文中占哪些bit位(bitnumber)的不同,在整个报文中占的bit位的长度(signallength)和信号名(signalname)。

获得上述信息后,可以创建一个可调节的控件如进度条或文本框等,其中进度条或文本框所对应的值为相应信号的值,即代表物理量的值,而测试者通过不断调整控件的值,程序根据数值信息组建can报文发送给仪表,完成一次测试。

但这种方法存在一些问题,如图1所示,如果需要发送多个不同的信号,需要有多个个控件,并且记住他们的位置,并在测试的过程中需要手动不断操作,大部分时间属于重复的机械劳动,极易令测试人员产生疲劳。

而采用测试脚本进行测试,则需要编写测试脚本,这需要测试人员有一定的脚本编程能力,限制了测试脚本的普及;且编写每个脚本都需要打开报文表,手动输入起始位(startbit)和信号长度(signallength),也相对繁琐。



技术实现要素:

本发明的目的是为了克服现有方法组建can虚拟报文需要显示多个控件,导致测试的过程的机械劳动致人疲劳的问题,提供了一种用于测试汽车仪表的can虚拟报文组建方法及系统。

本发明的用于测试汽车仪表的can虚拟报文组建方法,方法具体如下:

步骤一、读取预先存储的can报文格式表,识别并解析can报文格式表中can报文的格式;

can报文包括数据编号和至少一个信号;信号包括信号名;

步骤二、根据步骤一得到的can报文的格式,构建包括待测试信号的can虚拟报文结构体;且该can虚拟报文结构体中待测试信号所对应的物理值空缺;

步骤三、根据待测试信号所位于can报文的数据编号、待测试信号的信号名和待测试信号所对应的物理量设定值生成json格式的测试指令;

步骤四、通过测试指令寻找对应的can报文,并将物理量设定值作为空缺的物理值填充入can虚拟报文结构体中,完成can虚拟报文的构建。

进一步地,还包括,

步骤五、将can虚拟报文发送至汽车仪表,如果待测试信号所对应的物理值和汽车仪表中相应信号的显示值的偏差在设定误差范围内,则判断汽车仪表中相应信号的显示正常。

进一步地,步骤二还包括:

根据can报文的格式填充预设的列表模板,形成can虚拟报文列表。

本发明的用于测试汽车仪表的can虚拟报文组建系统,系统包括:

can报文表解析模块,用于读取预先存储的can报文格式表,识别并解析can报文格式表中can报文的格式;

can报文包括数据编号和至少一个信号;信号包括信号名;

can虚拟报文组建模块,与can报文表解析模块连接,用于根据can报文表解析模块得到的can报文的格式,构建包括待测试信号的can虚拟报文结构体;且该can虚拟报文结构体中待测试信号所对应的物理值空缺;

测试指令生成模块,与can虚拟报文组建模块连接,用于根据待测试信号所位于can报文的数据编号、待测试信号的信号名和待测试信号所对应的物理量设定值生成json格式的测试指令;

can虚拟报文填充模块,同时与can虚拟报文组建模块和测试指令生成模块连接,用于通过测试指令寻找对应的can报文,并将物理量设定值作为空缺的物理值填充入can虚拟报文结构体中,完成can虚拟报文的构建。

进一步地,还包括:

报文发送测试模块,与can虚拟报文填充模块连接,用于将can虚拟报文发送至汽车仪表,如果待测试信号所对应的物理值和汽车仪表中相应信号的显示值的偏差在设定误差范围内,则判断汽车仪表中相应信号的显示正常。

进一步地,can虚拟报文组建模块还包括:

列表生成模块,用于根据can报文的格式填充预设的列表模板,形成can虚拟报文列表。

本发明的有益效果是:

测试指令生成后,便可代替手工触发信号。而且一旦json测试脚本写好,在第二轮、第三轮测试时也只需执行脚本。节省了大量人工,测试效率大幅提高。

经过实际检验,该本发明的方法和系统具有自动化,能提高工作效率和生产力,尤其适合测试信号灯、故障码这些种类大、数据多的功能。

附图说明

图1为采用现有方法创建的可调节的控件的界面示意图;

图2为can虚拟报文列表的界面示意图;

图3为采用本发明的用于测试汽车仪表的can虚拟报文组建方法或系统组建的can虚拟报文中待测试信号的结构示意图;

图4为本发明的用于测试汽车仪表的can虚拟报文组建方法的流程图;

图5为本发明的用于测试汽车仪表的can虚拟报文组建系统的结构示意图。

具体实施方式

本发明的用于测试汽车仪表的can虚拟报文组建方法中,采用javascript对象简谱格式来进行测试用例的生成。

javascript对象简谱(javascriptobjectnotation,json)是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成,因此本方法用json格式编写测试用例,使测试者无需具备编写脚本的能力,大大降低了设计测试用例难度,并在系统软件(用于测试汽车仪表的can虚拟报文组建系统)的配合下进行can信号的自动发送。

该系统工作流程如下:

1、首先获得汽车部件厂家提供的can报文格式表,如下表:

用c#读取该can报文格式表,识别解析里面的内容,包括数据编号(messageid),数据长度(messagelength),每个信号的信号名(signalname),起始位(startbit),信号长度(signallength).填充结构体如下:

structmessage{

charmessagename[50];

intmessagelength;

structsignal*sinnals[];

}

structsignal{

charsignalname[50];

intstartbit;

intsignallength;

intphysical;

}

其中,physical是无法从报文结构表中获取的,这个需要后续进行填充。

用上述内容填充c#的数据表格(datagridview)控件,如图2所示,为两个填充后的datagridview控件所构成的can虚拟报文列表,上面的用来显示所有can虚拟报文组成的列表,下面的用来显示某个具体报文中所包含的信号。当点击上面的任意报文时,下面的datagridview控件就会显示该报文的信号信息。

2、以json格式编写测试用例(如转速测试.txt)

{"messageid":"0cf00400","signalname":"enginespeed","physicalvalue":1000},

{"messageid":"0cf00400","signalname":"enginespeed","physicalvalue":2000},

}

测试人员只需关心messageid,signalname和信号值(physicalvalue)就可以(无需在打开报文表查看各个信号的startbit,signallength等),因此测试文件非常简单易写。编写json格式的测试用例可以利用设定physicalvalue后直接填充json格式的模板形成或测试人员直接编写。

程序加载“转速测试.txt”,读取其中一行内容,获得messageid为“0cf00400”,信号为“enginespeed”,值为”1000“;1000转十六进制为3e8。

程序根据该行messageid中的数值(0cf00400),去数据库中找到其对应的can报文的具体信息,用1000填充结构体中的physical

structsignal{

charsignalname[50];

intstartbit;

intsignallength;

intphysical;

}

到此一条can报文的所有信息都已获得,可以组建报文发送数据。

3、

//初始化can

canlib.caninitializelibrary();

privateintm_channel;

//打开can设备

m_channel=canlib.canopenchannel(0,canlib.canopen_accept_virtual);

//设置波特率

status=canlib.cansetbusparams(m_channel,canlib.canbitrate_250k,0,0,0,0,0);

//初始化8个字节长度的数组

privatebyte[]msgbytes=newbyte[]{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

根据第1步和第2步中的信息填充该数组,填充后如下。

//调用canwrite函数发送该数组(can虚拟报文)

canwrite(canhandlehandle,int32id,byte[]msg,int32dlc,int32flag);

如果需要测试仪表上其他信号的显示,则更换该信号的physical或更换其他信号后重复步骤2。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1