APP下载

基于Vector工具链的CAN总线自动化测试

2015-03-05东华大学旭日学院上海201620

汽车实用技术 2015年10期
关键词:自动化测试CAN总线

周 琪(东华大学旭日学院,上海 201620)

基于Vector工具链的CAN总线自动化测试

周 琪
(东华大学旭日学院,上海 201620)

CLC NO.: U467.3 Document Code: A Article ID: 1671-7988(2015)10-110-04

引言

随着机载电子系统功能和复杂性的提高,大量的数据信息需要传输,并得到及时的处理,以往所采用的点对点式的通信方式已不能满足系统实时性的要求,同时也导致了布线的复杂性,增加了飞机的重量。总线技术的出现更好地解决了节点越多,传输效率越低的问题。它不仅便于合理配置系统资源,优化系统设计,提供系统备份冗余通道,而且也使得飞机上的布线简单,减轻了飞机的重量。

CAN总线是20世纪80年代初德国Bosch公司为解决现代汽车中众多控制与测试仪器之间的数据交换而开发的一种串行通信协议。从20世纪90年代到现在,CAN总线技术高性能和可靠性得到认可后,应用范围也逐渐扩展到控制、机械、纺织等行业。随着CAN总线相关技术的日趋成熟,以及车载平台与机载平台在某些方面的相似性,其在航空领域的应用逐渐得到重视,近年来国外的主要飞机制造商已经开始把CAN总线应用到飞机上,使飞机产品在性能改进的同时具有更高的经济性。

本文详细采用Vector工具链中的设备基于CAPL语言开发了一套CAN总线自动化测试系统,帮助开发人员和测试人员尽可能准确地定位故障,提出优化改进的方法和措施,从而提高开发效率。

1、CAN总线测试用例

CAN总线是一种开放式多主机线性结构的总线,采用非破坏性的载波侦听多路访问/冲突检测(CSMA/CD)的总线仲裁方式,避免多个节点同时发送消息而造成总线冲突,保证优先级高的报文能够优先发送。Vector工具链提供了完善的错误模拟、检测与错误处理机制,包括错误报文自动重发、错误状态判断、临时错误自动恢复、永久错误自动关闭等措施,具有可靠性高、实时性好、成本合理等优点,逐渐被广泛应用于汽车、航空等领域中。CAN总线测试内容可以按照通讯层次划分为物理层测试、数据链路层测试和应用层测试等内容。本文主要就数据链路层和应用层进行了CAN总线自动化测试系统构建。

1.1 数据链路层测试

数据链路层测试内容则包括了采样点测试、错误检测与标定测试等内容,该测试主要是为了验证各个节点的通讯参数的一致性来保证所组成的网络能够正常有效的工作。通过对CAN总线数据报文进行干扰来测试CAN系统在信号干扰和失效的情况下能否稳定工作。

1.2 应用层测试

应用层测试则包括了应用层协议的测试、网络管理功能的测试以及故障诊断测试等方面。其包括的内容:接收数据一致性测试、通讯周期精度测试、节点休眠唤醒功能测试、网络管理功能测试、网关测试、错误帧频率测试、电压影响测试、总线物理故障测试、节点故障自恢复能力测试、通讯失败的故障诊断功能测试等内容。根据CAN总线使用背景的不同,应用层测试的内容也存在较大差异,需要根据项目的设计需求以及设计文档仔细制定应用层测试的内容。测试用例示例如下表所示。

表1

2、测试平台硬件构建

测试平台的硬件构成以德国Vector公司的总线测试工具为核心,主要包括CAN总线仿真软件CANoe、CAN总线示波器CANscope、CAN总线干扰仪CANStress、稳压电源等工具设备。CAN总线测试平台硬件框架图如图1所示。

3、测试平台软件开发

测试程序的开发以自动化测试为目标,主要包括测试程序脚本和人机交互接口(HMI)两部分。程序开发工具主要基于CAN网络测试软件CANoe。该软件集成了测试编程语言CAPL(CAN access programminglanguage)和人机交互界面设计Panel Editor等多项工具的集成化CAN总线测试工具。CAPL是一种和c语言类似的编程语言,用它可以对每一个虚拟的控制系统进行编程。CAPL语言程序是基于事件触发的程序,可由总线事件、键盘事件或时间事件实现触发功能。同时,在CANoe中集成了大量可以由CAPL语言直接调用的用于控制CAN网络的系统函数,为整个测试功能的实现提供了极大的便捷性。本测试系统的测试程序脚本,主要通过CAPL语言编程实现。

