在上一期文章《Step by Step学习CANoe三大工具链(上)》中,向大家介绍了CAN网络的规划与设计,并定义了网络中节点之间报文收发逻辑的通信矩阵。今天我们将继续与大家分享CANoe中的仿真、面板设计和CAPL程序设计,让你的Demo running起来!
图1 CANoe Demo流程图
网络仿真与实现的四个步骤:
图2 CANoe中Simulation Setup导入数据库
以控制(Control)面板为例,点击工具栏的Tool->Panel Designer,新建面板,命名为Control.xvp,并保存。
在面板上从右侧Toolbox拖入需要的Switch/Indicator控件(点火开关)并适当调整大小,如图3所示:
图3 添加Switch/Indicator控件
Switch/Indicator控件右侧的属性(Properties)窗口,选择Image属性添加控件的填充图片,如图4所示:
图4 选择填充图片
图4 选择填充图片
注意:位图文件来源于CANoe安装目录下的Demo工程中的位图,路径为C:\Users\Public\Documents\Vector\CANoe\Sample Configurations11.0.42\CAN\CANSystemDemo\Panels\Bitmaps。
Switch/Indicator控件右侧的属性(Properties)窗口,选择Symbol属性,添加控件关联的Symbol(Signal/Environment Variable/System Variable/Service Signal),如图5所示:
图5 控件的环境变量关联
完成以上步骤,设计完成的Control面板如图6所示。
图6 Control面板的界面
以上介绍了数据库(.dbc文件)和面板设计的基本步骤,为了把数据库中的元素和面板上的各个控件关联起来,进而实现各个节点的功能,还需要编写各个节点对应的CAPL程序。
1. CAPL编程简介
CAPL是一种类C的编程语言,CAPL程序必须通过编译才可执行。CAPL的可执行文件扩展名为*.cbf,编译可通过菜单命令、工具条按钮、或快捷键来激活,信息窗格显示编译信息,通过错误信息定位错误。一个完整的CAPL程序包括三个部分,如图7所示:
(1)申明与定义全局变量(变量)
(2)各种事件过程
(3)申明与定义自己的函数(自定义函数)
图7 CAPL程序的组成部分
2. EngineECU的CAPL程序设计
点击Simulation Setup中EngineECU上的
新建该节点对应的CAPL程序,命名为engine.can,并保存在Nodes文件夹中,如图8所示。
图8 CAPL Browser的界面
首先在variables中声明和定义需要用到的全局变量,如图9所示。
图9 全局变量的声明与定义
在Vector CAPL Browser的左侧的System右击->New Event Handler,新建on start事件的句柄。
on start
{
write(“this is CAPL of EngineECU!”);
}
在Vector CAPL Browser的左侧的System右击->New Event Handler,新建on envVar事件的句柄,如图10-11所示。
图10 新建on envVar事件的句柄
图11 on envVar事件的处理过程
编写好CPAL程序后点击工具栏的
或键盘的快捷键F9)来编译CAPL程序,在下方的Output窗口会显示编译成功或错误的信息。
在CANoe中的下方Desktop新建一个桌面,命名为UI,将需要用到的控件面板、Graphics窗口和Data窗口等布局好并保存桌面。连接带有License的硬件接口卡(如VN1630),在CANoe中点击工具栏的
行仿真,在面板上操作各个控件查看对应的控制和显示效果,如图12所示。
图12 仿真运行效果
到这里,一个简单的CANoe Demo就实现了,赶快动手试试吧!

相关精彩推荐:

![]()
怿星一意,专注车载
引领汽车科技新高度


