AMT控制软件测试平台开发

2016-08-12 06:50孙名扬赵彬陈志新曹珊中国第一汽车股份有限公司技术中心长春130011
汽车技术 2016年7期
关键词:单元测试测试用例软件测试

孙名扬 赵彬 陈志新 曹珊(中国第一汽车股份有限公司技术中心,长春 130011)



AMT控制软件测试平台开发

孙名扬赵彬陈志新曹珊
(中国第一汽车股份有限公司技术中心,长春 130011)

【摘要】为提高AMT C程序离线测试的效率,利用MATLAB S-Function对C程序进行集成,使用Excel进行自动化测试用例脚本编制。通过Simulink平台对嵌入式C程序进行模型在环搭建,在项目开发前期对某款AMT控制软件进行测试及调试。所设计开发的测试平台通过了实际项目验证。在一汽自主开发的多款AMT控制软件测试中应用,形成AMT软件测试开发平台,有效提高了离线测试的效率和准确度。

主题词:AMT嵌入式软件测试Matlab

AMT是在干式离合器和齿轮变速器基础上加装单片机控制的自动变速系统。随着汽车电子技术的快速发展,在AMT控制软件开发过程中,高效快速的开发方式必不可少。一汽自主开发的9挡自动变速器就要求软件开发测试与机械执行器、变速器同步开发。开发人员通常利用C语言进行自动变速器程序的开发,但是嵌入式编译器测试方法复杂、无法与被控对象同时进行测试的缺点明显,因此将C代码嵌入到Simulink软件平台中进行离线测试,成为一种通用的测试方法。

1 S-Function使用原理

S-Function可以使用MATLAB®、C、C++、Ada或For⁃tran语言来编写。使用MEX实用工具,将C、C++、Ada 和Fortran语言的S-Function编译成MEX-文件,在需要的时候可与其它MEX-文件一起动态连接到Matlab中。S-Function使用一种特殊的调用格式与Simulink方程求解器相互作用,其与发生在求解器和内置Simulink块之间的相互作用非常相似。S-Function的形式是非常通用的,且适用于连续、离散和混合系统。C程序嵌入Simulink仿真环境示意如图1所示。

图1 C程序嵌入Simulink仿真环境示意

2 C程序嵌入Simulink搭建方法

定义了S-function模块的C MEX-file需要在仿真过程中向Simulink提供模型信息。在仿真过程中Simu⁃link、ODE求解器、MEX-file协作完成指定任务。其任务包括定义初始条件和模块特性,计算微分、离散状态和输出。Simulink与C MEX-file S-function模块的交互仍是通过S-function的回调方法,每个回调方法执行一个预定义的、实现仿真所需功能的任务。C MEX-file可以访问并修改Simulink内部用来存储S-function信息的数据结构。更多的回调方法和对Simulink内部数据结构的访问能力使得C MEX-file S-function可以实现更丰富的模块特性。S-Function内部函数回调流程如图2所示。

图2 S-Function内部函数回调示意

有两种方式可以将C程序转换到Simulink平台中,第1种方法是使用C MEX-file S-function模板文件将C文件转换成Simulink库函数并调用,第2种方法使用Simulink自带的S-Function Builder来编译C文件生成库函数。对比两种转换方式可知,通过S-Function Builder可以更易将用户提供的C代码转换到Simulink平台中。

S-Function Builder编译C文件步骤如下:

a.将C文件添加到S-Function Builder IDE编辑界面中,设置输入、输出接口数量;

b.添加C程序文件名称及位置,该处C程序文件可以是封装好的库文件(.lib)、输出文件(.o)或者是未编译的C文件(.c),添加头文件(.h)名称及位置;

c.编写S-Function与C文件的接口程序,将S-Function与C程序的输入、输出接口进行赋值;

d.调用需要被测试的函数,由于C程序文件都已经添加到S-Function中,此时各C文件函数可以进行随意调用;

e.在S-Function中选择Build,对C文件进行S-Function库文件转换,如果第1次使用S-Function编译器,需要在Matlab中输入“Mex-setup”选择默认编译工具即可。

S-Function Builder编译器如图3所示。

3 C程序嵌入Simulink测试

