£技朮交*
Technical Communication
基于ECU-TEST的ECU诊断工具API接口
自动化测试应用
邵金萍
(潍柴动力股份有限公司,山东潍坊261061)
摘要:ECU-TEST是一种内嵌Python脚本语言的ECU自动化测试软件;ECU诊断工具是一种基于Visual Stu­dio平台C#语言开发的ECU诊断测试应用程序,能够实现读取ECU中版本信息%故障码信息及进行参数标定等功能&本文基于ECU-TEST编写Python脚本,调用ECU诊断工具.dll文件中的API命令,实现了诊断工具软件升级过程中的自动化测试,保证了诊断工具开发的准确性,提高了测试效率&
关键词:ECU;诊断工具;自动化测试;Python;.dll;C#
中图分类号:U463.6文献标志码:A文章编号:1003-8639(2020)05-0075-03
The Automatic Test Application of ECU Diagnostic Tool API Based on ECU-TEST Software
SHAO Jin-ping
(Weichai Power Co.#Ltd.#Weifang261061#China)
Abstract:ECU-TEST is one kind of ECU automatic test software with built-in script language Python;ECU diagnostic tool is one kind of application software for ECU diagnostic test,which is developed by C#on the strength of Visual Studio platform;with ECU diagnostic tool,it can realize to read and write ECU program version information,diagnostic fault coding information,calibrate parameters and so on.The paper introduces serials of Python scripts compiled in ECU-TEST to call API instruction set in.dll files.This solution can be used to automatically test ECU diagnostic tool for version upgrade during developing phases so as to improve software accuracy and test efficiency.
Key words:ECU;diagnostic tool;automatic test;Python;.dll;C#
邵金萍(1984-),女,工程师,硕士,主要
从事内燃机电控测试工作及研究。
随着计算机、电子等学科领域在汽车上的广泛应用,汽车电控系统日益复杂成为必然趋势,电子模块的增加导致汽车故障诊断的难度也越来越大。ECU诊断工具在国内得到了迅速发展和普及。
为确保诊断工具的可靠性,针对其API接口测试的工作凸显重要性。传统的手动AP I接口测试效率低下、度低,得不到%1」。作用ECU诊断工具在本众多、适配的ECU平台多化、发及试等问题%21Python脚本发ECU诊断工具的AP I接口动用诊断工具跨ECU平台的和性测试要在及接口工作大的下
Python和EC U诊断试用确效地成对诊断工具的开发测试工作%3"91。
!基于.NET框架的AP I接口命令调用实现
Visual Studio是目前流行的Windows平台应用程序开发平台,其的.NET多(C++、C#言、VB、J#语言等)发和%101。从层次结构上看,.NET框架包括3个主要组成
(CLR:Common Language Runtime)、月艮务扌匡架(Service Framework)和上层的应用传统的Windows应用程序模板(Win Forms)和基于ASP.NET的面向Web的网络应用程序模板(Web Forms和Web Service)%11-13」。
(CLR)内存、线、代码执行、代码安全验、编译及其他系统
位于CLR之上 了发人员希望在标
在的集合、输入/输出、字符串及数据使用这些可重用型集大大了发效率。
.NET的API接口命令用需连接和ECU 信的硬接口备,将文的ECU诊断工具API命令在的.dll文件添加到基于Visual Studio2015C#Win Forms程的引用文集编写好的Win Forms返回正确的测试果,以获取故障码信息为例,如图1所示,为下一步Python用依据。
编译标平台选择Any CPU是将集编译为在任意平台上也就在32位Windows上按照32位在64位Windows上按照64位文的ECU诊断工具API命令所在的.dll文为32位勾选了"首选32位(P)”选
编译配置界面如图2示。
收稿日期:2019-10-15
《"车电%》2020年第5期
3
'()备T技朮交.
Technical Communication
List<string>ecus=new List<string>():
DataTable infor=new DataTable();
DataTable inforl=new DataTable();
int result=100;
1个引用
public Forml()
{
InitializeComponent();
DataSet可视化工M
1个引用
private void buttonl.Click(object sender,EventArgs
List<string>dataflow=new List<string>()
List<string>dataflowl=new List<string>()
result=api.GetLanguageList(ref dataflow)
result=api・SetLanguage(*ZH*);
api・GetDeviceList(ref dataflowl)
result=api・SetDevice(*DiagsmartUSB*):
result=api.GetECUList(ref ecus)
result=api.SetECUCWISElOA柴油中、重型国六") result=api.GetECUInfor(ref inforl);
/
/result=api.ClearDTC0:
result=api. GetDTC(ref infor)
Console・VriteLine(result);
this.Close0表(T):r
故障码描述
故障码编号
■苹鯉计电…
P01DC
P04DD
P0001
P0075
P0466
app接口测试工具
故障码状态“
当前故障
机油液位物理...
増压器转速伎..
进气流璧计电..「
AT1FC1扌空璽
尿素箱空故障
Ac t vCode扌艮文...
尿亲溶液质量…
当前故障
当前故障
当前故障
当前故障
当前故障
当前故障
当前故障
I■卷
图1基于Visual Studio的API命令编译运行图
|活动(Debug)▼平台(M):|活动(Any CPU)▼
超强W^(Y):
资源凰定义DEBUG帛量(U)
服务回走义TRACE常量(T)
目按F台(G):|Ai iy CPU▼
引用路径
叼首选32位(P)
签名
□允许不竝代码(F)
□优化代码(Z)
图2编译配置界面图
2Pytho n环境搭建
Python是一种面向对象的解释型计算机程序设计语言,其语法更接近自然语言,通俗易懂且具有丰富和强大的库[10,14-15]o
本文中用到32位的Python3.7.4以及它的两个库—
—pythonnet和tblib。pythonnet库是python与C#的交互模块,tblib 库是实现其他程序对Python运行结果可追溯调用的模块库。
ECU诊断工具的.dll文件为32位,因此选择32位的Python软件o Python3默认米用UTF-8编码,解决了Python2的默认编码是ASCII带来的编程过程中经常遇到编码报错I可题。
pythonnet库常用的命令有
import sys
sys.path.append(「…')#加载dll文件夹路径
import clr#运行时环境
clr.AddReference('•••')#加载dll文件
from…import*#导入命名空间
本ECU诊断工具API返结果中分别将C#的list和datatable数据类型转换成Python的list和dictionaryo以获取故障码为,3是Python调用dll文件的API的结果o
3 ECU诊断工具调用脚本开发及调试
ECU-TEST是一的ECU自软件,具有二次开发功能强大o其
dSPACE ControlDesk NG、ETAS LabCar、NI Yeristand、CarSim、MatLab'Simulink、AVL PUMA、D2T Morphee等HIL\MIL\SIL仿真平台和台架,而且支持INCA、CANape、CANoe、CANalyzer等ECU标定诊断工具。要实现对ECU诊断工具API命令的自其返结果和INCA中的
结果在ECU-TEST中,4。本的工是ECU-TEST对ECU诊断工具的调用。
dll文件的Python本和API的dll文件ECU诊断工具运行及到的其他dll文件一个文件路径下。本调用流程5o
4ECU诊断工具API接口自动5试用例演示
ECU-TEST调用ECU诊断工具调,连接IN-CA行诊断工具的自用设计,以码信息的API自为例,6o
Python个Exce l的本用例二次开,本实现设计
import os
import pandas as pd
def ReadExcelDTCM(FilePath,FileName,SheetName, DFCName)
AbsoluteFilePath二os.path.join(FilePath,FileName)
api.SetECUCWISElOA衆壮甲'里型国TV J
ddtc=api.GetDTC(dt3)
def Test():
colTempCount=0
die={}
while(colTempCount<ddtc[l].Columns.Count):
li=[]
rowTempCount=0
colName=ddt c[1].Columns[colTempCount].Colurfame
while(rowTempCount<ddtc[l].Rows.Count):
result=ddtc[1].Rows[rowTempCount][colTempCount]
li.append(result)
rowTempCount=rowTempCount+1
colTempCount七1
die.setdefault(colName,li)
return die {'故陣冯輪号rP0001\'PQ1DC',,P04DD\'P0001','P007匚'P04F8',,P006E,.,P0466, ,'POOTf.^'0076\'POOTTj??0072\,P03ED,,,P03EB,,70267\,P0266,]J'故陣码描iS ['进气济里计电压错畀机油液位物理值超上叭中压器转速传感器信号不可信「进气漁重计电压^:}?AT1FC1报文超时U尿表箱空故障>乜ctvCo血报文超时U尿素溶液质重信号错畀JAMB报文跚「CAN接收WlUTlIGl数据长慝谱黄,’CAN接收働T1IG1超时错罠「总线油门开度诸嗅\'压力传感器可信性超下陋J回济泵辿压时最小压力超限IJDPM下游压力传感器信号超过上叙’DPM上游温度传感器不可信故障码状态汕前故障',’当前故軽'
当前故障'・’当前故障I'当前故(T,'当前故陣’当前故(T,'当前故障S'当前故障’当前故障'「当前故趴’当前故障'当前故障'当前故库,'当前'当前故障丄'维修指引':【'暂无支持'暂无支持'•「暫无支持,暂无支持',’暂无支持「暂无支持
暫无支持'暂无支持'暂无支新厂暂无支持',’暂无支持'暂无支持'暂无支捋,'暂无支持'暫无支持'「暂无支持']}
图3Pytho'调用API命令运行结果图《"车电%》2020年第5期
£技(交*
Technical  Communication
图4测试工具关系图
DFCRow ((
for  indexs  in  df.index
for  i  in  range  (len  (df.loc  [indexs ] .values ))
if  (df.loc  [indexs ] .values  [i ]
二二DFCName )
print  (=RowNo
indexs+1, =ColumnNo  =, i+1)
图6 API 命令自动测试用例流程图
图5脚本调用流程图
print  (df.loc  [indexs ] .values  [DTCM
所在列号])
DFCRowdf.loc  [indexs ] .values  [DTCM
所在列号]
return  DFCRow
ECU-TEST
对上述诊断工具的功能测试进行的测试用例
编写步骤如图7所=>
5结论
本论文提供了一种使用Python 脚本语言实现了基于.dll 文
件的API 命令调用的解决问题思路,稳定实现了对开发升级 中的ECU 诊断工具进行接口功能的自动化测试和版本用例移
植,提高了测试效率和准确性。
Test  case  Properties  Log  recordings  Signal  recordings  Trace  analysis  Test  report
⑦-® a  6- b  A  $
图7 ECU-TEST 自动测试用例编写图
#
Action  / Name Parameter
Expectation  / Value
1胖 Read.CA
VECTOR=DFES_numDFC
|-> DFES.numDFC
2
E) If  (unt('DFC_Unused ,) >= 1)
3B  人 Then
4
Q  Calculation list(set(DFES_numDFC))
|-> DelUnused
5園 Calculation
6
0 人 Else
7
Q  Calculation
DFES_numDFC |-> DelUnused 8
S! ProcessCsvInNewProcessPy27x86
|-> DiagSmartDFC
9
□ |t )Loop
len(DelUnused)
10
J  Calculation
DFES_numDFC[number]|-> DFES.DFC
11SS  Read  Excel
SheetName='WISE13,; FilePath='G:\\ProcessSeparation\\-> DTCM
12
§) unt(DTCM)
>=11-> DTCMCount 135 Calculation
number  + 1
|-> number
(下转第80页)
《"车电%》2020年第5期
3
技朮交.
Technical Communication
软件应用
4)线束在跨区域布置时,跨区域线束段不应出分支若无法避免,主干应当留出振动量以避免振源将线束扯断。同时应当与振动包络保持10m m以上的间隙;若无振动包络的情况下,应当保证与本体25mm以上的间隙。
5)线束弯曲角度应当保持钝角,同时转弯处各有一个固定点以保证线束固定的可靠性。
6)固定点之间的距离应保持在200mm以内;在直线部位、没有干涉的情况下,可以保持在300mm以内。
7)线束为避免承受其他压力,尽量沿边、槽布置。
8)线束应远离高温区域,比、主以及
9)在区,线束插件应当属于防水接插件;线束接插件不能口朝上,避免水。
10)干区的,干区线束要比湿区线束位置高,可以防区的水干区。
11)直接的水防,应当避免的出。
压7将高处的水,之件处。,湿区应当保,同时应当比插件的位置低。
2.2线束的可装配性
在布置线束时,不能边件干涉,的就可性。在线束一定的可
性。比线束、线束,尽可能不
的本。,部件的可装性7不能将部件布置在不可、无法的位置。应该将部件布置在人手易于装配的位置,这样不会造
1)件的在之7
、以。在上之的7没有间。于7们将线束拉出来,在面件7完之将件和线束一起内。此时注意两点:一个是线束
(上接第77页)
参考文献:
[1]王知学,刘晓健,庄汝科.汽车电子技术行业现状分析
[J].山东科学,2010(3):1-6.
[2]杨璐.基于dSPACE的车身控制系统硬件在环测试技术
研究[D].天津:河北工业大学,2015.
[3]ISO22901-1&Road vehicles-Open diagnostic data ex­
change(ODX)-Part1:Data model specification(First edi-tion)[S].2008.
[4]余旭东.故障诊断仪在汽车检测中的应用探析[J].中
国科技财富&2010(18):1-1.
[5]Mike Kelly.Choosing a test automation framework From
the Developerworks archives[Z].Jul18,2003.
[6]章晓勤&夏克付.数据驱动自动化测试技术的应用[J].
齐齐哈尔大学学报(自然科学版),2013,29(1): 23-25.
[7]王军&孟凡鹏.基于关键字驱动的自动化测试研究与实
现[J].计算机工程与设计,2012,33(9):3652-3656.的分支长度7们会将接插件拟在实际间位置7再拟线束长度。另一个线束内以后7线束否边干涉7线束否有被磨损的风险。
2)上述情况线束余量7有一种是卡扣、接插件的路径与线束路径不同7通常会在其束段上增加5mm安装余量。
3)线束不能在其他零部件的轨迹上7否则会影响其他零部件的、拆卸或线束损伤。
2.3线束的可制性
在布置线束时7应当随时艺师沟通7若设计的产品在工艺上无法实7生图纸之去沟通的话7所的时间本、经济本比较高的。
1)线束固定点之间至少有50mm以上的长度7这是保证
上的可以。
2)线束分支点距离卡扣至少在30mm以上。以3M胶带为例7其胶带宽度一般为18mm,若分支点固定点之间的距离小于30mm7则无法保证线束包扎的可靠性。
3结束语
只使用Catia软件7不能说自己线束布置7只有将仿真软件使实际相结合7同时熟知布置原则7才能被称为线束布置师7才能设计出符合求的线束产品。天海集团为国内龙头企业的专业线束设计制应7在
线束面与通、、FCA、上汽、一、长、、国内主合7的经验7迎业同仁一起探讨线束布置7为提高线束品质贡献一份自己的力量。
参考文献:
[1]百度文库.客车线束基本设计[OL].https://enku.baidu.
com/view/92d3c129b9f3f90f77c61bca.html.2018-07-02.
(编辑杨景)
[8]杨,,,.HTTP接口自动化测试
方法研究[J].微型机与应用,2016,35(18):22-25.
[9]曾北溟.自动化测试框架的研究现[D].武汉:武
大学,2004.
[10].行Python脚本的自动化测试平台设计及实现
[J].中国电,2018(10):54-57.
[11].件自动化测试工研究[J].件,
2011,10(1):57-59.
[12].件API自动化测试工具的设计与实现[D].
武:中科技大学,2009.
[13].数据分的自动化测试框架设计与应用[J].
技术,2016(5):37-40.
[14]王国,克.基于Python的嵌入式脚本研究[J].计
应用件,2010(3):21-26.
[15]Magnus Lie Hetland.Python基础教程(第2版修正版)
[M].北京:人民邮电出版社,2014.
(编辑凌波)
《"车电%》2020年第5期