概述
网关(CGW)是智能化汽车核心的控制器之一,其承担车载网络通信的传输与转换,是不同总线数据的交互枢纽,用于CAN、LIN、Ethernet、FlexRay等总线的数据转发路由。
正式由于网关功能的特殊性,其测试方法也与其他控制器有一定的差异,各个协议在网关上的实现也有其他的特性。本文主要介绍如何使用一些基础的测试设备,搭建脚本完成网关的通讯测试,此方案主要介绍CAN、LIN、Ethernet(RJ45),BroadR-Reach车载以太网、I/O输入 这些测试环境的搭建,具体的测试用例实施和执行还需要根据情况进行开发。
系统组成
主机部分
带有Linux系统的电脑或树莓派
软件组成
Linux操作系统(Ubuntu):作为测试主机,运行测试软件和脚本。
Python开发环境 :用于运行控制脚本,目前多数的测试设备都提供了python接口,开发简单、效率高。
open ssh:用于远程主机控制,实现测试的远程自动化管理。
expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式输入指定字符串,即可实现交互通信。
canutils : linux下的CAN通讯测试工具包,用于CAN测试的配置,数据解析。
以上只是测试实施需要的工具,如果需要进行测试任务管理,可能还需要Jekins、Redmine等系统结合实现,关于测试管理,后续再介绍分享。
硬件组成
CAN 、LIN 通讯卡:用于CAN、LIN报文的收发,支持python接口的任何接口卡即可,主流的有:Vector VN系列,Intrepidcs ValueCAN,PCAN,Kvaser等。
以太网转换设备: 用于将普通四线以太网与BroadR-Reach互相转换,可选用Intrepidcs 的Moon或Technika的设备。
USB HUB: USB接口扩展,由于网关的CAN、LIN接口较多,且还需要接入其他设备,USB接口需要扩展。
以太网交换机:多路以太网接口扩展。
arduino开发板:I/O模拟控制,模拟I/O信号,如硬线刹车信号。
定制PCB板:将网关的CAN、LIN、以太网接口、 从线束转到电路板上,方便与测试设备接口连接,并且为网关提供供电、信号指示灯。
系统示意图如下:
使用Python脚本实现的主要功能
- 通过网络接口卡提供的python库实现报文收发解析,保存Log数据。
- 解析DBC、ldf文件,进行ECU节点仿真,向网关发送对应报文,接收网关发送的报文。
- 根据测试用例,控制数据变化,识别网关反馈的数据是否正确。
- 发送诊断指令,确认网关对诊断路由功能是否正常。
- 根据测试数据判断测试结果,生成html格式的测试报告。
该系统使用到的python库参考:
https://github.com/eerimoq/cantools ,实现CAN、LIN数据库和报文信号解析
https://github.com/intrepidcs/python_ics , ValueCAN接口卡 Python库