在S-Function Builder环境中单独调用需要被测试的函数,设置被测函数的输入、输出接口变量,程序编译后生成以“.mexw32”为后缀的库文件,将该库文件添加到Simulink的S-Function模块中。此时C程序文件已经可以在Simulink环境下运行。

图3 S-Function Builder编译器

3.1在Simulink环境下的单元测试

单元测试是指对软件中的最小可测试单元进行检查和验证。单元测试是在软件开发过程中进行的最低级别的测试活动,软件的独立单元将与程序其它部分相隔离的情况下进行测试。

Simulink环境下的单元测试,首先要将C程序生成的库文件添加到Simulink的S-Function模块中,并利用Signal builder模块作为输入模块与被测文件(S-Func⁃tion模块)进行连接,用Scope模块连接S-Function模块的输出。在S-Function中,每次调用一个函数作为被测模块,连接输入接口的Signal builder作为测试的驱动模块。连接输出的Scope作为测试的辅助模块。测试用例的编辑和设计都在驱动模块中进行。单元测试的步骤为依据软件设计说明书对软件功能进行分解,编写软件测试说明书和测试用例,按照测试用例对最小函数进行功能性的单元测试,单元测试环境搭建方法见图4。

图4 Excel嵌入Simulink测试用例示意

3.2在Simulink环境下的单元测试实例

以换挡策略模块为例进行软件的单元测试。在车辆静止时起动发动机并进行挂挡操作。为便于进行测试用例的规范化编写,在Excel中进行测试输入值的编辑,然后利用M语言将输入值导入到Simulink的Signal Builder中,当测试结束时将测试结果再从Simulink中导出到Excel。

测试用例的输入值INP_pos_ShiftLever为换挡手柄位置,INP_rpm_EngSpd为发动机转速,INP_rpm_IsSpd为输入轴转速。INP_opt_DrvMainReq为车辆运行模式请求。当手柄从空挡(INP_pos_ShiftLever=0)换到前进挡(INP_pos_ShiftLever=2)时,输出结果为请求换挡挡位为1挡(AST_gear_ReqGear=1),换挡请求模式进程(AST_proc_ASTProc)为2,表示前进方向。

在该换挡策略模块测试中使用了M语言编程技术,提高了软件测试的效率,便于进行测试用例的维护和修改。

3.3在Simulink环境下的集成测试

模型在环仿真(MIL)是仿真测试系统在Simulink平台上模拟受控对象的运行状态,通过S-Function的方式与被测ECU程序进行集成,对被测的ECU进行全方面、系统的测试。从安全性、可行性和成本上考虑,MIL测试不仅可以减少实车路试的次数、缩短开发时间和降低成本,而且可以提高ECU的软件质量、降低软件风险。本文依靠S-Function集成的方式,将用户提供的C程序和预先搭建的被控对象模型(变速器模型、整车模型、驾驶员模型、道路模型等)进行集成。在此基础上,对自动变速器控制软件程序在Simulink上进行离线仿真,检测用户编写的C程序的正确性。测试图例见图5。

图5 Simulink模型在环测试系统构成示意

模型在环测试在自动变速器载货汽车模型上进行,整车平台由Simulink环境搭建,驾驶员模型包括油门踏板、制动、手柄、转向盘、仪表组合开关等组成,整车模型则由发动机模型、变速器模型、转向系统、制动系统等部件组成,道路模型包括对轮胎的道路阻力、坡度阻力、风阻等计算组成,操作机构包括选换挡控制执行器、离合器控制执行器等。

MIL模型的测试方法和单元测试原理相同。测试用例的输入在MDL_IN模块中,输入信号为驾驶员模型中的油门踏板、制动、手柄位置、转向盘、组合开关等,实际监测的输出数据在MDL_OUT模块中,输出信号为挡位、车速、发动机转速等信息。AMT软件的各种功能如图6所示。MIL集成测试可以方便地对控制软件的各种功能及性能项进行测试。

图6 自动变速器软件功能框图

系统调度管理

·系统上电状态检测

·安全掉电处理

·执行器及传感器检测·系统工作模式调度

换挡规律

·自动换挡模式·手动换挡模式·空挡滑行模式

诊断及安全处理·故障诊断

·故障处理

·安全提示

