陈子昊 王超逸 杨超 武利伟 吕小磊 顾金龙
吉利汽车集团有限公司 浙江省宁波市 315336
随着汽车行业的高速发展,人们对汽车在安全性,舒适性等方面要求越来越高,随之而来的是关于汽车上ECU模块的种类越来越多,车型配置越来越复杂,对于EOL电检系统的脚本开发和验证的要求也越来越高,现阶段大部分的电检系统的脚本验证都是通过实车验证或者是台架验证,但是实车验证和台架验证存在以下几点问题:1.无论是实车验证或是台架验证都是需要实体资源,在紧急情况下可能很难及时得到验证。2.实车和台架验证跟脚本存在需求不同的可能,难以得到验证。3.验证效率低,可能并没有拥有新版脚本的验证条件。因此,本文提出利用VSPY通过模拟仿真外部ECU的回复,对诊断设备发出的指令进行回复,从而起到对整车电检系统脚本虚拟验证的效果。
在汽车总线仿真测试行业中,一般使用最多的为两款软件,一是Vector公司的CANOE,另外一个则是英特佩斯公司的VSPY。
Vector公司CANoe是为了开发,测试和分析整个ECU网络和单个ECU而设计的全面的软件工具,它能够参与整个开发流程,它的功能较为丰富多样,在全球大部分汽车厂和一级供应商得到广泛的应用,但是其产品分模块和功能进行销售,同时其销售的价格昂贵。
而英特佩斯的VSPY是一款专业的汽车总线仿真测试软件,专业的CAN/LIN总线分析仪,能够进行汽车故障诊断,ECU节点仿真开发,ECU自动化测试,总线数据采集,CAN/LIN线解码/破解,XCP/CCP协议的ECU标定,以及车辆网络总线数据监测。简单易学,更重要的是价格只有Vector公司CANoe的价格的1/5,购买软件就可以获得全部功能,操作方便,因此,在车辆虚拟验证台架的搭建过程中,采用VSPY较为合适,不仅提高整个搭建过程的效率,也降低了搭建的成本。
通过VSPY工具对整车EOL电检系统虚拟环境的搭建,主要利用到VSPY SPY3版本的诊断报文编辑区、功能测试项编辑区、message模块编辑区三个模块编辑区。
诊断报文编辑区中主要分为三个板块:请求报文编辑区(Receive),响应报文编辑(Transmit),数据库(database),在虚拟验证中主要用到Receive功能和Transmit功能。
请求报文编辑区主要的作用是编辑识别并比对设备发出的报文,并与Function Block功能结合,完成对设备报文的验证,如果验证比对成功则通过Function Block功能调用发送响应的报文回复。
响应报文编辑区的主要作用是编辑设备请求报文对应的响应报文,通过报文编辑区的数据报文识别设备发送的报文,通过Fuction Block中的脚本,回复响应报文区链接的报文。
Function Block功能是整车EOL系统虚拟验证的重要部分,也是VSPY中常用的脚本控制语言,它既可以在VSPY中运行,也可以用VSPY可将其编译程CoreMini写入neoVI硬件产品中脱机运行。目前Function Block大概含有三十条指令,包括常用的逻辑控制、数据记录、发送报文等。
在测试验证过程中,通过Function Block实现几点功能:1.用于判断外部设备的请求报文,然后发送相应的响应报文。2.设置诊断地址,报文响应时间,响应次数等。3.创建诊断序列,按照一定的顺序和发送响应报文。4.动态设置ECU响应的状态值。
在诊断设备开始发送报文后,我们可以通过Spy Networks-Message进入报文查看界面,所有与报文信息有关的查看均在此界面进行。
在message界面下,可以看查看各个参数,在查看CAN报文即默认状态的情况下,有以下的主要内容可以查看。
表1 message 可视化内容
虚拟验证的实现方式为将待验证的脚本release导入测试诊断仪中,然后通过通讯接口跟搭建好的台架进行数据交互,设备发出测试的DID,通过接口在虚拟台架中进行判断,然后虚拟台架会根据条件回复相关的回复DID通过通讯接口,反馈到诊断设备中,从而达到虚拟验证脚本的目的。
图1 虚拟台架的指令传输结构
如下图所示,在虚拟验证系统结构中,主要分为诊断报文编辑区和功能测试项编辑区,在诊断报文编辑区模块中,通过设置请求报文编辑区的相关的指令进行识别并比对设备发出的相关报文,通过编辑响应报文编辑区中相关数据,来进行存储相关的回复报文,两者通过Function Block进行连接,也可以理解为诊断报文编辑区起到整个虚拟验证系统的数据库的功能,Function Block从中调用已经编辑好的相关报文用来进行比对或是回复。
图2 虚拟验证系统结构
以吉利SS11车型的写入功能测试协议为例,Function Block的script类型与C语言类似,首先为if语句进行判断,判断条件为请求报文编辑区中的设置好的RX_SIM_2EF101模块,而RX_SIM_2EF101模块中编辑的报文为2E F1 01,即在lin线的数据流中,如果出现 2E F1 01的报文,即开始执行该条件下的脚本,同理Else If类同于C语言中的功能,从而实现判断不同指令执行不同的脚本的作用。
图3 function block 正反馈逻辑图(部分功能)
Wait Until语句为当前条件循环,类同于C语言中的While语句,控制脚本一直处理等待状态,直到设置的条件为真才继续往下执行。
而Transmit语句则是发送响应报文编辑区中设置好的报文,发送到数据流中,对If语句的判断条件进行回复,而最后的set value则是使这次回复的次数为1次,如果取消这个语句,则脚本会对判断报文一直循环发送回复报文。发送结束后,跳到End If语句结束脚本的运行。
通过上述操作可以验证正反馈的脚本验证,同理,也可以对相关脚本的负反馈也进行验证,流程图如下,由此可见,虚拟验证不仅可以验证脚本的正反馈,也可以测试负反馈是否会对脚本产生影响。
基于SS11车型 ESC模块进行测试验证,正负反馈均验证成功,验证总时长约3S,测试结果的部分信息如下图所示。
图4 测试正反馈部分结果
以UK lotus为例,当初版脚本导入后,经过实车验证关于脚本问题平均一周发现并解决的脚本问题为2个,而通过虚拟台架验证脚本问题一天平均发现并解决脚本问题为5个,大大提高了脚本的验证效率,降低了脚本在实车测试运行失败的风险。
提出一种利用VSPY工具,搭建整车EOL电检系统脚本验证的虚拟环境的方法,该方法也可根据编辑不同的报文模块,完成对电检脚本不同工位的进行测试。解决了当前缺少实体资源和实体资源与脚本测试条件不符的情况,同时也提高了电检系统脚本的验证效率,降低脚本的逻辑错误的概率,为后面的基地实车脚本验证提供了技术支持。