4、Logger配置与启动:配置CANoe Logger、设置触发条件(Trigger)、过滤规则(Filter)、循环记录模式、手动启停与自动启停
好,咱们进入第四章。这一章讲的是Logger的配置与启动。说实话,Logger是实车回放里最关键的环节之一。你数据录得不好,后面回放再牛也白搭。我见过太多工程师,花大把时间调回放脚本,结果发现Logger没配好,关键信号丢了——那真是欲哭无泪。
所以这一章,咱们把Logger的配置掰开揉碎了讲。从触发条件到过滤规则,从循环记录到启停方式,我一个一个说清楚。
4.1 配置CANoe Logger:基础设置
打开CANoe,找到Measurement Setup窗口。你会看到一个叫「Logging」的模块。双击它,或者右键选Configuration,就能进入Logger的配置界面。
我个人习惯,第一步先确认存储路径。默认路径在工程目录下,但我建议你单独建一个文件夹,比如叫「LogData_项目名_日期」。为什么?因为实车测试一跑就是一天,文件多了容易乱。我在一个项目中吃过亏,所有Log文件混在一起,最后找数据找了半天。
配置界面里,有几个关键选项:
- 存储格式:BLF还是ASC?我推荐BLF。二进制格式,体积小,读写快。ASC是文本格式,方便人看,但文件大得吓人。除非你有特殊需求,否则选BLF。
- 存储模式:连续记录还是分段记录?分段记录可以按时间或文件大小切分。比如每10分钟一个文件,或者每100MB一个文件。这样方便管理,也方便后续回放时按需加载。
- 预触发时间:这个很实用。比如你设置触发条件为某个错误帧出现,但你想看看错误发生前几秒的数据。预触发时间就是干这个的。我一般设2-5秒,够用。
4.2 设置触发条件(Trigger)
触发条件,说白了就是「什么时候开始录」。不是所有数据都有价值,你想想看,跑高速巡航的时候,总线上一片平静,录下来的全是重复信号。真正有价值的是那些异常时刻——比如CAN错误、信号超限、或者某个特定事件发生。
CANoe Logger支持多种触发方式:
- 信号触发:当某个信号值满足条件时触发。比如车速大于100km/h,或者发动机转速超过红线。
- 错误帧触发:检测到CAN错误帧、远程帧或过载帧时触发。这个在故障排查中非常有用。
- 时间触发:按固定时间间隔触发。比如每5分钟录一段30秒的数据。
- 手动触发:通过硬件按钮或软件按钮手动触发。
配置方法很简单。在Logger配置界面里,找到Trigger选项卡。点击Add,选择触发类型。然后设置条件表达式。比如:
// 信号触发示例:当车速超过120km/h时开始记录
Trigger Condition:
Signal: VehicleSpeed
Operator: GreaterThan
Value: 120
Pre-trigger Time: 2s
Post-trigger Time: 5s
这里要注意,Post-trigger Time是触发后继续记录的时间。比如你触发条件是错误帧,但错误发生后可能还有后续连锁反应,多录几秒能帮你看到完整的故事。
4.3 过滤规则(Filter)
过滤规则,就是「录什么,不录什么」。实车总线上的数据量很大,尤其是CAN FD和以太网,动不动就几百兆甚至几个G。你不可能什么都录,也没必要。
我一般按以下思路配置过滤:
- 按CAN ID过滤:只录你关心的ID范围。比如动力域相关的ID是0x100-0x1FF,那就只录这一段。其他车身域、信息娱乐域的信号,暂时不录。
- 按信号过滤:如果你只关心几个关键信号,可以只录这些信号所在的报文。但要注意,CANoe的Logger是按报文级别过滤的,不是按信号级别。所以即使你只关心一个信号,也得把整个报文录下来。
- 按通道过滤:如果你的测试涉及多个CAN通道(比如CAN1、CAN2、CAN FD),可以只录特定通道的数据。
配置界面里,Filter选项卡下,你可以添加Include Filter(包含)和Exclude Filter(排除)。我个人习惯用Include Filter,只录我需要的,其他一概不要。这样文件小,回放也快。
// 过滤规则示例:只录CAN1通道上ID为0x100-0x1FF的报文
Filter Type: Include
Channel: CAN1
ID Range: 0x100 - 0x1FF
4.4 循环记录模式
循环记录模式,说白了就是「循环覆盖」。Logger一直录,但只保留最近一段时间的数据。比如你设循环记录30分钟,那Logger永远只保留最近30分钟的数据,超过的自动删除。
这个模式在什么场景下用?我举个例子。你跑耐久测试,一跑就是几个小时甚至几天。你不可能全程盯着,但你又怕错过关键事件。这时候循环记录就派上用场了。你设一个30分钟的循环窗口,一旦发生异常,你手动触发保存,就能把异常发生前后30分钟的数据保留下来。
配置方法:在Logger配置界面里,找到Recording Mode,选择Circular Buffer。然后设置缓冲区大小,比如200MB或者30分钟。注意,缓冲区大小取决于你的存储介质和总线负载。总线负载高的话,缓冲区要设大一点。
4.5 手动启停与自动启停
启停方式,就是「怎么开始录,怎么停止录」。两种方式各有适用场景。
手动启停:
- 适合短时间测试,比如功能验证、故障复现。
- 操作简单,点击Start/Stop按钮就行。
- 也可以配置硬件按钮,比如方向盘上的某个按键,或者外接的触发盒。
自动启停:
- 适合长时间测试,比如耐久测试、路试。
- 可以基于时间、事件、或者信号条件自动启停。
- 比如:车辆上电时自动开始记录,下电时自动停止。或者检测到某个错误帧时自动开始记录。
配置自动启停,需要在Logger的Start/Stop Condition里设置。比如:
// 自动启停示例:车辆上电时开始记录,下电时停止
Start Condition:
Signal: IgnitionStatus == 1
Stop Condition:
Signal: IgnitionStatus == 0
这里要注意,自动启停的触发信号一定要可靠。我遇到过一个问题,IgnitionStatus信号在CAN总线上有延迟,导致Logger启动晚了,错过了关键数据。后来我改用硬线信号(比如KL15电平)来触发,问题就解决了。
4.6 实战配置示例
好了,理论讲完了,咱们来个实战配置。假设你要做一次实车路试,重点关注动力域CAN总线上的错误帧和异常信号。配置如下:
| 配置项 | 设置值 | 说明 |
|---|---|---|
| 存储格式 | BLF | 二进制格式,体积小 |
| 存储模式 | 分段记录,每100MB一个文件 | 方便管理和回放 |
| 触发条件 | 错误帧触发 + 信号触发(车速>100km/h) | 覆盖异常和高速场景 |
| 预触发时间 | 3秒 | 记录异常发生前的数据 |
| 后触发时间 | 5秒 | 记录异常发生后的数据 |
| 过滤规则 | 只录CAN1通道,ID范围0x100-0x2FF | 只关注动力域 |
| 循环记录 | 开启,缓冲区30分钟 | 防止漏掉关键事件 |
| 启停方式 | 自动启停,基于Ignition信号 | 上电开始,下电停止 |
这个配置,我实际用过很多次。基本上覆盖了大部分路试场景。你根据自己的项目需求,微调一下就能用。
好,这一章就到这儿。下一章咱们讲数据回放的具体操作,包括如何加载Log文件、如何同步回放、以及如何分析回放数据。到时候见。