使用CANoe创建仿真项目并执行

使用CANoe创建开关控制灯亮灯灭的仿真环境

 

一、创建仿真工程

1.在某盘符下创建一个文件夹,命名为testpanel(自定义,与项目相关),在文件夹testpanel下面分别创建CANdb、Panels和Nodes文件目录

787f5a5f0e864e399a9eaf583cbd206f.png

 

2.打开CANoe,单击File→New,双击选择模板CAN 500kBaud 1ch,命名为testpanel.cfg,并保存到文件夹testpanel下


261e02fee39f4261b77dc904e08ad510.png

二、添加CAN数据库

 

 1、新建CAN数据库

 

(1)单击Tools功能区的CANdb++ Editor(CAN数据库编辑器)

 

(2)在CANdb++ Editor界面中单击File→Create database并选择CANoe Template.dbc作为模板

4586e7c863bd4569a41aacdecbaaee83.png

  1. 保存名字为testpanel.dbc到工程testpanel下面的文件夹CANdb中

76c992ff3c7f4b9d88db5e286c600fe0.png

 

 2、添加报文和信号

 

(1)在Messages下面创建一条报文Msg1,DLC更正为1

bc5060098aed4fccb2548dd52977d98b.png

(2)在Signals下面创建一个信号sSwitch

5ac8af5ef58848b1a765e0fedeae96b3.png

(3)将信号sSwitch拖拽到报文Msg1下面

 

3、添加数据库到工程中

 

进入Simulation Setup窗口,单击Networks→CAN Networks→CAN→Databases,右键add,将testpanel.dbc文件加入仿真工程

6b092eecf8ff443787ed9a324b849e80.png

ad629abcd05d479ab73e3db0b7604535.png

## 三、定义系统变量

 

单击Environment→System Variables(系统变量)→鼠标右键new

 

创建一个系统变量svSwitch,设置最大值和最小值

 

再创建一个系统变量svLight,设置最大值和最小值

 

 四、创建面板

 1、创建开关面板

(1)单击Tools→Panel Designer(面板设计器)

(2)新建一个Panel,命名为SWITCH,并保存在文件夹Panels下

(3)Panel Designer→Toolbox→Switch/Indicator

(4)Properties(属性)中设置相关参数

24c384b18e4f4bf1b153e2f620bf46ae.png

46f2bce0cae1464ead284760ae13bda0.png

 2、创建指示灯面板

创建开关面板

eb7341babe014f3e889dc40c32be0291.png

 

创建指示灯

(1)单击Tools→Panel Designer(面板设计器)

 

(2)新建一个Panel,命名为LIGHT,并保存在文件夹Panels下

 

(3)Panel Designer→Toolbox→LED Control

 

(4)Properties(属性)中设置相关参数

53a9938ce1bf473e9ca0900ec462fc74.png

c808b918f2454f16989c776d13306b41.png

 

五、创建网络节点

 

1、添加网络节点

 

(1)在CAN1的连接线上右击,选择Insert Network Node,分别创建两个节点ECU1和ECU2

 

cb0920e3329b4c2a83d66621d66d3319.png

(2)右击ECU1→Configuration→File,为该节点创建一个Switch.can文件,并将Title改为Switch

6fde30fd2b324bb593ec5c30b381c4a8.png

(3)右击ECU2→Configuration→File,为该节点创建一个Light.can文件,并将Title改为Light

6944871db30d4957998df79c8f491012.png

2、添加CAPL代码

 

使用CANoe的CAPL编写一个简单的程序

 

(1)双击节点Switch或者点击节点上铅笔图样,进入CAPL Browser(CAPL浏览器),展示一个空白的CAPL模板

 

 3、添加Switch代码

 

(1)单击CAPL Functions浏览框,拖拽Value Objects→On sysvar <sysvar>到代码行,添加如下内容

 

 on sysvar MyNamespace::svSwitch{

   // 声明一个CAN报文变量,用于报文发送

   message Msg1 msg;

   // 读取当前的系统变量svSwich的值,并赋值给报文的信号sSwitch

   msg.sSwitch =  @this;

   // 将报文输出到总线上

   output(msg);

   //在write窗口显示系统变量svSwitch

   write("%d is  switch", @this);

 }

 

这段代码使得节点Switch根据系统变量svSwitch的变化,修改sSwitch信号值,并将更新的报文发送到总线上。

(2)单击Compile,完成编译,并退出CAPL Browser

 

4、添加Light代码

 

(1)单击CAPL Functions浏览框,拖拽CAN→On message <newMessage>到代码行,添加如下内容

 

 //以下为接收到Msg1报文的响应

 on message Msg1

 {

  //将当前报文的信号sSwitch赋给系统变量svLight

  @MyNameSpace::svLight = this.sSwitch;

 }

 

这段代码将在Light节点中处理收到的CAN报文Msg1,根据报文中信号sSwitch修改系统变量svLight的值,从而实现LED指示灯的点亮或熄灭。

 

六.运行代码,实现仿真
点击Home界面最上角的start (闪电图标)按键,就可以执行整个的仿真工程
此时点击开关按键,开关可以随着操作实现开关功效,同事LED灯也会根据开关进行灯亮或者灯灭的变化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值