使用CANoe的IL层构建总线仿真系统+CAPL学习笔记

以下内容为自己学习笔记,若看不懂,可以去b站看视频,链接如下。

https://www.bilibili.com/video/BV1n7411n7Tm?t=2188

其中包括CANdb++创建DBC数据库文件,PANEL设计控制面板,一些简单的CAPL语言介绍。 使用软件CANoe10.0,其他版本可能会有点不一样,仅供参考。

CANdb++创建DBC数据库文件

1、在Tools下打开CANdb++界面。

2、创建一个数据库文件

创建好后,会弹出下图,选择Vector_IL_……选项。,根据提示保存(我这里是保存到工程的文件夹下)。

3、创建message(报文)

默认会弹出以下界面,其中Name、ID是必须设置的。除此之外还可以设置默认循发送的周期,见第二张图。如果后期想要修改发送周期,可以通过canoe里面设置,详细见后面。

4、创建信号–>绑定到报文帧–>分配到对应节点

补充1

批量修改报文方法,例如批量修改周期发送的时间为50ms 上图右下窗口

补充2

对于开关信号,0、1可能看起来不明显,可以设置为On、Off去区分,步骤如下 修改为自己需要的名称后,开始定义对应的description。 最后与打开需要关联的信号,添加刚才创建的Value Table。

Panel控制面板设计

这里就简单的介绍Analog Gauge与Track Bar控件。

CAPL程序

效果

实现用滑竿控制一个变量的大小。 具体演示效果去看上面网站的视频。

# CAPL学习笔记

1、常用的事件类型/CAPL事件处理

2、定时器

备注:该定时器与单片机定时器不同,定时器时间到后,定时器就关闭了,若要一直定时,需要在定时触发中重新初始化。针对ms级别定时器,有一个特别的函数,可以直接设置为循环定时。(与单片机一样,启动后,一直运行,除非执行停止命令)。

setTimerCyclic(myTimer2,200);//设置定时器myTimer2为一个200ms为周期的循环定时器;

3、消息触发

总线上接收到该ID号后,触发该事件,这里用到了“this”,具体使用,看下面解释。 this代表触发事件的对象,使用this即使用相关对象

4、消息过程

5、发送报文

6、信号/变量触发事件

7、对变量赋值/读取

这里write函数与printf函数使用未看出区别。

8、CAPL数据类型

备注:CAPL中的定义局部变量与C语言不同,具体为c语言定义变量前加上了static。

9、补充知识

①、注释程序方法与C语言一致,多行注释如下图。 ②、@与$区别

环境变量&系统变量的索引方式:@环境变量名或系统变量名 信号的索引方式:$报文名称::信号名称,物理值索引.phys

经验分享 程序员 微信小程序 职场和发展