随着汽车电子的迅猛发展,汽车的功能越来越复杂,为了提升功能的可靠性,各大主机厂和供应商都在不断扩展功能测试范围,丰富测试内容。其中整车故障注入测试被广泛应用于各个功能域测试中,如智能驾驶域、动力底盘域等。本文将着重介绍一种整车总线类故障注入测试方案。
问:基于CAN总线的故障注入,大多数测试工程师已经相当熟悉。那么,如何使用CANoe来实现基于ETH的功能服务类故障注入呢?
答:我们可以将VN56xx系列设备接入以太网总线,在CANoe软件中创建一个基于CAPL语言的虚拟网关节点,该节点不仅可以实现两个以太网通道(ETH1和ETH2)之间的数据转发,也可以对特定服务进行修改后转发,同时不影响其他数据的路由,最终实现以太网总线故障注入测试。
下面依次介绍本方案的实施步骤:
1.实车中以太网总线拓扑
当前各主机厂车载以太网支持100Mbit/s或1000Mbit/s的数据传输速率,主流的以太网控制器均通过连接网关进行通信,比较典型的拓扑方式如图1所示:
图1 实车中ETH总线连接方式
2.实车ETH总线故障注入连接方式
本文将在ADAS和GW之间模拟一个虚拟网关,实现对ADAS控制器的功能服务进行故障注入测试。实车以太网总线故障注入连接方式如图2所
图2 ETH总线故障注入连接方式
在ADAS和GW之间形成断点,分为ETH1和ETH2,将VN56xx设备的port1连接至ETH1;port2连接至ETH2。此配置是利用VN56xx设备的switch特性,将ETH1接收到的数据包转发至ETH2,而ETH2接收到的数据包则转发至ETH1,以此实现数据的透传功能。
3.基于CANoe实现ETH功能服务故障注入
(1)创建测试环境
创建一个两路通道(ETH1、ETH2)的工程文件,将相同的ARXML文件分别加载至ETH1和ETH2通道,保证两通道间数据路由的实时性及正确性,如图3所示:
图3测试环境
(2)创建仿真节点
在ETH1总线上添加虚拟网关节点(Gateway),右键配置虚拟网关所分配的总线。并将虚拟网关节点的Buses设置为Ethernet1+Ethernet2(在ETH2也会同步一个Gateway节点),如图4所示:
(a)节点总线配置
(b)同步虚拟网关节点
图4总线分配虚拟网关节点
(3)测试操作界面设计
本文以雷达时间同步状态为例(基于TCP传输方式),介绍如何通过虚拟网关实现雷达时间同步状态失败的故障注入 ,表1为雷达时间同步状态参数设置。
Service ID | Method/Event Name | Method/Event ID | DataType Name | Discrete Value Defination |
0x5005 | Notif_ParkingAssistState | 0x9038 | SF_RDASts_st | 0x0:Timesyn_success 0x1:Timesyn_fail 0x2:Reserved |
表1 雷达时间同步状态
基于Panel设计的测试操作界面如图5所示,为了便于数据查看,测试面板左侧区域为CANoe采集到ADAS发送的雷达原始数据,测试面板右侧区域为通过虚拟网关所设定的雷达状态改变值。
图5 测试操作界面
我们通过trace窗口可查看ETH1采集到雷达同步状态的原始值及ETH2设定的雷达同步状态的改变值。
测试过程中,ETH1总线上收到的雷达时间同步状态是0x0(0x0:Timesyn_success),为了实现故障注入,我们可以将ETH2的时间同步状态改变为0x1(0x1:Timesyn_fail),确保GW收到时间同步故障状态数据,进而通过透传让其他控制器收到雷达错误状态并执行对该状态的故障处理,最终实现总线故障注入。
图6 ETH1和ETH2总线数据
(4)虚拟网关CAPL源码
工程师小伙伴们可能会思考,如何通过CAPL编程实现ETH2中信号的改变呢?详见图7中虚拟网关CAPL源码。
图7虚拟网关部分源码
总结
本文以实车中ADAS控制器的以太网总线类故障注入为例,从硬件连接、软件设计及测试验证等多方面进行深入讲解,有效地解决了客户痛点,为总线类故障注入提供了重要的手段,提高了整车功能的可靠性和安全性。如有问题或需求,欢迎后台留言或发送至market@dotrustech.com邮箱。