admin 管理员组

文章数量: 1086019


2024年3月22日发(作者:问道手游源码分享网)

£

技朮交*

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.

#

Weifang

261061

#

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-

),

工程师,

硕士

主要

从事内燃机电控测试工作及研究

构上看

.NET

框架包括

3

个主要组成

(

CLR

Common

Language

Runtime

)

月艮务扌匡架

(

Service

Framework

)

和上层的

应用

传统的

Windows

应用

程序模板

(

Win

Forms

)

和基于

的面向

Web

的网络

随着计算机

电子等学科领域在汽车上的广泛应用

车电控系统日益复杂成为必然趋势

电子模块的增加导致汽

车故障诊断的难度也越来越大

ECU

诊断工具在国内得到了

迅速发展和普及

应用程序模板

(

Web

Forms

Web

Service

)%

11-13

(

CLR

)

内存

、线

代码执行

代码安全验

编译及其他系

为确保诊断工具的可靠性

针对其

API

接口测试的工作

凸显重要性

传统的手动

AP

I

接口测试效率低下

位于

CLR

之上

在的

发人员希望在标

度低

集合

输入/

输出

字符串

得不到

%

2

1

1

ECU

诊断工具

及数据

使用这些可重用型集

大大

了发效率

.NET

本众多

适配的

ECU

平台多化

发及试

等问

Python

脚本

ECU

诊断工具的

API

接口命令用需

连接和

ECU

信的硬接口备

将文的

ECU

诊断工具

API

命令

AP

I

接口

动用

诊断工具跨

ECU

平台的

及接口工作

大的

在的

.dll

文件添加到基于

Visual

Studio

2015

C#

Win

Forms

的引用文集

编写好的

Win

Forms

测试要

返回正确

Python

EC

U

诊断

试用

确效地

的测试

以获取故障码信息为例

如图

1

所示

为下一

成对诊断工具的开发测试工作

%

3

"

9

1

Python

编译

依据

标平台选择

Any

CPU

是将

集编译为在任意

也就在

32

Windows

上按照

32

64

!

基于

.NET

框架的

AP

I

接口命令调用实现

Visual

Studio

是目前流行的

Windows

平台应用程序开发平

平台上

Windows

上按照

64

文的

ECU

诊断工具

API

命令所

,其

.NET

(

C++

C#

在的

.dll

文为

32

勾选了

"首选

32

(

P

)

”选

编译配置界面如图

2

VB

J#

语言等)

收稿日期

:

2019-10-15

发和

10

1

从层次结

"车电%

2020

年第

5

75

'()

T

技朮交.

3

Technical

Communication

List

ecus

=

new

List()

:

DataTable

infor

=

new

DataTable

();

DataTable

inforl

=

new

DataTable

();

int

result

=

100;

1

个引用

public

Forml

()

