一种诊断did自动测试方法、系统及存储介质
技术领域:
:1.本发明涉及汽车测试
技术领域:
:,尤其涉及一种诊断did自动测试方法、系统及存储介质。
背景技术:
::2.目前,车用控制器的uds(unifieddiagnosticservices,即统一诊断服务)的诊断测试主要分为两个方面:诊断协议层测试以及诊断功能性测试,通常使用诊断仪进行诊断功能性测试,采用can总线开发工具执行诊断协议层测试。3.诊断命令的执行方式主要有以下两种:4.1、手动执行。诊断命令最基本的执行方式就是手动执行,该方式每一条命令均要手动操作,不仅操作繁杂,且效率较低。5.2、调用cdd(candeladiagnosticdescriptions,即candela诊断描述)服务。由capl(canaccessprogramminglanguage,即can总线访问编程语言)直接调用cdd中的相关诊断服务,以实现诊断命令的自动执行,但此种方法只能在单个项目上使用,无法实现各项目通用。技术实现要素:6.本发明提供一种诊断did自动测试方法、系统及存储介质,解决了现有的诊断测试技术无法实现各项目通用,且测试效率低下的技术问题。7.为解决以上技术问题,本发明提供一种诊断did自动测试方法,包括步骤:8.s1、根据目标测试项目,采用capl编写诊断框架脚本;9.s2、发出诊断请求,并设定待调试ecu;10.s3、调用所述诊断框架脚本,并从中获取对应的所有did配置信息;11.s4、遍历每一所述did配置信息,控制所述待调试ecu执行did诊断测试。12.在进一步的实施方案中,在所述步骤s1中,所述诊断框架脚本至少包括诊断数据、诊断流程和诊断算法;13.其中,所述诊断数据的编写包括:14.a、生成cdd配置文件;15.b、读取cdd配置文件,并从所述cdd配置文件中获取原始诊断数据;16.c、从所述原始诊断数据中提取诊断数据,将所述诊断数据转换为字节数组,并确定其字节长度;17.d、根据所述字节长度设置诊断请求大小、寻址方式。18.在进一步的实施方案中,所述步骤a包括步骤:19.a1、基于cddt模板文件新建cdd文件,根据目标测试项目和capl确定所述cdd文件的目标类;20.a2、在所述cdd文件的did库中编辑对应的did名称、服务类型和对应的数据解析关系;21.a3、编辑did的数据类型,得到did配置信息。22.在进一步的实施方案中,所述did的数据类型包括整数型数据rawvalue、枚举型数据texttable、线性数据linear。23.在进一步的实施方案中,所述步骤a1中:所述目标类包括支持读写类型和仅支持读取类型。24.在进一步的实施方案中,所述步骤s4包括:25.s41、遍历每一所述did配置信息,并判断其是否属于读写类型,若是进入步骤s42,若否进入步骤s43;26.s42、将所述诊断数据写入所述待调试ecu,执行did诊断测试,读取所述待调试ecu输出的响应数据,对比诊断数据与响应数据得到测试结果并保存;27.s43、读取所述did配置信息中的诊断数据,将所述诊断数据与期望数据进行对比,得到测试结果并保存。28.本基础方案采用capl编写基于cddt模板文件新建的cdd文件,得到诊断通用框架编写诊断框架脚本,在接收到诊断请求后设定对应的待调试ecu,遍历诊断框架脚本中每一所述did配置信息,写入到待调试ecu中进行did诊断测试,实现了did测试脚本的自动读取、测试,可提高测试效率;基于通用的测试框架,还可移植到其他项目继续使用,通用性高。29.本发明还提供一种诊断did自动测试系统,用于实现如上述的诊断did自动测试方法:包括依次连接的测试框架模块、框架调用模块、遍历did模块、测试模块、数据读写模块,以及与所述框架调用模块连接的诊断请求模块、与所述测试模块连接的ecu设定模块,所述诊断请求模块与所述ecu设定模块连接;30.所述测试框架模块用于根据目标测试项目,采用capl编写诊断框架脚本;31.所述诊断请求模块用于发送诊断请求;32.所述框架调用模块用于在接收到所述诊断请求时,调用所述诊断框架脚本;33.所述ecu设定模块用于在接收到所述诊断请求时,设定待调试ecu;34.所述遍历did模块,用于从所述诊断框架脚本中依次序的遍历每一所述did配置信息,并发送到所述测试模块中;35.所述测试模块用于根据所述did配置信息控制所述待调试ecu执行did诊断测试;36.数据读写模块,用于将诊断数据写入所述待调试ecu,并读取响应数据,或者读取所述did配置信息中的诊断数据与期望数据。37.本发明还提供一种存储介质,其上存储有计算机程序,所述计算机程序用于被上述诊断did自动测试系统加载,以实现上述诊断did自动测试方法。其中,存储介质可以是磁碟、光盘、只读存储器(readonlymemory,rom)或者随机存取器(randomaccessmemory,ram)等。附图说明38.图1是本发明实施例提供的一种诊断did自动测试方法的工作流程图;39.图2是本发明实施例提供的一种诊断did自动测试系统的系统框架图。具体实施方式40.下面结合附图具体阐明本发明的实施方式,实施例的给出仅仅是为了说明目的,并不能理解为对本发明的限定,包括附图仅供参考和说明使用,不构成对本发明专利保护范围的限制,因为在不脱离本发明精神和范围基础上,可以对本发明进行许多改变。41.实施例142.本发明实施例提供的一种诊断did自动测试方法,如图1所示,在本实施例中,包括步骤s1~s4:43.s1、根据目标测试项目,采用capl编写诊断框架脚本;44.在本实施例中,诊断框架脚本至少包括诊断数据、诊断流程和诊断算法。即根据需要执行的目标测试项目,采用capl编写诊断框架脚本中的诊断数据、诊断流程和诊断算法。其中,诊断流程、诊断算法为采用capl编写的常规手段,因此在本实施例中不再赘述。45.capl全称是canaccessprogramminglanguage,即can总线访问编程语言,是一种基于事件建模的语言,支持的事件包括:总线事件、属性事件和时间事件。did意为dataid,即数据标识符。46.在本实施例中,诊断数据的编写包括步骤a~d:47.a、生成cdd配置文件,包括步骤a1~a3:48.a1、基于cddt模板文件新建cdd文件,根据目标测试项目和capl确定cdd文件的目标类;49.其中,目标类包括支持读写类型和仅支持读取类型。cdd意为candeladiagnosticdescriptions,即candela诊断描述。50.a2、在cdd文件的did库中编辑对应的did名称、服务类型和对应的数据解析关系;51.a3、编辑did的数据类型,得到did配置信息。52.did的数据类型包括整数型数据rawvalue、枚举型数据texttable、线性数据linear。53.b、读取cdd配置文件,并从cdd配置文件中获取原始诊断数据;54.具体为,通过capl的diaggetprimitivedata函数获取原始诊断数据。55.c、从原始诊断数据中提取诊断数据,将诊断数据转换为字节数组,并确定其字节长度;56.具体为,通过arrays.tostring()转换函数将诊断字符串(即诊断数据的字符串)转换为字节数组。57.d、根据字节长度设置诊断请求大小、寻址方式。58.具体为,通过diagresize()函数设置诊断请求大小。可根据需求选择寻址方式,例如选择物理寻址。59.s2、通过diagsendrequest()函数发出诊断请求,并通过diagsettarget()函数设定待调试ecu;60.s3、调用诊断框架脚本,并从中获取对应的所有did配置信息;61.s4、遍历每一did配置信息,控制待调试ecu执行did诊断测试,包括步骤s41~s43:62.s41、遍历每一did配置信息,并判断其是否属于读写类型,若是进入步骤s42,若否进入步骤s43;63.s42、将诊断数据写入待调试ecu,执行did诊断测试,等待预设时间后(具体时长根据实际的测试过程进行设置),读取待调试ecu中输出的响应数据,对比诊断数据与响应数据得到测试结果并保存;64.在本实施例中,当识别到did配置信息为读写类型时,将执行两次测试,分别为预测和实测。因此,针对每一读写类型的did配置信息,待调试ecu内将写入两次不同的数据,分别为预测数据和实测数据。65.s43、读取did配置信息中的诊断数据,将诊断数据与期望数据进行对比,得到测试结果并保存。66.本发明实施例采用capl编写基于cddt模板文件新建的cdd文件,得到诊断通用框架编写诊断框架脚本,在接收到诊断请求后设定对应的待调试ecu,遍历诊断框架脚本中每一did配置信息,写入到待调试ecu中进行did诊断测试,实现了did测试脚本的自动读取、测试,可提高测试效率;基于通用的测试框架,还可移植到其他项目继续使用,通用性高。67.实施例268.本实施例附图中的附图标记包括:测试框架模块1、框架调用模块2、遍历did模块3、测试模块4、数据读写模块5、诊断请求模块6、ecu设定模块7。69.本发明实施例还提供一种诊断did自动测试系统,用于实现如上述的诊断did自动测试方法,参见图2:包括依次连接的测试框架模块1、框架调用模块2、遍历did模块3、测试模块4、数据读写模块5,以及与框架调用模块2连接的诊断请求模块6、与测试模块4连接的ecu设定模块7,诊断请求模块6与ecu设定模块7连接;70.测试框架模块1用于根据目标测试项目,采用capl编写诊断框架脚本;71.诊断请求模块6用于发送诊断请求;72.框架调用模块2用于在接收到诊断请求时,调用诊断框架脚本;73.ecu设定模块7用于在接收到诊断请求时,设定待调试ecu;74.遍历did模块3,用于从诊断框架脚本中依次序的遍历每一did配置信息,并发送到测试模块4中;75.测试模块4用于根据did配置信息控制待调试ecu执行did诊断测试;76.数据读写模块5,用于将诊断数据写入待调试ecu,并读取响应数据,或者读取did配置信息中的诊断数据与期望数据。77.本实施例所提供的测试系统采用各个模块实现测试方法中的各个步骤,为测试方法提供硬件基础,便于方法实施。78.实施例379.本发明实施例还提供一种存储介质,其上存储有计算机程序,计算机程序用于被上述实施例2中的诊断did自动测试系统加载,以实现上述实施例1中的诊断did自动测试方法。其中,存储介质可以是磁碟、光盘、只读存储器(readonlymemory,rom)或者随机存取器(randomaccessmemory,ram)等。80.上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。当前第1页12当前第1页12