发动机电子控制单元测试软件的设计
1 引言(Introduction)
随着技术的发展,电子产品的日益更替,为了验证汽车电子控制单元(ECU)的控制策略逻辑的正确性,保证产品质量,测试是必不可少的环节。ECU产品复杂度越高,测试越复杂,测试需求也就越多,为了确保测试中覆盖所有的ECU工况测试点,人工测试已经远远不能满足,并且人工可能会出现错误,费时费力。因此采用测试软件对测试系统进行测试成为人们关注的热点。测试软件能有效地将人力测试行为转为为机器执行测试,具有节省人工、缩短测试时间、提高测试效率等优点[1-3]。比如,中国西南电子技术研究通过利用QT语言和python语言所设计的嵌入式软件自动化测试及管理系统,有效地提高了测试效率和质量[4]。吉林大学所设计的汽车发动机电子控制单元的测试软件,利用Visual C++6.0和Dreamwaver两款编程软件,结合SCPI指令,提高了发动机ECU测试效率,并可对动态数据进行监控[5]。此外,目前一些测试软件的开发较多利用图形化编程软件LabView和测试管理软件TestStand[6],通过在LabView中调用TsetStand编写的测试序列,从而达到自动测试管理,提高测试效率。
本文通过对测试软件的研究,结合当前应用的发动机电子控制单元测试系统,设计一种测试软件。该测试软件通过前台界面与后台数据库进行信息交互,将数据化的东西转变成图形化按钮,使得测试用例的配置简单易懂,数据方便管理,从而提高发动机电子控制单元的测试效率。
2 设计要求(Design requirements)
发动机电子控制单元(ECU)涉及发动机运行状态,是汽车的核心,其运行状态的复杂性决定了发动机ECU需要测量的工况点数据众多,单一靠人工去测量费时费力。因此通过对前人测试软件的研究,结合目标ECU测试系统,所设计的软件需具备以下要求:
(1)测试用户权限可管理,支持多用户操作,且每个用户的记录可保存;
(2)应有足够的数据空间,可供发动机ECU众多工况点的存储;
(3)发动机ECU测试用例配置简单,测试流程简易;
(4)测试记录数据可保存、查询、导出,方便管理;
(5)测试软件运行稳定,易于维护和升级,界面简洁美观。
3 系统框架设计(System framework design)
发动机ECU测试系统软件的设计主要由六部分组成,分别是用户登录管理、通讯连接模块、测试标准模块、测试数据配置模块、测试执行模块、测试记录模块。软件各模块的编写语言采用C#,它是一个面向组件的程序语言[7],易于学习,易于移植,灵活性高,是微软公司为.NET Framwork量身定做的程序语言。用户的测试数据管理采用SQL Server 2005,有着加密功能,安全性更高,全局搜索性更强,数据存储量更大[8]。此外,软件的开发需要特定的开发环境,采用与C#有着密不可分的Visual Studio 2015平台进行软件开发,Visual Studio功能强大,集成了很多.NET程序,能更好的将C#与.NET Framework进行交互,界面设计直观化、图形化。图1为测试软件的系统架构图。
图1 软件系统架构图Fig.1 Software system architecture diagram
4 通讯接口设计(Communication interface design)
软件与硬件数据信息的交互,往往需要一定的通讯方式,常见的TCP\IP通讯、蓝牙通讯、CAN通讯等。对于本文所研究的发动机ECU,测试系统采用CAN通讯连接。CAN报文的数据传输是基于一定波特率进行的,报文支持11位标准消息帧和29位扩展消息帧[9]。由于绝大多数测试软件运行在个人电脑上,而自动测试设备往往不具有与个人电脑硬件接口相匹配的CAN接口,无法直接进行CAN报文信息传输。通过选用某型号USB-CAN设备,把CAN报文形式转换为个人电脑可识别的报文信号,从而实现测试软件与测试系统设备的通讯。USB-CAN设备往往提供API和DLL给用户进行二次开发,通过对APP和DLL的调用和程序编写,从而来设计符合用户自身的CAN通讯接口程序。图2为CAN通讯接口设计流程图。
图2 CAN通讯接口设计Fig.2 CAN communication interface design
首先使用DWORD CanOpenDevice(DWORD DevType,DWORD DevIndex)函数打开设备,DevType表示设备类型,DevIndex表示设备号;若设备打开成功,使用DWORD__stdcall InitCan(DWORD DevType,DWORD DevIndex,DWORD CANIndex,P_INIT_CONFIG pInitConfig)函数去初始化CAN设备,CANIndex表示第几路CAN,pInitConfig表示CAN报文设置的结构体,定义报文传输形式。结构体内容如下:
{AccCode;AccMask;Reserved;Filter;Timing0;Timing1;Mode;}