最近在学习CANoe,记录下学习路程,方便后续查看。参考《CANoe开发从入门到精通》和CANoe软件内附带的Easy例程,一步步去实现这个例程,稍加优化。
一、创建仿真工程
打开CANoe 16 SP4进入主界面,单击File→New可以看到CANoe提供的工程模板,如下图所示:
双击选择模板CAN 500kBaud 1ch,将生成一个空白的支持单通道的CAN总线仿真工程。将该工程命名为Demo.cfg,并将其保存在文件夹Demo下。Demo下面分别创建文件夹CANdb、Panels和Nodes。
二、总线数据库设计
1、在CANoe主界面,单击Tools,选择CANdb++ Editor,单击进入Vector CANdb++ Editor界面
2、选择File→Create Database命令新建数据库文件,此时可以查
看到软件自带的数据库模板,如下图所示:
选择Vector_IL_Basic Template.dbc作为模板,创建一个文件名为Demo.dbc的数据库,并将其保存到上面已创建的仿真项目Demo的文件夹CANdb中,如下图所示:
3、右击Networks下的Demo,选择Edit Network进入总线属性编辑,如下图所示:
处将Definition中的Protocol属性改为CAN总线。确定后退出。
4、右击Network Nodes,在快捷菜单中选择New,新建一个Name为Engine的网络节点,Address设为0x1,如下图所示。
同样的方法,再创建一个名称为Light的节点和一个名称为Display的节点,并保存。如下图所示:
可以看到当定义了一个网络节点后,CANdb++会自动添加一个相同名字的ECU,并且二者之间是相互关联的。(在CAN数据库中并不能直接创建ECU, CANdb++会在创建网络节点的同时,创建一个名称相同的ECU)
5、右击Message选择New,创建一个名为EngineState的报文,选择标准CAN(CAN Standard)报文,标识符为(ID)0x123,数据长度(DLC)为2,如下图所示:
在Transmitters选项卡下单击Add按钮,将Engine添加到发送节点。在
Transmitters设定界面中指定了该报文由节点Engine发送,如下图所示:
用同样的方法,创建名为LightState的报文,选择标准CAN(CAN Standard)报文,标识符(ID)为0x321,数据长度(DLC)为1,发送节点为Light。
创建完成后,在左边导航区中,EngineState与LightState报文已经被添加到节点Engine和Light下,在右边栏中显示了这两个报文的属性,如下图所示:
6、右击Signal选择New,创建信号EngineSpeed,在Defintion选项卡下设置Length为15b,Byte Order为Intel,Unit为r.p.m.,Value Type为Signed, Maximum为5000,其他设置可以使用默认值,如下图所示:
在Messages选项卡,点击Add,将该信号关联到报文EngineState中,如下图所示:
用相同方法,按下表属性,添加信号OnOff、FlashLight和HeadLight。