智能网联汽车的迅猛发展,正在推动车载电子系统架构从传统封闭模式向开放互联模式演进。在这一过程中,车辆不再只是机械系统的集合,而是逐渐成为由传感器、执行器、控制器、通信网络和软件系统共同组成的复杂电子电气系统。
在众多车载通信方式中,控制器局域网,也就是CAN总线,正是汽车电子控制系统中应用广泛的通信协议之一。最早由德国博世公司面向汽车行业开发,具有实时性较高、抗干扰能力较强、成本较低、可靠性较好等特点,能够支撑分布式控制系统中各节点之间的数据通信。对于现代汽车而言,CAN总线承担着连接不同电子控制单元的重要作用,是车辆内部信息流转的重要通道。
随着单车所集成的ECU数量不断增加,车内通信数据量持续提升,传统依赖实物硬件和线束环境开展通信测试的方式,面临越来越明显的效率压力。如何在真实硬件尚未完全具备,或硬件资源相对紧张的情况下,提前开展通信总线功能验证,成为提升研发效率的重要问题。
通过仿真平台搭建虚拟总线环境,可以在软件开发阶段模拟多个节点之间的CAN报文传输过程,辅助开发和测试人员对总线通信功能进行验证,并通过总线监视能力观察软件运行过程中的通信数据,从而为后续实物联调和系统集成打下基础。
简单介绍虚拟CAN总线的设计实现:
-
实现can_linker总线设备,用于不同节点间CAN报文的传输。
-
实现CAN控制器设备,作为一个设备节点,用于发送或接收总线报文。
-
通信设计:所有CAN设备节点都可以连接在can_linker上,当一个CAN设备节点发送报文,首先发送给can_linker设备,can_linker设备转发给其他所有连接在该总线设备上的CAN节点,即广播给CAN总线中所有节点,再由接收节点根据报文本身特征判断是否接收这帧信息。
在虚拟仿真环境中,如何构建总线设备、连接多个CAN节点,并准确模拟报文转发和接收关系,是开展CAN通信测试的关键。基于SkyEye的虚拟CAN总线通信测试,正是面向这一需求展开。
基于SkyEye的虚拟CAN总线应用场景大致如下:

▲CAN总线应用场景
假设需要仿真上述4个SVCU计算节点,每个计算节点包含两个CPU,每个CPU上有两路CAN口,分别连接到2个CAN总线上,即CAN A、CAN B总线各自有8个CAN节点,以此来搭建仿真通信系统组用于验证多个计算节点应用系统配置的数据有效性。
以2个VCU计算节点为例,通过SkyEye搭建的目标系统拓扑结构如下图所示:

▲基于SkyEye的CAN总线交互设计
VCU_0节点包含有core_0和core_1两个虚拟目标系统,VCU_1节点包含有core_0和core_1两个虚拟目标系统,每个虚拟目标系统都有CAN_x_1和CAN_x_2设备,目标系统外部有两个can_linker总线设备模块,一个是can_linker_0,一个是can_linker_1,每个虚拟目标系统上的CAN_x_1都和can_linker_0总线相连接,CAN_x_2和can_linker_1总线相连接。
**从工程测试角度看,这类虚拟CAN总线仿真测试平台的核心价值,在于推动部分通信功能验证从实物联调阶段前移至软件开发和仿真测试阶段。**在开发早期,工程师可以通过虚拟目标系统搭建通信拓扑,观察多个节点之间的报文传递情况,验证应用系统配置是否符合预期,并在问题出现时结合总线通信数据进行排查。相比完全依赖实物硬件环境,这种方式有助于降低硬件资源不足带来的测试等待成本,也能够提升软件调试和通信验证的灵活性。