{

InitializeComponent();

I

可题

pythonnet

库常用的命令有

DataSet

可视化工

M

故障码描述

故障码状态

■苹鯉

计电

当前故障

机油液位物理.

..

当前故障

増压器转速伎

..

当前故障

进气流璧计电.

.

当前故障

AT1FC1

扌空璽

当前故障

尿素箱空故障

当前故障

Ac

tvCode

扌艮

...

当前故障

尿亲溶液质量

当前故障

I

■卷

import

sys

(

T

)

r

(

')

#

加载

dll

文件夹路径

运行时环境

1

个引用

private

void

(object

sender,

EventArgs

List

dataflow

=

new

List

()

List

dataflowl

=

new

List()

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.

ClearDTC

0:

result

=

api.

GetDTC

(ref

infor)

Console

VriteLine(result)

;

this.

Close

0

故障码编号

P01DC

P04DD

import

clr#

erence

P0001

加载

dll

文件

from

import

*#

导入命名空间

#

('•••')

P0075

ECU

诊断工具

API

datatable

返结果中分别将

C#

list

P0466

数据类型转换成

Python

list

dictionaryo

以获取故

障码

3

Python

调用

dll

文件的

API

的结

o

3

ECU

诊断工具调用脚本开发及调试

ECU-TEST

是一

ECU

1

基于

Visual

Studio

API

命令编译运行图

|

活动

(Debug)

平台

(M):

|

活动

(Any

CPU)

软件

o

有二次开发功能强大

dSPACE

ControlDesk

NG

CarSim

ETAS

LabCar

NI

Yeristand

MatLab'Simulink

AVL

PUMA

D2T

Morphee

仿真平台和台架

而且支持

INCA

CANape

超强

W^(Y)

HILMILSIL

资源

服务

定义

DEBUG

帛量

(U)

走义

TRACE

常量

(T)

目按

F

(G):

CANoe

CANalyzer

ECU

标定诊断工具

要实现对

ECU

诊断

工具

API

命令的自

|Ai

iy

CPU

其返

结果和

INCA

中的

4

结果在

ECU-TEST

dll

dll

文件

引用路径

的工

ECU-TEST

ECU

诊断工具的调用

文件

Python

本和

API

ECU

首选

32

(P)

允许不竝代码

(F)

签名

诊断工具运行及到的其他

dll

文件

本调用流程

5

o

一个文

优化代码

(Z)

件路径下

2

编译配置界面图

4

ECU

诊断工具

API

接口自动

5

试用例演示

调用

ECU

诊断工具

连接

IN

-

CA

行诊断工具

的自

设计,

ECU-TEST

2

Pytho

n

环境搭建

Python

是一种面向对象的解释型计算机程序设计语言

信息的

API

Python

为例

Exce

l

6

o

其语法更接近自然语言

,通俗易懂且具有丰富和强大的

[

10

,

14-15

]

o

,

本实现设计

用例二次开

本文中用到

32

位的

Python3.7.4

以及它的两个库

pythonnet

import

os

import

pandas

as

pd

tblib

pythonnet

库是

python

C#

的交互模块,

tblib

诊断工具的

.dll

文件为

32

,因此选择

32

位的

库是实现其他程序对

Python

运行结果可追溯调用的模块库

ECU

def

ReadExcelDTCM

(

FilePath

,

FileName

,

SheetName

,

DFCName

)

(

,

FileName

)

,

Python

软件

o

Python3

默认米用

UTF-8

编码

,

解决了

Python2

AbsoluteFilePath

FilePath

的默认编码是

ASCII

带来的编程过程中经常遇到编码报错

api.

SetECUCWISElOA

衆壮甲

'里型国

TV

J

ddtc=api.

GetDTC

(dt

3)

def

Test

()

:

colTempCount

=

0

die

=

{}

while

(colTempCount

<

ddtc[l].)

:

li

=[]

rowTempCount

=

0

colName

=

ddt

c

[1].

Columns[colTempCount

].

Colurfame

while

(rowTempCount

<

ddtc[l].)

:

result

=

ddtc

[1].

Rows[rowTempCount][colTempCount]

li.

append(result)

rowTempCount

=

rowTempCount

+

1

colTempCount

1

die.

setdefault(colName,

li)

return

die

_excel

AbsoluteFilePath

SheetName

header=0

(

,

)

{'

故陣冯輪号

rP0001

'PQ1DC',

,

P04DD

'P0001',

'P007

'P04F8',

,

P006E

,

.

,

P0466

,

,

'POOTf.

^'0076

'POOTTj

?

?0072

,

P03ED

,

,

,P03EB

,

,

70267

,

P0266

,

]

J

'故陣码描

iS

['进气济里计电压错畀机油液位物理值超上叭

中压器转速传感器信号不可信

进气

漁重计电压

号错畀

JAMB

报文跚

CAN

接收

^

:}

?

AT1FC1

报文超时

U

尿表箱空故障

ctvCo

血报文超时

U

尿素溶液质重信

WlUTlIGl

数据长慝谱黄

CAN

接收働

T1IG1

超时错罠

IJDPM

线油门开度诸嗅

'

压力传感器可信性超下陋

J

回济泵辿压时最小压力超限

下游压力传

感器信号超过上叙

DPM

上游温度传感器不可信故障码状态汕前故障'

当前故軽

'当前故障'・

当前故障

'当前故

(T,

'当前故陣’

当前故

(T,

'

当前故障

S

'当前故障

当前故障'

当前故趴

当前故障'当前故障'当前故库

'当前'当前故障丄

'

维修指引

'

'暂无支持'暂无支持'•

暫无支持,暂无支持'

暂无支持

暂无支持

I

暫无支持

'

暂无支持

'

暂无支新厂暂无支持'

,’暂无支持'暂无支持

'暂无支捋,'暂

无支持'暫无支持

'

无支持

']}

3

Pytho

'

调用

API

命令运行结果图

76

"车电%

2020

年第

5

£

技(交*

Technical

Communication

4

测试工具关系图

6

API

命令自动测试用例流程图

print

(

[

indexs

]

.values

[

DTCM

所在列号

])

所在列号

]

[

indexs

]

.values

[

DTCM

return

DFCRow

ECU-TEST

对上述诊断工具的功能测试进行的测试用例

5

脚本调用流程图

DFCRow

((

编写步骤如图

7

=>

5

结论

本论文提供了一种使用

Python

脚本语言实现了基于

.dll

for

indexs

in

for

i

in

range

(

len

(

[

indexs

]

.values

))

if

(

[

indexs

]

.values

[

i

]

件的

API

命令调用的解决问题思路

稳定实现了对开发升级

中的

ECU

诊断工具进行接口功能的自动化测试和版本用例移

二二

DFCName

)

print

(

=RowNo

indexs+1

,

=ColumnNo

=

,

i+1

)

提高了测试效率和准确性

Test

case

Properties

Log

recordings

Signal

recordings

Trace

analysis

Test

report

-

®

a

6

-

b

A

$

#

Action

/

Name

Parameter

VECTOR=DFES_numDFC

Expectation

/

Value

1

2

|->

E)

If

(DFES_('DFC_Unused

,

)

>=

1)

Q

Calculation

Calculation

3

B

Then

4

5

6

list(set(DFES_numDFC))

('DFC_Unused')

DFES_numDFC

len(DelUnused)

|->

DelUnused

0

Else

Q

Calculation

7

8

|->

DelUnused

|->

DiagSmartDFC

S!

ProcessCsvInNewProcessPy27x86

|t

)

Loop

9

10

11

12

J

Calculation

SS

Read

Excel

DFES_numDFC[number]

(DTCM)

number

+

1

7

ECU-TEST

自动测试用例编写图

|->

SheetName='WISE13

,

;

FilePath='

|->

DTCM

§)

Calculation

>=1

1->

DTCMCount

|->

number

下转第

80

13

5

Calculation

"车电%

2020

年第

5

11

软件应用

技朮交.

3

Technical

Communication

4

)

线束在跨区域布置时

跨区域线束段不应出分支

的分支长度

7

们会将接插件拟在实际

拟线束长度

另一个线束

2

)

间位置

7

以后

7

线束否

若无法避免

主干应当留出振动量以避免振源将线束扯断

同时应当与振动包络保持

10m

m

以上的间隙

若无振动包络

边干涉

7

线束否有被磨损的风险

的情况下

应当保证与本体

25mm

以上的间隙

5

)

线束弯曲角度应当保持钝角

同时转弯处各有一个

上述情况

线束余量

7

有一种是卡扣

接插件的

路径与线束路径不同

7

通常会在其束段上增加

5mm

安装余量

3

)

固定点以保证线束固定的可靠性

6

)

