程序员社区

CANoe-Simulation Setup简介

在CANoe的Simulation Setup中,整个系统以图形化的方式显示网络、设备和所有网络节点,可以用CANoe硬件设备连接多路网络总线,同时在CANoe软件上创建所有的总线通道,包括LIN、CAN和Ethernet等,在每条总线上,可以添加多个网络节点或各类型的测试模块,方便测试

CANoe-Simulation Setup简介插图

在总线上右击添加网络节点或测试模块

CANoe-Simulation Setup简介插图1

Network Node

在总线上添加网络节点,也就是ECU节点,也可以叫仿真节点

网络节点上会有ECU字样

Network Node的用途有哪些?

首先需要明确的是,只要CANoe工程一运行,所有的Active Network Node都会同步运行起来

如果不想让某个节点运行,可以Deactive,有两种Deactive的方式

  • 节点上右击Deactive

CANoe-Simulation Setup简介插图3

  • 节点Configuration中选择off

右击节点选择Configuration

CANoe-Simulation Setup简介插图4

非激活状态下的Network Node是置灰的

CANoe-Simulation Setup简介插图5

由于Network Node是和CANoe同步运行,所以一般我们把事件触发的代码写在Network Node的capl中,比如说on key、on sysvar 等

这就是为什么我们在设计CANoe面板时会建立Network Node,因为其中用到了on sysvar等代码

我们想在CANoe运行期间,面板状态是可用的,而面板上的控件功能是通过事件来触发的,这也就要求在CANoe运行期间,这些事件可以随时触发,只有Network Node里的capl文件才可以在CANoe运行时随时触发所有的on事件

如何在Network Node中添加capl文件?

通过右击Network Node选择Configuration添加capl文件

CANoe-Simulation Setup简介插图6

可以在capl中编写相关事件函数,这样在CANoe运行期间,就可以随时通过触发不同的事件来实现想要的功能

CANoe-Simulation Setup简介插图7

除了用Network Node中的capl实现事件触发,还可以把它配置成某个真实节点用来仿真

比如说你获取了整车的DBC文件,里面包含了多个ECU节点及其下面的消息和信号,你想在CANoe中模拟这些节点的通信状态

首先需要导入DBC文件

CANoe-Simulation Setup简介插图8

右击Network Node选择Configuration,配置来自DBC里的ECU节点

CANoe-Simulation Setup简介插图9

配置完ECU后,还不能让它像真实的ECU那样发送周期报文,必须把交互层的dll文件添加进来

同样是在Configuration下

CANoe-Simulation Setup简介插图10

这个dll文件是CANoeILNLVector.dll,安装CANoe软件时自带,路径为:C:\Program Files\Vector CANoe 12.0\Exec32

CANoe提供了一些常用的dll文件,用户可以通过调用dll文件中的接口实现很多功能,也可以自己用C或C#语言编写函数方法生成dll,然后在CANoe中使用

CAPL Test Module

基于CAPL的测试模块,在Simulation Setup中如何使用呢?

首先添加一个CAPL Test Module

Test Module上会有Test字样

既然是基于CAPL的测试模块,必定是要添加capl文件

CANoe-Simulation Setup简介插图12

然后在capl中写入一个on key的事件

CANoe-Simulation Setup简介插图13

运行CANoe工程,点击’t’键,发现在write窗口中并没有打印“press key t”

这是为什么?

这说明CANoe运行后,CAPL Test Module并没有执行,也就不会触发里面的事件

再打开CAPL Test Module的Configuration

CANoe-Simulation Setup简介插图14

发现相比Network Node,CAPL Test Module多了start选项

可以看出CAPL Test Module并不会随着CANoe运行而执行,它有自己的执行方式,Configuration里提供了四种方式

  • immediately

立即执行,也就是CANoe运行时即执行

  • Environment variable

触发环境变量时执行

  • System variable

触发系统变量时执行

  • Key

点击某个按键时执行

或者也可以通过点击CAPL Test Module上的运行图标手动执行

CANoe运行时会变成可用状态

我们现在运行CANoe后,点击此图标看看,会发现Write窗口中报错
CANoe-Simulation Setup简介插图16

提示执行的这个测试模块无效,为什么?

执行CAPL Test Module,本质上是执行capl文件,执行capl文件,又是执行的什么呢?

我们知道capl语言类似于C#语言,而C#脚本在执行时其实是执行的里面的主函数下的函数体

所以,CAPL Test Module里的capl脚本,必须要有主函数

CANoe-Simulation Setup简介插图17

所有的测试用例的实现都在这里执行

这里记住一点

CAPL Test Module的开始是以上面的几种方式执行,而它的结束是当主函数MainTest里的代码执行完毕后就会结束

所以如果你想在CAPL Test Module中实现事件触发,比如on key或on sysvar,必须要把MainTest里的代码执行时间拉长,比如增加一个等待时间

其他几个模块

.Net Test Module是执行C#脚本的测试模块,XML Test Module是执行XML文件的测试模块, IG可以在IG面板上添加消息和信号,Replay可以回放trace

这里还有一个问题,你会发现Simulation Setup中可以添加的这些,比如Network Node、CAPL Test Module等,在Test Modules中都可以添加

CANoe-Simulation Setup简介插图18

用法其实都一样,我知道的唯一差别就是XML Test Module,在Test Modules中可以生成test cases条目,可以选择想要的test case单独执行,而在Simulation Setup中不显示test cases条目,且是一次性全部执行完

以上,打完收工,请帮忙三连哦,谢谢!


赞(0) 打赏
未经允许不得转载:IDEA激活码 » CANoe-Simulation Setup简介

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区