仿真效果:通过CAN通讯用开关控制小灯亮灭
1.新建文件
进入开始界面,仿真界面(左),分析界面(右)
2.创建database文件
总线数据库定义了总线系统中各个ECU所要发送和接收的报文。CAN总线数据库格式是DBC文件,已成为行业内的标准文档格式。
2.1新建节点:switch和light(通过dbc添加节点)
dbc即为database Tools—CANdb++ Editor
进入CANdb++Editor开始界面,新建dbc文件 File—creat database
命名为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的节点则需要将这些报文都接收
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开关