2. CANoe工程与CAPL运行环境搭建
CAPL脚本不能脱离CANoe工程独立运行。一个可执行的CAPL自动化测试环境,本质上由四层构成:CANoe软件本体、工程文件(.cfg)、网络数据库(.dbc/.arxml/.ldf)、以及挂在仿真节点上的CAPL程序。本节按“装软件—建工程—导数据库—配节点—写CAPL”的顺序,把这条链路一次打通。
一、CANoe安装与授权配置
CANoe安装包通常包含CANoe主程序、CANalyzer、CANoe Option等组件。安装时需注意三点:一是选择与硬件匹配的驱动,Vector接口卡(VN1610、VN5610、VN1640等)需要安装Vector Driver Setup,否则CANoe启动后看不到通道;二是安装路径避免中文和空格,推荐 C:\Vector\CANoe\,因为部分CAPL编译器和数据库解析器对路径字符敏感;三是授权方式,CANoe使用Vector License Client管理License,可以是USB加密狗,也可以是绑定网卡MAC的软授权。
安装完成后,通过 Help → About CANoe 确认版本号与已授权选项。做CAPL自动化测试,至少需要基础CANoe License;若涉及LIN、FlexRay或以太网,还需对应Option。授权异常时,CANoe会以Demo模式启动,此时CAPL的output()、testWaitForTimeout()等函数可能受限,务必先解决授权再进入后续配置。
二、创建CANoe工程
启动CANoe,选择 File → New → Configuration,进入工程配置界面。新建工程后先做两件事:保存为 .cfg 文件(例如 CAPL_Demo.cfg),并设置工程工作目录。工程文件记录了网络拓扑、节点、数据库绑定和CAPL节点引用,是后续所有配置的容器。
接着配置通道。在 Simulation Setup 视图中,右键 CAN Networks 添加一条CAN总线,设置波特率。教学示例中常用500 kbps,采样点默认80%。若使用真实硬件,需在 Hardware → Network Hardware Configuration 中把通道映射到具体接口卡端口,例如 CAN1 → VN1610 Channel 1;若暂时无硬件,可勾选 Simulated Bus 进行离线验证。
三、导入网络数据库
数据库是CAPL访问报文的“字典”。在 Simulation Setup 中右键总线,选择 Add Database,导入 .dbc(CAN)、.ldf(LIN)或 .arxml(AUTOSAR)。导入后,CANoe会自动解析出报文、信号、节点和属性。
导入后必须做一次核对:在 Database 视图中展开报文列表,确认报文ID、DLC、信号起始位和长度与设计一致。常见问题是DBC中信号字节序(Intel/Motorola)写错,导致CAPL读出的物理值完全不对。例如某车速信号 VehicleSpeed 定义在 0x123 报文的第0字节,长度8位,因子0.5,偏移0,则CAPL中 $VehicleSpeed 读到的原始值乘以0.5才是km/h。若发现数值异常,优先回查DBC而非CAPL代码。
四、CAPL Browser与仿真节点配置
在 Simulation Setup 中右键总线,选择 Insert Network Node,双击节点进入 CAPL Browser。CAPL Browser是CAPL的编辑、编译和调试环境,左侧是程序结构树(includes、variables、functions、event handlers),右侧是代码编辑区。
一个最小可运行的CAPL节点包含三部分:全局变量、事件处理、输出逻辑。示例代码如下:
/* CAPL_Demo.can —— 周期发送车速并监测响应 */
variables
{
msTimer tSend;
int gCycle = 100; // 发送周期,单位ms
}
on start
{
setTimer(tSend, gCycle);
write("CAPL节点已启动,周期=%d ms", gCycle);
}
on timer tSend
{
$VehicleSpeed = 60.0; // 物理值60 km/h,按DBC因子自动换算
output($VehicleSpeed); // 发送到总线
setTimer(tSend, gCycle);
}
on message 0x456
{
if (this.dir == RX)
{
write("收到响应报文 0x456,DLC=%d", this.dlc);
}
}
代码写完后点击 Compile,CAPL Browser会生成 .can 文件。若编译报错,常见原因有三类:变量未声明、事件名拼写错误、数据库符号未导入。编译通过后,节点图标由灰色变为彩色,表示已绑定CAPL程序。
五、启动验证与常见问题
点击CANoe工具栏的 Start(闪电图标)启动工程。观察 Write 窗口是否输出“CAPL节点已启动”,Trace 窗口是否出现周期100 ms的 0x123 报文。若报文未出现,按以下顺序排查:
- 节点是否处于“激活”状态(图标非灰色);
- 通道是否映射到正确的硬件端口或Simulated Bus;
- CAPL中
output()的报文是否在数据库中有定义; - 波特率是否与总线其他节点一致。
Database/、CAPL/、Report/ 三个子目录,分别存放DBC、CAPL源码和测试报告,便于后续自动化脚本统一管理路径。