目录[-]
目录:
- 前言
- CANoe 工程创建
- 仿真环境配置
- 数据库 DB 配置
- CAPL 测试模块创建
- 工程运行与验证
- CANIG 使用
————————————————————————————————————————————————
1.前言
构建一个基础的CANoe工程并不复杂。从选择模板、配置CAN通道,到编写第一个CAPL脚本,每一步都藏着对总线通信逻辑的理解。
本文将以最小化的CANoe工程为例,一步步完成:
-
如何选择正确的工程模板(避开FlexRay等不必要协议的干扰)
-
如何建立纯净的CAN仿真网络
-
如何编写、绑定并运行第一个CAPL测试脚本
-
如何绑定DBC数据库,让报文解析更清晰
————
2.CANoe 工程创建
2.1 新建工程
1.启动 CANoe:双击CANoe图标打开软件
2.创建新配置
- 点击 File-》New
- 在弹出的模板选择窗口,选择 CAN-CAN 500kBaud 1ch(500kb波特率)
3.工程保存
- 点击保存,可以用默认的名字,也就是 CAN 500kBaud 1ch,也可以自己换一个名字。
4.创建专门的工程文件夹管理文件
CANoe_CAN/
----CAPL/ 代码(.can)
----DBC/ 数据库文件(.dbc)
----LOG/ 日志文件
----PANEL/ 面板(.pan)
----工程配置文件.cfg
目录说明:
- CAPL 文件:仿真用例、测试用例
- DBC 文件:定义 CAN 报文、信号和网络节点
- LOG 日志文件:保存BLF、ASC等格式的测量数据;生成的测试结果和分析报告
- PANEL 面板文件:用户操作控制界面或监控界面
- 工程配置文件.cfg:主工程文件,最重要的
————
3.仿真环境配置
点击 View-》Simulation Setup,默认会显示类似下图,当前总线上还没有任何ECU,是不能工作的,在添加ECU之前,我们先添加数据库文件
————
4.数据库 DB 配置
在Simulation Setup 右侧,找到 databases,鼠标右键点击,有2个按钮,Add 和 import Wizard,一般推荐第2种,它可以将数据库和绑定的节点信息一起导入。
比如我们选择第二项,会显示,有2个网络节点,ECU_01和ECU_02,可自己选择要不要导入
导入后,总线上,多了2个ECU
————
5.CAPL 测试模块创建
在现有工程的基础上,添加一个 CAPL 测试代码,回到 CANoe 工程的 Simulation Setup 页,点击图中的笔图案。
它会打开 CAPL 软件,如果未选择过文件,则会要求选择本地CAPL文件或新建;如果已经选择过,则下次自动打开该文件。
/*@!Encoding:65001*/
includes
{
}
variables{
message EMS_0x196 msg_0x196;
msTimer tmr1;
}
on timer tmr1{
// 设置报文数据
msg_0x196.dlc = 8; // 必须设置数据长度
// 设置具体数据(可选)
msg_0x196.byte(0) = 0x11;
msg_0x196.byte(1) = 0x22;
// ... 设置其他字节
// 发送报文
output(msg_0x196);
// 正确的日志输出方式
write("发送报文 ID 0x196, 数据: %02X %02X %02X %02X %02X %02X %02X %02X",
msg_0x196.byte(0), msg_0x196.byte(1), msg_0x196.byte(2), msg_0x196.byte(3),
msg_0x196.byte(4), msg_0x196.byte(5), msg_0x196.byte(6), msg_0x196.byte(7));
}
on start{
// 初始化报文
msg_0x196.dlc = 8;
write("开始执行");
tmr1.setCyclic(2000);
}
稍微添加一些代码,variables 环境变量定义了一个ECU,并且给它赋值,output函数是将数据发送到总线上,就可以在CANoe主工程里看到日志信息。
————
6.工程运行与验证
回到 CANoe 工程首页,Home—》Simulated Bus,选择第三项,因为我们是做仿真发送。接下来,点击左上角黄色的Start 按钮
运行后,在 Write 面板可以看到 CAPL 代码的输出日志
切换到 Analysis 面板,可以看三种视图,Trace、Graphics、Data
注意,在查看视图前,需要鼠标右键,将要查看的信号,选择加入进去,否则是读不到图的。
————
7.CANIG 使用
接着上面的内容,如果不写 CAPL 代码,但又想要发送报文,需要怎么做?
这时候就用到 CANIG 功能了,回到 CANoe 的 Configuration 面板,在 Simulation Setup 上,添加一个CANIG节点。
在总线上,鼠标右键,点击 Insert CAN Interactive Generatior
在 CAN IG 节点上,鼠标右键,并点击第一项 Configuration...
弹出的 CAN IG 窗口,鼠标右键点击上半部分空白处,点击第一项:Add Frame from Database...
选择报文,比如下图,选择 EMS_0x196
添加后,找到上半部分的 Trigger 列表头,点击 Manual 选择触发方式,简单一点说,它有2种触发方式,On Key 按键触发;Periodic 周期发送。
比如,我们选择 Periodic 周期发送,时间间隔是2000ms,保存。
接下来是下半部分的配置,已经决定每隔2000ms触发一次,那么触发后,要发送的报文内容是什么呢?
这里选择 Range of values,Value 1 和 Vlue 2,分别是最小值和最大值,比如这里选择同一个数字。
需要留意,上半部分的 Send 需要运行中才可以,CAN IG 配置完毕后,回到 CANoe 工程,点击左上角的 Start 按钮,运行程序。
Graphics 面板,可以看到速度持续在30,和我们设置的数值一样,CAN IG 功能正确。
END