3.1 测试面板设计

人机交互界面设计工具Panel Editor集成了诸如开关、车窗、仪表盘、点火开关、门锁和按钮等大量的图形控件,它以环境变量为媒介,将图形控件与对应的信号及变量相链接,实现了形象化的图形界面。图2描述的是测试程序控制界面。测试程序的运行集成于CANoe软件,它运行于PC机,通过CAN总线通信模块CANcaseXL与CAN总线实现物理通信。

3.2 建立数据库

CANdb是集成在CANoe中的数据库编辑软件,由它创建的CAN网络库文件又称为DBC文件。在创建DBC文件时,需要将网络应用层所定义的参数按照从高到低的层次依次输入数据库中,即从创建网络节点开始,根据网络应用层定义的节点信息创建各节点,再在各个节点下创建属于该节点的报文,同时明确该节点需要接收的报文和信号;最后在每条报文下创建属于该报文的信号内容。编码格式和换算公式——根据换算公式,可将实际的物理值信号换算成适于计算机辨认和发送的十六进制值信号值,便于网络间的传输。

另外,还需定义与各节点相关的环境变量,将其作为该节点的信号输入设备或信号输出设备。信号输入设备例如传感器、开关、按钮等,信号输出设备例如执行器、灯光、显示屏等。

数据库建完后将其导入到CANoe软件中,实现CANoe网络架构的搭建。

3.3 编写CAPL语言程序

按照测试用例,结合操作界面,我们利用CAPL语言编制了数据链路层、应用层协议以及总线物理故障的自动化测试程序。

3.3.1 数据链路层测试

数据链路层以采样点测试为例,采样点是读总线电平并解释各位值的一个时间点,是发送接收消息的时间基准。在实际的系统设计中,无论发送节点还是接收节点均从位时间的同步段开始的。由于发送节点和接收节点之间存在网络传输延迟以及物理接口延迟,发送节点发送后,接收节点延迟一段时间才能接收到,因此,发送节点和接收节点对应同一位的同步段起始时刻就有一定的时延,同时振荡器时钟频率、总线波特率以及总线的最大传输距离等因素也会使得采样点产生一定的漂移。因此对采样点准确性的测试对 CAN 通信总线尤为重要,采样点的测试例程如下:

testcase CheckSamplePoint()

{

int StartFlag=-1;

//设定报文ID

CANstressSetTriggerId (600);

//设定干扰模式和次数

CANstressSetLimitedDisturbanceNumber(1,3,1);

CANstressSetDisturbanceSequence("uuuuuuuuuuu111uu", 1);

ErrorCountFlag=0;

//开启例程

StartFlag=CANstressStart();

if(StartFlag==0)

{

StartFlag=-1;

SetTimer(CANoeSendMsg,100);

CANstressWaitForFinished(5000);

CancelTimer(CANoeSendMsg);

CANstressStop();

}

else {TestStepFail("CANstress does't start");

return;}

if(ErrorCountFlag>=2)

{

ErrorCountFlag=0;

TestStepPass();

testreportaddwindowcapture("Trace","","Sample Point");

}

else

{

CANstressSetLimitedDisturbanceNumber(1,3,1);

CANstressSetDisturbanceSequence("uuuuuuuuuuu000uu", 1);

StartFlag=CANstressStart();

if(StartFlag==0)

{

StartFlag=-1;

SetTimer(CANoeSendMsg,100);

CANstressWaitForFinished(5000);

CancelTimer(CANoeSendMsg);

CANstressStop();

}

else {TestStepFail("CANstress does't start");

return;}

if(ErrorCountFlag>=2)

{

ErrorCountFlag=0;

TestStepPass();

testreportaddwindowcapture("Trace","","Sample Point");

}

else TestStepFail("SUT does't send error frame");

}

TestWaitForTimeOut(1000);

}

3.3.2 应用层协议测试

在现代航空电子系统中电子控制单元不断增加的情况下,采用 CAN 总线方式的多路传输可以有效降低布线的复杂性和提高系统的可靠性。但由于软件抖动、发送延迟等影响,要求对信号的传输周期精确度满足一定的周期容差。

