使用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、创建信号–>绑定到报文帧–>分配到对应节点
创建一个新的信号(方法与上面创建messages一致),会弹出以下界面。可以根据需要设置信号名称、数据长度、数据类型、最大、最小值等。

不仔细踩的小坑:需要变量的范围是0~4000,12位就够了,但是定义时未注意,变量类型选择默认的有符号,当我调整变量值时,超过2048后(Panel中设置变量范围是0 ~ 4000),结果就显示跳到0了,后来才发现是数据类型不对。
信号创建好后,直接在左边拖拽信号到需要的Messages中即可。

messages设置好后,将对应的报文帧,一样的拖拽到对应的网络节点中(完了后,没有展开是看不出任何变化的,点击“+”展开后,就可以检查是否成功)。
到这里,数据的创建已经完成,下面是添加数据库文件(创建canoe工程,自行百度了解)。这里我们选择第二个添加方式(他可以直接将数据库中的网络节点一起添加)。

下图是添加完成的效果图。

补充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
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)