使用CANoe搭建LIN通信网络
Step 1. 创建LIN工程
将Vector的盒子连接到电脑,打开CANoe,菜单栏选择File -> New,在Available Templates中双击LIN,跳出如下界面。
Step 2. 配置LDF文件及LIN通信报文
Stpe 2.1 配置报文及信号
在菜单栏中选择Tools -> LDF Explorer,跳出如下界面,创建New File。
首先点击New Unconditional Frame添加新的无条件帧。
在如下界面中对LIN报文进行配置
- Name:帧名称;
- Length[Byte]:帧长度;
- ID:帧ID,以十进制表示;
- Publisher:帧的发送单元;
- Subscriber:帧的接收单元;
- Signal Mapping:信号矩阵;
点击Create and Map Signal,创建信号矩阵及定义信号,跳出如下界面。
在Signal Properties选项卡内配置
- Name:信号名称;
- Initial Value:初始值;
- Signal Type:信号类型,分为Scalar和Byte Array;
- Length[Bit]:信号长度,最多8bit;
在Physical选项卡内配置
- Minimum[raw]:最小物理量;
- Maximum[raw]:最大物理量;
- Unit:该物理量对应的单位;
- Factor:放大系数;
- Offset:物理量的补偿;
在Publisher/Subscriber Relations选项卡内配置
- ECUs:发送单元;
- Subscriber(s):接收单元;
在Mapping选项卡内配置
- Position on Frame[Bit]:该信号在报文中的起始位。
在报文中添加信号后如下图所示。
Step 2.2 配置调度表
在菜单栏如下位置选择Create Schedule Table,添加帧的调度表。
将Unconditional Frames中创建的无条件帧拖动到调度表中,如下图所示。
Step 2.3 配置时序
选择Nodes/Frames,点击左侧方框中的主节点名称,这里是LIN_Master,并选择调度表中的报文。此时右侧方框如下图所示,根据客户需求分别修改Delay(时隙)、Timebase(基时)、Jitter(偏移)。
Step 2.4 检查及保存配置
保存配置,然后在菜单栏如下位置点击LIN Consistency Checker,进入LDF文件的错误检查。
出现如下界面后,选择Start the consistency check开始检查。如果存在错误或者警告,左侧栏中会提示相应的问题。
关闭LDF Explorer,回到主界面。在右侧方框内,右击Databases,选择Add,将保存的LDF文件导入进来,如下图所示。
Step 3. 添加和配置CAPL模块
在菜单栏中选择Tools -> CAPL Browser,跳出如下界面。
编写相关的CAPL代码,并保存。
回到主界面,右击Simulation Setup中的红蓝线,选择Insert Network Node,如下图所示。
CANoe与CANalyzer所不同的是,CANoe可以连接多个从节点,而CANalyzer只能接一个从节点。
这里以一个主节点和一个从节点为例,因此添加两个网络节点(Network Node)。
右击其中一个节点,选择Configuration进行配置,配置界面如下图所示。
在Settings选项卡内配置
- Title:标题,对节点命名;
- Network node:节点网络,选择该节点是主节点还是从节点,或者是哪一个从节点;
- State:节点状态,simulated是仿真节点,off是真实节点;
在Node specification选项卡内配置
- File:选择CAPL文件路径;
- Edit:编辑CAPL文件;
- Compile:编译CAPL文件;
配置界面中其余的选项卡可以不做操作,配置完成后主界面如下图。
Step 4. 运行工程
在Home菜单栏中点击黄色闪电图标Start,开始运行,如下图所示。
相关报文信息会显示在Trace界面上,若需要其他的显示监控界面,可在Analysis菜单栏中选择添加。
Q&A
Q1. 向从节点发送VDCM指令需要同时判断按键1和按键2的变量值,而按键事件(即系统变量事件)中只能判断其中一种按键(系统变量)状态,无法同时判断两种按键(系统变量)状态。
A1. CANoe的CAPL是事件触发的,与C语言不同的是,它没有main函数。解决方法是开启1ms或10ms的定时器,在定时器内循环检测多个按键变量(系统变量)的值,模拟C/C++主函数中的while(1)循环。
Q2. 使用CANoe/CANalyzer的Panel Designer设计Panel时,特别是在点击Toolbox中的工具后,会出现死机、无响应的情况。
A2. 使用了有道词典的屏幕取词功能,导致软件冲突。解决方法是关闭取词软件(如金山词霸、有道词典等)。
Q3. 使用message关键字定义LIN报文变量,编译器报警,报文变量无法正常使用。
A3. 在CANoe9.0中CAN报文变量使用message关键字定义,LIN报文变量linmessage关键字定义。在CANoe11.0中CAN报文变量和LIN报文变量均使用message关键字定义,默认为CAN报文变量。解决方法是根据CANoe版本选择相应的报文关键字。