跳转到内容

硬件在环:用现场数据重现台架工况

BMCLI 的录制与回放能力,可以把现场数据变成硬件在环台架的实验输入。本篇围绕问题复现与回归验证,介绍怎样重现总线工况,并观察真实被测设备的响应。

例如,道路试验中仪表偶尔进入降级状态,但台架上的稳定信号始终无法触发。试验车先用电脑和 BUSMUST 分析仪记录问题前后的 CAN/CAN FD 流量,回到实验室后,将日志接到相同软件版本的 DUT(被测设备),按原时序重现输入,再比较修复前后的响应。

本篇以真实 DUT 参与的硬件在环台架为目标,使用录制数据提供开环刺激,并采集 DUT 的当前响应。录制和回放是第一篇介绍的基础能力,在这里则成为测试系统的输入与执行环节。BMCLI 完成日志格式处理、通道映射和回放,AI 组织问题窗口、DUT 观察与判定。准备现场记录、匹配 DBC、给台架供电、配齐分析仪通道,就可以把一次偶发问题逐渐整理成可重复的回归案例。

把现场工况送回真实硬件

图 7-1 记录提供开环刺激,台架采集当前 DUT 响应。工程关系示意。

给 AI 的输入:描述硬件在环测试

Section titled “给 AI 的输入:描述硬件在环测试”

交给 AI 的资料包括现场与实验室两份 Bench、两路 DBC、DUT 发出的报文清单,以及 Counter、DegradedMode 的定义和判定时间窗。先完成现场录制,再将选定记录带到连接真实 DUT 的实验台。

我要把道路试验中的仪表降级问题放到连接真实 DUT 的台架上复现,请用 BMCLI 组织一套基于现场记录的硬件在环测试。现场按 Bench 中的 field-can-a、field-can-b 录制 BLF,每段 5 分钟,达到 12 段后停止,生成分段索引和摘要。进入实验室后,将我选定的日志两路分别映射到 hil-can-a、hil-can-b,按我提供的节点报文清单只保留外部节点输入,让 DUT 自己产生响应。先以 0.5 倍速检查通道映射,再按原速运行正式测试;同时采集当前 DUT 的 Counter 和 DegradedMode,依据我提供的 DBC、初始状态和时间要求判断响应。请交付录制入口、台架测试入口、配置和刺激—响应报告,保留原始日志,测试结束后停止本次回放与采集。

AI 会分别组织录制与回放入口,检查通道映射,再把观察结果写入报告。随文的路由与判定配置可供参考;DegradedMode 的报文定义和判定期限需要采用项目资料。

成品与效果:回放之后,希望看到什么

Section titled “成品与效果:回放之后,希望看到什么”

AI 应交付现场记录入口、台架执行入口和一次刺激—响应报告。下面是成品报告的设计样例;随文提供映射与判定配置,实际 DUT 响应需由台架运行取得。

假设问题窗口里出现 Counter 从 17 跳到 20,随后 DUT 进入降级状态。比起单独查看日志,更有用的结果是把刺激和响应放在一起:

观察项目 报告呈现方式
输入日志 包含的通道、ID、帧数和时间范围
实验室映射 日志 ch1 → hil-can-a,ch2 → hil-can-b
关键刺激 Counter 从 17 跳到 20
DUT 响应 DegradedMode 是否置位、与刺激间隔多久
判定 响应是否满足项目规定的时间要求

这是报告设计示例,具体计数和时长由实际运行填入。输入里的 Counter 缺口可能正是本次实验需要的刺激;DUT 是否正确处理它,才是另一项判定。把这两件事分开,报告就更容易读懂。

实现解析:BMCLI 在成品中承担的工作

Section titled “实现解析:BMCLI 在成品中承担的工作”

下面结合关键调用说明应用的实现方式。AI 生成的程序将这些调用组织成完整流程,并处理返回结果与任务收尾。

Terminal window
# 开始分段 BLF 录制:每段 300 秒,达到 12 段后停止。
bmcli logging start --channel=field-can-a,field-can-b `
--path=logs/field.blf --log-format=blf --path-mode=time `
--segment-duration=300 --max-files=12 --format=json
# 查询当前录制文件与任务状态。
bmcli logging status --format=json
# 结束本次录制并完成文件收尾。
bmcli logging stop --format=json
# 将选定 BLF 转为 ASC,便于检查原始报文与时间。
bmcli convert logs/field.blf review/field.asc
# 按日志源通道映射回放已筛选输入,1.0 倍速保留原始时间比例。
bmcli replay start --channel=hil-can-a,hil-can-b --file=prepared/external-input.blf `
--map-channel=1:hil-can-a --map-channel=2:hil-can-b `
--map-strict --speed=1.0 --format=json
# 读取回放任务状态,供执行器判断是否仍在运行。
bmcli replay status --format=json

BMCLI 处理 ASC/BLF 格式、分段记录、回放倍率和源通道映射。AI 可以把精力放在选择问题窗口、筛选节点流量和编写业务判断上。

记录采用时间命名后,实际文件名以 logging 返回值为准。上面的 convert 使用固定文件名说明调用方式;执行器应选取实际分段,依据节点清单筛出外部输入,另存为示例中的 prepared/external-input.blf 后再回放。原始记录始终保留,DUT 自身响应不混入刺激文件。

--max-files=12 在未启用 --wrap 时表示达到上限后停止。希望持续保留最近若干段时,可选择循环策略;其含义是新段完成后淘汰本次记录的旧段,适合容量固定的长期采集。

实验室通常只回放需要模拟的外部节点输入,并让 DUT 自己生成响应。这样,观察到的降级状态才来自当前 DUT,而不是日志里保存的那一帧。

0.5 倍速适合确认接线和路由,原速则用于判断真实周期与响应期限。多个设备的记录放在同一文件里,还需要确认时钟同步方式,才能进行准确的跨通道延迟比较。

固定日志回放属于开环刺激,是 HIL 中很实用的一部分。若还要根据 DUT 响应动态改变输入,或联合电源、继电器和负载,就可以继续接入实时模型和外部 I/O,形成更完整的闭环台架。

进一步探索:让现场记录成为长期可用的案例

Section titled “进一步探索:让现场记录成为长期可用的案例”

这个案例还可以继续完善,也可以延伸到更多工作中。您可以从感兴趣的一项出发,与 AI 讨论下一步的实现。

当同类问题积累起来,可以请 AI 按现象和工况整理日志,为每个案例保存 DBC、通道映射、问题窗口与预期响应。参考实现是保留完整原始记录,再生成用于快速重跑的片段,并说明启动前需要的 DUT 状态。BMCLI 负责格式处理与回放,AI 负责案例索引和判定说明。下次软件更新后,团队就可以按问题名称选择实验,而不必重新寻找“当时是哪一份日志”。

当测试要求根据 DUT 的输出即时调整下一次输入时,可以继续引入实时模型或外部 I/O。您可以向 AI 提供模型接口、状态转换规则与时序要求,让应用根据当前 DUT 响应计算后续工况,再通过 BMCLI 发送相应信号。录制内容仍可提供初始工况或背景流量,但闭环部分需要实时计算与独立的时序验证。对于严格硬实时要求,应将模型与控制安排在相应实时执行环境中,BMCLI 承担适合的总线接入和实验编排工作。

以下文档介绍本篇涉及的接口;具体参数可通过本机 JSON Help 查询。

下载本篇配套示例 ZIP


上一篇 · 系列目录 · 下一篇