Loading...
墨滴

jasonj333

2021/05/31  阅读:13  主题:红绯

Simulation Setup

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

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

Network Node

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

网络节点上会有ECU字样
网络节点上会有ECU字样

Network Node的用途有哪些?

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

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

  • 节点上右击Deactive
  • 节点Configuration中选择off

右击节点选择Configuration

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

由于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文件

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

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

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

首先需要导入DBC文件

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

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

同样是在Configuration下

这个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字样
Test Module上会有Test字样

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

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

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

这是为什么?

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

再打开CAPL Test Module的Configuration

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

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

  • immediately

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

  • Environment variable

触发环境变量时执行

  • System variable

触发系统变量时执行

  • Key

点击某个按键时执行

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

CANoe运行时会变成可用状态
CANoe运行时会变成可用状态

我们现在运行CANoe后,点击此图标看看,会发现Write窗口中报错

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

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

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

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

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

这里记住一点

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中都可以添加

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

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


jasonj333

2021/05/31  阅读:13  主题:红绯

作者介绍

jasonj333