CANoe仿真实例

https://www.bilibili.com/video/BV19a411T72x/?spm_id_from=333.788&vd_source=fa20d011d3ad9ab4eff2a62ee2b0b254

仿真效果:通过CAN通讯用开关控制小灯亮灭

1.新建文件

进入开始界面,仿真界面(左),分析界面(右)

2.创建database文件

总线数据库定义了总线系统中各个ECU所要发送和接收的报文。CAN总线数据库格式是DBC文件,已成为行业内的标准文档格式。

2.1新建节点:switch和light(通过dbc添加节点)

dbc即为database  Tools—CANdb++ Editor

进入CANdb++Editor开始界面,新建dbc文件 File—creat database

在CANdb++Editor主界面,选择File→Create Database命令新建数据库文件,此时可以查
看到软件自带的数据库模板,CANdb++提供了基于总线不同功能的数据库模板,每个模板按不同功能预设了不同的Attribute。选择模板,一般选择最后一个选项

命名为switch_light ,进入capl编程浏览器界面,可以编写和查看

添加节点:右键Network nodes——New

添加两个节点,分别命名为switch和light

2.2.新建报文message

右键Messages——New

命名为switch_status;

设置ID值(ID值越大优先级越高);

设置数据长度DLC为1(DLC范围为1~8字节=8~64bit)

2.3.新建信号signals

右键signals——New

命名为switch_status_signal;

长度设置为1bit(1字节=8bit,由于dlc=1字节,故此处最多8字节,用1bit存储0和1);

设置数据类型为unsigned,点击calculate minimum and maximum自动计算最值

2.4.配置报文传递信号关系和节点收发报文关系

将信号switch_status_signal拖入报文switch_status中,再将报文switch_status拖入到发送节点switch中;

双击light节点将其设置为接受节点,将信号switch_status_signal添加到Rx Message中

保存dbc,退出,完成database创建 

signal信号关联到message报文,对于节点的发送报文,以报文为单位关联到节点,但是对于节点的接收报文,需要以信号为单位关联到节点,同时也将对应的报文与节点关联

区别的原因在于:节点发送的一定是具体的具有固定ID的报文,但是接收的是包含这个信号信息的所有报文,一个signal可能被多个报文包含发送到总线上,需要该signal的节点则需要将这些报文都接收

在Networks(网络)项下,列出了当前所仿真的总线网络,数据库中的网络由一个或多个ECU组成,ECU之间通过网络节点相互通信。ECU与网络节点是一一对应的。当ECU作为网关时,一个ECU可以包含多个网络节点。                
Network Nodes(网络节点)是ECUs的通信接口,各ECU通过Network Nodes实现总线上
信息的发送和接收,每个Network Nodes包含对应的名称和地址。

2.6.导入database文件

将创建好的dbc文件加入到CANoe界面中,右键右侧节点树中Databases——Import Wizard

下一步,完成

3.制作面板

CANoe中的panel作为上位机用于和user交互

新建面板home—panel—new panel

进入面板开始界面

将控件添加逻辑意义,方法:通过创建两个系统变量sysvar分别和switch和light绑定,

panel中的控件可以通过与signal或variable绑定赋予其逻辑意义,控件状态和信号或变量值实现对应

个人理解:signal用于message中是节点最终发送到bus上的,variable用于cpal程序中是ECU中计算得到用于传递给节点用于赋值给signal的

                          

                           

第1个用于和switch绑定,第2个用于和light绑定

                                ​​​​

控件和系统变量绑定方法:home—panel——选择所创建面板panel1,再panel界面右键弹出中Edit进入面板编辑界面

                ​​​​​​​        ​​​​​​​        ​​​​​​​

在控件properties——symbol中进行绑定变量,保证控件状态和变量状态一致,switch开则switch_sysvar=1,light绑定同理

4.进入节点ECU编写代码

右键节点——configuration,先为节点创建后缀为.can文件,文件名和节点设为一致

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​  

双击节点,进入代码编写界面

light节点同理,先右键节点configuration创建light.can文件,双击节点进入代码编写界面

5.开始仿真

回到home点击start开始仿真

效果:通过左右点击switch控制开关向light节点发送can报文控制light开关

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值