固定点之间的距离应保持在

200mm

以内

在直线部

线束不能在其他零部件的

轨迹上

7

否则会影响

没有干涉的情况下

可以保持在

300mm

以内

7

)

线束为避免承受其他压力

尽量沿边

槽布置

其他零部件的

拆卸或线束

损伤

8

)

线束应远离高温区域

主以及

2.3

线束的可制性

在布置线束时

7

应当随时

师沟通

7

若设计

的产品在工艺上无法实

7

生图纸之

去沟通的

9

)

线束

插件应当属于防水接插件

线束接

7

的时间本

经济本比较高的

1

)

线束固定点之间至少有

50mm

以上的长度

7

这是保证

插件不能口朝上

避免

10

)

干区

干区线束要比湿区线束位置

上的

可以

2

)

可以防

区的水

干区

11

)

线束分支点距离卡扣至少在

30mm

以上

3M

胶带

直接的水防

应当避免

7

将高处的水

的出

为例

7

其胶带宽度一般为

18mm

,

若分支点固定点之间

的距离小于

30mm

7

则无法保证线束包扎的可靠性

,湿区

应当

应当比插件的位置低

3

结束语

只使用

Catia

软件

7

不能说自己线束布置

7

只有将

边件干涉

2.2

线束的可装配性

在布置线束时