·车辆跛行

离合器控制

·离合器位置控制·自动起步控制

·两脚离合器控制·滑磨过载保护

发动机控制·扭矩控制·转速控制·超速保护·熄火保护

变速器控制

·选换挡过程控制·选换挡位置控制·换挡同步控制

·副箱同步控制

传感器输入·输入轴转速·输出轴转速·离合器位置·传感器诊断

执行器输出

·选换挡电机控制·离合器电磁阀控制·电机故障诊断

·电磁阀故障诊断

下线检测

·整车参数刷写

·离合器摩擦点调整·传感器及驱动检测·故障诊断

3.4在Simulink环境下的集成测试实例

在MIL集成测试阶段对换挡同步程序进行测试,输入信号包括目标挡位、换挡命令,输出监测信号包括换挡力、换挡位置、发动机转速、输入轴转速、输入轴目标转速。

换挡同步过程判定如下:

a.输入轴转速与目标转速差小于20 r/min;

b.换挡传感器位置在同步设定值范围内;

c.该过程持续3个周期,进入换挡锁止;

d.该过程的换挡力输出采用位置式PID。

在对换挡同步的模型在环测试时,发现输入轴转速在挂挡时转速差过大,如图7所示。

图7 换挡同步过程出现问题的测试结果

输入轴转速是在受到接合套与齿面断面的摩擦力后才使输入轴转速与目标转速同步的,对程序进行细致分析后发现在同步成功标志判定时,位置判定和转速判定应该是“与”的关系,即程序中“或”(||)应改为“与”(&&)。

更改后的曲线如图8所示。可知,在换挡前转速已经同步,减少了换挡锁止时对齿轮的冲击。

图8 换挡同步过程更改后的测试结果

4 结束语

利用Simulink平台建立C Mex S-Function测试嵌入式C程序,能够有效解决嵌入式C程序离线测试繁琐的问题,不仅提高了软件开发效率,同时也能提高工程人员的工作效率。

利用Simulink平台进行AMT模型在环的软件搭建及离线仿真测试,解决了控制软件只能在实车或试验台上才能进行测试的问题。

通过Excel脚本导入的方式进行Simulink测试,能够解决测试效率低下的问题,提高测试用例的可读性和可维护性。

参考文献:

1肖东岳,李英堂,周强,等.基于Matlab的步进电机自动化测试系统.制造业自动化,2012,34(17):30~31.

2汪萍萍,胡献华,洪涛,等.电子电器产品嵌入式软件单元测试技术研究.工业控制计算机,2013,26(9):21~23.

3张猛,毛亮.航天嵌入式软件的单元测试方法探讨.航天器工程,2006(2):32~35.

4温剑锋,陈朋,王云鹏,等.复用技术在铁路软件测试的应用研究.第9届中国智能交通年会大会论文集,2014.

5刘思思,刘迪.飞行控制软件单元测试方法研究.软件导刊,2015(5):29~32.

(责任编辑晨曦)

修改稿收到日期为2016年1月1日。

中图分类号:U463.2

文献标识码:A

文章编号:1000-3703(2016)07-0040-03

Development of Test Platform for the Control Software of Automated Mechanical Transmission

Sun Mingyang,Zhaobin,Chen Zhixin,Cao Shan
(China FAW Co.,Ltd.R&D Center,Changchun 130011)

【Abstract】To improve the offline test efficiency of AMT C program,we use MATLAB S-Function to incorporate C program into the platform,and use Excel for the establishment of automatic test case script.Model in-the-loop establishment is made for the embedded program C with Simulink platform,and control software of an AMT is tested and debugged at the early stage of project.The designed test platform has been verified in actual project.The test platform has been applied in the control software test of several AMTs independently developed by FAW,and AMT software test development platform is established,which improves offline test efficiency and accuracy effectively.

Key words:AMT,Embedded code test,Matlab

猜你喜欢
单元测试测试用例软件测试
软件测试方向人才培养“1+X”融合研究
基于LDA模型的测试用例复用方法*
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
关于 Web 应用系统的软件测试的研究
软件测试中的测试用例及复用研究
一年级上册第五单元测试
一年级上册一、二单元测试
测试工时受限的测试策略研究
第五单元测试卷