在现代汽车工业中,车载测试是确保车辆电子系统可靠性和功能性的关键环节。而使用CANoe创建仿真工程,不仅能够模拟真实的车辆环境,还能大大提升测试效率和准确性。那么,CANoe是如何实现这些的呢?
车载测试中,为什么选择使用CANoe创建仿真工程?它具备哪些独特的功能和优势,能够在复杂的车载系统测试中脱颖而出?

CANoe是由Vector Informatik公司开发的一款功能强大的仿真和测试工具,广泛应用于汽车电子系统的开发与测试。以下是CANoe在创建仿真工程中的几个关键优势
一、创建仿真工程
1、在某盘符下创建一个文件夹,命名为testpanel(自定义,与项目相关),在文件夹testpanel下面分别创建CANdb、Panels和Nodes文件目录

2、打开CANoe,单击File→New,双击选择模板CAN 500kBaud 1ch,命名为testpanel.cfg,并保存到文件夹testpanel下

二、添加CAN数据库
1、新建CAN数据库
(1)单击Tools功能区的CANdb++ Editor(CAN数据库编辑器)
(2)在CANdb++ Editor界面中单击File→Create database并选择CANoe Template.dbc作为模板

(3)保存名字为testpanel.dbc到工程testpanel下面的文件夹CANdb中

2、添加报文和信号
(1)在Messages下面创建一条报文Msg1,DLC更正为1

(2)在Signals下面创建一个信号sSwitch

(3)将信号sSwitch拖拽到报文Msg1下面
3、添加数据库到工程中
进入Simulation Setup窗口,单击Networks→CAN Networks→CAN→Databases,右键add,将testpanel.dbc文件加入仿真工程


三、定义系统变量
单击Environment→System Variables(系统变量)→鼠标右键new
创建一个系统变量svSwitch,设置最大值和最小值

再创建一个系统变量svLight,设置最大值和最小值
四、创建面板
1、创建开关面板
(1)单击Tools→Panel Designer(面板设计器)
(2)新建一个Panel,命名为SWITCH,并保存在文件夹Panels下
(3)Panel Designer→Toolbox→Switch/Indicator
(4)Properties(属性)中设置相关参数


2、创建指示灯面板
创建开关面板


创建指示灯
(1)单击Tools→Panel Designer(面板设计器)
(2)新建一个Panel,命名为LIGHT,并保存在文件夹Panels下
(3)Panel Designer→Toolbox→LED Control
(4)Properties(属性)中设置相关参数


五、创建网络节点
1、添加网络节点
(1)在CAN1的连接线上右击,选择Insert Network Node,分别创建两个节点ECU1和ECU2

(2)右击ECU1→Configuration→File,为该节点创建一个Switch.can文件,并将Title改为Switch

(3)右击ECU2→Configuration→File,为该节点创建一个Light.can文件,并将Title改为Light

2、添加CAPL代码
双击节点Switch或者点击节点上铅笔图样,进入CAPL Browser(CAPL浏览器),展示一个空白的CAPL模板
3、添加Switch代码
(1)单击CAPL Functions浏览框,拖拽Value Objects→On sysvar 到代码行,添加如下内容
bash
on sysvar MyNamespace::svSwitch{
// 声明一个CAN报文变量,用于报文发送
message Msg1 msg;
// 读取当前的系统变量svSwich的值,并赋值给报文的信号sSwitch
msg.sSwitch = @this;
// 将报文输出到总线上
output(msg);
//在write窗口显示系统变量svSwitch
write("%d is switch", @this);
}
这段代码使得节点Switch根据系统变量svSwitch的变化,修改sSwitch信号值,并将更新的报文发送到总线上。
(2)单击Compile,完成编译,并退出CAPL Browser
4、添加Light代码
(1)单击CAPL Functions浏览框,拖拽CAN→On message 到代码行,添加如下内容
bash
//以下为接收到Msg1报文的响应
on message Msg1
{
//将当前报文的信号sSwitch赋给系统变量svLight
@MyNameSpace::svLight = this.sSwitch;
}
这段代码将在Light节点中处理收到的CAN报文Msg1,根据报文中信号sSwitch修改系统变量svLight的值,从而实现LED指示灯的点亮或熄灭。

六、运行代码,实现仿真
点击Home界面最上角的start (闪电图标)按键,就可以执行整个的仿真工程此时点击开关按键,开关可以随着操作实现开关功效,同时LED灯也会根据开关进行灯亮或者灯灭的变化。
随着汽车智能化和电动化的发展,车载系统变得越来越复杂,对测试的要求也越来越高。使用CANoe进行仿真测试,能够在开发阶段提前发现和解决问题,降低后期修改成本,提升产品质量和安全性。这不仅符合汽车行业的趋势,也满足了消费者对高品质车辆的需求。
CANoe作为一款功能强大的车载系统仿真和测试工具,通过其多总线系统支持、强大的仿真能力和灵活的脚本编写,为车载测试提供了全面的解决方案。使用CANoe,开发者能够在虚拟环境中进行详细的测试和验证,确保车载系统的高效性和可靠性。