不能

的就

仿真软件使

为线束布置

实际相结合

7

同时熟知布置原则

7

才能被称

。在

线束

一定

的可

部件的可装

7

才能设计出符合求的线束产品

天海

线束

线束

尽可能不

集团为国内龙头企业的专业线束设计制

线束

面与通

7

迎业

的经验

7

本。

FCA

上汽、

7

7

不能将部件布置在不可

无法

的位

力量

国内主

应该将部件布置在人手易于装配的位置

这样不会造

1

)

同仁一起探讨线束布置

7

为提高线束品质贡献一份自己的

件的

7

7

没有

上之

7

们将线束拉出

7

完之

件和

内。

此时

注意两点

一个是线束

参考文献

[

1

]

百度文库

.

客车线束基本设计

[

OL

]

.

https

//

.

com/view/92d3c129b9

f3f90f77c6

1

.2018-07-02.

线束一起

(

上接第

77

)

(编辑杨景

)

参考文献

[

1

]

王知学

刘晓健

庄汝科

.

汽车电子技术行业现状分析

[

J

]

.

山东科学

,

2010

(

3

)

1-6.

[

8

]

.HTTP

接口自动化测试

方法研究[

J

]

.

微型机与应用

2016

,

35

(

18

)

22-25.

[

9

]

曾北溟

.

自动化测试框架的研究

[

D

]

.

武汉

[

2

]

杨璐

.

基于

dSPACE

的车身控制系统硬件在环测试技术

研究

[

D

]

.

天津

河北工业大学

2015.

大学

2004.

[

10

]

.

Python

脚本的自动化测试平台设计及实现

.

[

J

]

.

[

3

]

ISO

22901-1

&

Road

vehicles-Open

diagnostic

data

ex

­

change

(

ODX

)

-Part1

Data

model

specification

(

First

edi

-

[

J

]

.

中国

2018

(

10

)

54-57.

[

11

]

[

12

]

[

13

]

.

tion

)[

S

]

.

2008.

2011

10

(

1

)

57-59.

[

4

]

余旭东

.

故障诊断仪在汽车检测中的应用探析

[

J

]

.

API

自动化测试工具的设计与实现

[

D

]

.

国科技财富&

2010

(

18

)

1-1.

中科技大学

2009.

.

数据分的

自动化测试框架设计与应用

[

J

]

.

[

5

]

Mike

ng

a

test

automation

framework

From

the

Developerworks

archives

[

Z

]

.

Jul

18

,

2003.

技术

2016

(

5

)

37-40.

[

14

]

王国

.

基于

Python

的嵌入式脚本研究

[

J

]

.

[

6

]

章晓勤&夏克付

.

数据驱动自动化测试技术的应用

[

J

]

.

齐齐哈尔大学学报

(

自然科学版

)

2013

,

29

(

1

)

:

23-25.

应用

2010

(

3

)

21-26.

[

15

]

Magnus

Lie

Hetland.

Python

基础教程(第

2

版修正版

)

[

M

]

.

北京

人民邮电出版社

2014.

[

7

]

王军&孟凡鹏

.

基于关键字驱动的自动化测试研究与实

[

J

]

.

计算机工程与设计

2012

,

33

(

9

)

3652-3656.

(编辑凌波)

"车电%

2020

年第

5

80


本文标签: 线束 测试 诊断 工具 故障