采用CAPL中ChkStart_NodeMsgsRelCycleTimeViolation、ChkStart_InconsistentTxDLC、ChkStart_Undefined MessageReceived、ChkStart_MsgSignalValueRangeViolation等语句分别进行报文周期、长度、有效性及信号有效性的测试。由于篇幅有限,不做一一介绍。

3.3.3 总线物理故障测试

由于飞机工作环境比较恶劣,温度、空气湿度以及振动对飞机电子设备的工作可靠性有着极大的影响,对电子设备的应用产生了较大的电磁干扰,况且飞机在飞行过程中也存在很多的不稳定因素。通过CANstress测试面板对物理层进行故障管理测试来检查DUT故障发生过程中CAN总线通信状态,并检查该故障修复后DUT能否恢复CAN总线通信行为来保证CAN通信总线对干扰源的容错能力及抗干扰能力,确保DUT通信安全可靠。主要对以下几个方面进行总线物理故障测试,如表2所示。

表2

通过图3的CANstress测试面板对物理层进行故障配置并保存,在CAPL中使用CANstressOpen语句打开配置好的CANstress文件,通过CANstressSetContinuousDisturbance UntilStop设置干扰模式,检查DUT故障发生过程中CAN总线通信状态,并检查该故障修复后DUT能否恢复CAN总线通信行为来保证CAN通信总线对干扰源的容错能力及抗干扰能力,确保飞机安全可靠的行驶。

4、结论

本文通过Vector工具链完成了CAN总线自动化测试系统的程序开发,在飞机CAN网络的初始设计阶段,可以使用该系统进行测试。给CAN总线网络设计带来极大的方便,能够快速定位故障源来保证其安全性和可靠性,既能减少成本,又能避免设计的盲目性。

参考文献

[1] 张军.基于CANoe软件的电动汽车CAN总线测试系统的研究[J].传动系统,2012(09).

[2] 于新瑞.汽车CAN总线测试平台的构建与应用 [J].机电一体化,2013(08).

[3] 彭承荣,覃华强,彭杨.基于Vector工具链的汽车CAN总线测试 [J].现代制造技术与装备,2014(04).

[4] 牛玉荣,田勇,梁赟.CAN总线测试规范及测试技术研究[J].第十届河南省汽车工程技术研讨会.

[5] 王博.车载舒适系统CAN总线网络仿真[C].吉林大学论文集, 2013.

使用维修

摘 要:CAN总线作为实现ECU节点间数据交互的主体,由于其总线长度、总线负载、终端电阻各不相同,可能导致无法针对实际工况进行优化。为了提高数据通信的可靠性,通过Vector工具链开发了一套自动化程度高、可靠性高、通用性强、开放性好的自动化测试系统,帮助开发人员和测试人员尽可能准确地定位故障,提出优化改进的方法和措施,从而提高开发效率。

关键词:CAN总线;自动化测试;CAPL;Vector

10.16638/j.cnki.1671-7988.2015.10.040

CAN bus automatic test based on Vector tools

Zhou Qi
(Donghua university institute of the rising sun, Shanghai 201620 )

Abstract:As the main body of the data interaction between ECU nodes, CAN bus can be used to optimize the actual conditions due to the different bus length, bus load and terminal resistance. In order to improve the reliability of data communication, Vector tools has developed an automatic test system with high degree of automation, high reliability, high reliability, and good opening. It helps developers and testers as far as possible to accurately locate faults, put forward the optimization method and measures for improvement, so as to improve the development efficiency.

Keywords:CAN bus; automatic test; CAPL; Vector

作者简介:周琪,工程硕士,就读于东华大学旭日学院工业工程专业,现主要从事精益制造管理方面的研究。

中图分类号:U467.3

文献标识码:A

文章编号:1671-7988(2015)10-110-04

猜你喜欢

自动化测试CAN总线
Hadoop性能测试自动化研究
数据驱动和关键字驱动的研究与应用
浅谈空调控制器自动化测试
论网络通信技术
基于嵌入式的汽车辅助制动系统研究
CAN总线通信技术在电梯监控系统中的应用
基于多总线结构的电路板测试系统设计研究
航空航天与国防电子新形势下自动化测试系统的应用
基于CANoe的J1939协议在ECU通信中的应用
基于CTI—TET和SeleniumWebdriver的Web应用自动化测试框架的设计与实现