孟丽莎
(上海汽车变速器有限公司 201807)
随着汽车行业的创新发展和变革,汽车电控系统日臻完善,现代汽车处在智能化发展阶段,最终向着全智能驾驶即无人驾驶发展[1]。据统计,汽车电子系统的技术创新在现代汽车技术创新中占90%以上[2],各整车厂和零部件厂商都在加大汽车控制器策略的研究和开发,使得汽车驾驶更舒适、智能和安全。整车电子电气控制系统中,动力控制系统的发动机和变速器控制单元占据了重要地位,是汽车动力系统的灵魂。而电控单元的开发离不开测试系统,测试工作做得越全面,系统电控单元控制策略就越安全可靠。
在电控单元控制策略日新月异的今天,测试工作也愈加繁重和复杂。而采用自动测试系统,不仅能够节省大量人力和设备资源投入,还能够减少人工测试的失误,提高控制系统的质量。当新开发项目发展到平台化的成熟度以后,采用自动化测试系统,对于项目扩展十分便利,可以用较少的人力设备资源,做较多的平台项目,同时保证拓展项目质量。
电控单元测试分为模型测试、代码测试和硬件在环测试,硬件在环测试属于半实物仿真测试,采用实际控制单元,把控制软件和硬件单元集成到一起。在仿真环境中测试,属于实车验证之前的最后测试环节,能够充分验证软件和硬件。
本文介绍的硬件在环测试系统,采用市场上成熟的dSPACE设备,包括硬件设备和软件系统2大部分。其中硬件设备的主要特点就是具有较高的运算能力,灵活性强。而软件系统则是可以方便地实现代码生成、下载、调试和实验等工作。硬件设备下位机采用mid-size的SCALEXIO机柜,包括CAN总线通讯通道,提供模拟输入、模拟输出、数字输入、数字输出、负载模拟、电源控制、电源开关、电阻仿真通道及故障注入仿真模块。软件系统上位机软件采用实验管理软件ControlDesk以及自动化测试管理软件AutomationDesk,使用MATLAB Simulink搭建整车仿真环境,通过RTI编译成SDF文件,下载到机柜中,通过上位机控制软件ControlDesk进行人机交互,操作和监控换挡杆、加速踏板和制动踏板等控制信号。电控单元采用实体控制器,将控制软件下载到控制器中,进行测试工作。数据的采集采用Vector公司的CANape软件,可以实时标定和采集数据。
Python是一种解释型、交互式、面向对象、动态语义和语法优美的脚本语言[3],其语法更贴近自然语言,可以用较少的代码实现同样功能,具有易学习、易开发和易维护的特点。自动化测试管理软件AutomationDesk本身是用Python实现的,因此可以和Python有非常好的兼容性,同时Python作为高级程序设计语言,可以与C/C++实现相互调用。用Python开发自动化测试系统,应用在其他系统管理软件时,如果没有Python的API,也可以使用C/C++语言实现兼容,通用性是很好的。使用Python开发基于dSPACE平台的自动化测试系统,可以缩短开发周期,并且通用性强。
使用Python实现硬件在环的自动化测试系统,实际上是把打开上位机软件ControlDesk、执行AutomationDesk自动程序、打开采集界面开始采集、停止采集数据、关闭AutomationDesk和ControlDesk全部用Python脚本实现,只要执行.py的脚本文件,整个测试过程全部可以完成。执行.py文件,可以用专业的PythonWin等安装程序直接运行,也可以用Linux、Windows及Mac OS的命令窗口或Shell窗口执行python命令。启动Python交互式解释器,运行.py文件,还可以通过C/C++等编程语言直接调用,或者是嵌入到一些平台管理软件,使得执行Python程序可以在事先设置好的工作任务中自动运行。
当同一个项目选择特定测试流程或者不同项目在同一个硬件在环测试设备上做交替测试时,对自动测试流程工程文件和测试环境工程的选择都可以用Python脚本实现。这只需要打开PythonWin软件运行Python脚本,就可实现测试过程全自动化。
打开关闭ControlDesk界面Python语句如下。
# The class Dispatch is used to create objects.
from win32com.client import Dispatch
# Start ControlDesk.
ControlDeskApplication = Dispatch("ControlDeskNG.Application")
# Close ControlDesk.
ControlDeskApplication.Quit()
打开测试实验工程并激活实验的Python语句如下。
# Activate the project root.
ProjectRoot = ControlDeskApplication.ProjectRoots.Item(ProjectRootPath)
ProjectRoot.Activate()
# Activate the experiment.
E x p er i m e n t = Ac t i ve P ro j e c t.E x p er i m e n t s.Item(ExperimentName)
Experiment.Activate()
# Start online calibration.
ControlDeskApplication.CalibrationManagement.StartOnlineCalibration()
# Stop online calibration.
ControlDeskApplication.CalibrationManagement.StopOnlineCalibration()
打开AutomationDesk的语句如下。
import win32com.client
TAMObj = win32com.client.Dispatch("AutomationDesk.TAM")
打开采集界面CANape,用AutomationDesk自带的Remote Calibration(COM)库实现。通过Python脚本,把打开关闭实验环境,运行自动测试流程和开始停止采集全部实现,不需要人工操作,完成自动化测试。
完成硬件在环自动化测试,需要打开实验环境工程文件,选择执行测试流程,采集数据,形成数据分析报告。Python语言可以实现上述功能,执行Python脚本,自动产生测试报告。
Python语言作为开放源代码的编程语言,可移植性和可扩展性是不言而喻的,可以与C/C++互相调用,因此通用性很强。目前很多公司都引入了平台化的管理软件,把分配工作任务和上传工作产物等工作维护在系统中。同时执行测试工作和上传测试报告也可以做在系统中,只要系统分配测试任务,就可以调用Python脚本自动完成测试任务,不再需要人工干预,自动完成测试工作。
本文讨论的硬件在环自动化测试系统,可以作为一个子系统植入到其他平台管理软件中,很多重复性的测试和回归测试都可以自动完成,节省了大量人工资源。电控单元的硬件在环测试受制于硬件资源设备,很多功能开发需要占用台架资源进行调试。而把一些通用测试和回归测试放在晚上或者周末的时间自动执行,可以节省资源设备,减少公司的设备投入,提高产品竞争力。同时,机器执行自动化测试,会减少人工失误,提高产品质量。因此,形成自动化测试系统,对于高效、高质量完成测试任务有深远意义。
本文介绍了基于Python语言的电控单元硬件在环自动化测试系统的设计和实现,使用Python脚本把打开和关闭硬件在环测试系统上位机界面、激活测试环境工程、执行自动测试流程和开始停止数据采集等功能串联在一起,只要运行.py文件,硬件在环测试过程全部完成,不需要人工干预,自动产生测试报告。该自动化测试系统,可扩展性、可维护性和兼容性强,能够应用到其他项目管理平台,可以提高测试效率和测试质量,节省人力资源,提高设备使用率,增加产品的竞争力。