CAN总线的模拟仿真测试技术研究
2021-01-16林蓓
林蓓
近几年,CAN的所有功能都建立在CAN物理层可靠的基础之上,因此通讯物理层的失败及故障,直接导致CAN通讯功能以及诊断、bootloader等内容失效。本文主要介绍了采用CAN总线测试功能的深入探究,以提高CAN物理层的容错性及一致性,旨在为CAN总线打造一个坚实可靠的“地基”。
CAN测试工具的选择
来自Vector Informatik公司的CANoe(图1)是为CAN网絡的开发、测试和问题分析提供系统化专业工具链,支持分布式系统开发(从网络设计到系统集成),其中通信网络包括CAN、LIN、MOST等多种网络。CANoe的使用,可以更高效地解决V模型开发过程中的反复验证导致的成本和效率问题。
CANoe提供系统变量以对网络节点的功能总线行为进行建模。这些系统变量由系统环境的事件和状态(外部压力、温度、开关位置等)描述。可以在用户定义的控制面板上观察并有意地更改这些状态(即系统变量的值)。要在CAPL中使用系统变量,请使用SysVar(系统变量)上的事件过程类型(“对系统变量进行更改进行反应”)。CAPL函数SysGetVariablerInt和SysSetVariableInt用于读取和写入系统变量。这些语言工具和对数据库中定义的各种变量的符号访问使创建简单的原型网络节点模型成为可能。
CAN测试环境搭建
CAN的测试环境搭建主要分三个阶段。
阶段一:网络基础搭建。首先使用两个网络节点模型和关联的外围设备(即控制面板)创建完整的CANoe配置。这涉及分布式功能的实现,即用户使用鼠标左键激活开关后,第一个节点将此操作通知第二个节点。然后,第二节点激活其外围的指示灯。通过以下三个步骤在CANoe中高效地创建用于分布式系统的模型:使用消息,信号和环境变量创建数据库;创建网络节点外围设备,即控制面板;在CAPL中创建网络节点模型。
阶段二:创建可视化界面。第一步创建一个描述系统重要方面的数据库,通过通信介质(即CAN总线)在两个网络节点之间交换信息。数据库消息和信号对象可用于描述通过CAN总线进行的信息交换。简单功能可以通过一个1位信号来处理,该信号描述了第一个节点处的开关状态。此信号打包在CAN消息中,并且仅在开关状态更改时才自动发送。在第二步中,描述节点及其外围设备之间的I/O接口。每个外围元件(开关、指示灯、滑块等)都“连接”到系统变量,即连接到网络节点的CAPL程序。这两个外围元素:第一个节点处的开关和第二个节点处的指示灯。因此,必须在数据库中创建两个系统变量,例如svLight和svSwitch。CANoe提供了一个单独的应用程序Panel Designer,用于创建节点的外围设备。在当前配置中,必须为两个节点中的每个节点创建一个单独的面板。
阶段三:创建全网络仿真。在“仿真设置”中创建网络节点模型。每当激活开关时,第一个节点的模型必须发送一条消息,因此可能无法将其插入“测量设置”中。在“模拟设置”中使用两个网络节点:第一个节点提供开关位置,第二个节点通过激活或禁用小灯。在“仿真设置”中,插入新的网络节点模型,每个节点以打开特定CAPL程序的CAPL浏览器。当开关位置改变时,程序将获取新的开关值,并立即将其输出到总线上。
CAN仿真测试验证
现在开始在CANoe中测量。每当激活面板1上的开关时,指示灯会点亮。每当关闭开关时,指示灯会熄灭。“跟踪”窗口显示总线通讯(当开关位置更改时,自发传输消息Msg1)以及系统变量svSwitch和svLight的值。
总之,当今汽车CAN总线在国内外应用的越来越广泛,OEM和Tier 1应对增长的产品CAN测试需求的唯一途径是利用高效的创建脚本和自动化的测试导入。
(作者单位:温州长江汽车电子有限公司)