跳转到内容

认识 BMCLI:从安装到第一次总线分析

在汽车电子开发中,一段总线数据往往只是工作的起点。接下来,还要查找报文、解释信号、绘制曲线,或把一次诊断操作整理成同事也能使用的测试工具。

BMCLI 就是为这些工作准备的。它是 BUSMUST 提供的命令行工具,可以连接 BUSMUST 分析仪,完成 CAN、CAN FD、LIN 报文收发,并提供数据库解析、诊断、标定、节点仿真和录制回放等功能。它既能由工程师直接调用,也适合交给 Claude Code、Codex 等主流 AI 编程助手使用。您可以全程用自然语言提出需求、提供资料和调整效果,无需亲手编写代码或脚本。AI 负责生成需要的应用,BMCLI 负责把它接到真实设备上。

BMCLI 与 BUSMASTER、BMAPI 有什么不同

Section titled “BMCLI 与 BUSMASTER、BMAPI 有什么不同”

如果您使用过 BUSMASTER,可以把三者理解为访问总线的三种方式:

工具 主要使用方式 适合的工作
BUSMASTER 在图形界面中配置和操作 日常观察报文、调试信号、手动分析
BMAPI SDK 在程序中调用 API 开发需要直接控制硬件的应用
BMCLI 通过命令、脚本或 Web API 调用 自动化测试、AI 辅助开发、快速搭建工程工具

AI 负责理解需求、组织步骤和编写界面,BMCLI 负责与硬件和协议打交道。例如,您提出“把车速和档位做成一个网页”,AI 可以调用 BMCLI 接收报文、加载 DBC、取得工程值,再生成页面。

这样一来,沟通的起点可以是“希望看到什么结果”,而不仅是“先调用哪个函数”。AI 编程助手可以在本机调用 BMCLI,也可以在获准访问的远程工程主机上运行它;关键是运行 BMCLI 的主机能够访问到设备所在的运行环境。

设想为台架制作一个“录制/回放”页面。按钮本身并不复杂,真正花时间的是背后的工作:连接设备、读取报文、保留时间戳、处理 ASC/BLF 格式、安排回放周期,再应对停止、断线和资源释放。

有了 BMCLI,这些工作已有专门接口。AI 可以调用录制和回放服务,围绕它们生成按钮、进度和项目报告。您描述的是“按工况保存记录,选一段重放”,而不是日志文件格式或 USB 收发循环。

这种分工也适用于更大的系统:BMCLI 提供总线抽象和协议语义,AI 生成的应用负责用户交互、业务流程、持久化数据与系统集成。配套 Skill 还整理了环境准备、接口发现和常见工程用法,使 AI 有现成的方法可循。编程助手支持的模型都可以搭配 BMCLI,按任务复杂度选择即可;无论用哪个模型,效果都要用真实输入和运行结果来检验——通信协议已由 BMCLI 实现好,模型无需从零开始。

BMCLI 的命令通常由“类别、操作、参数”组成。例如:

Terminal window
# 在指定通道采集报文;带 --decode 时同时按数据库输出工程值。
bmcli message recv --channel=vehicle-can --duration=10 --format=jsonl

这里,message 表示报文类命令,recv 表示接收;后面的参数指定通道、持续时间和输出格式。这条命令在已准备好的 vehicle-can 通道上接收 10 秒,将结果按 JSONL 逐行输出。AI 可以直接读取这些记录,继续做统计、绘图或生成报告。

接收、发送或保存日志等任务可以直接使用命令完成。下面按功能给出独立调用示例:总线操作先配置并打开通道,数据库操作先加载资源,诊断与标定先建立相应协议连接。请按项目替换示例中的逻辑名称、文件和变量;具体参数可查阅在线帮助。

能力类别 命令关键字 代表性调用
通道发现与配置 channel bmcli channel enumerate --format=json:列出可用设备通道
报文接收 message recv bmcli message recv --channel=vehicle-can --duration=10 --format=jsonl:取得一段总线记录
报文发送 message send bmcli message send --channel=vehicle-can --id=0x100 --data="01 02 03 04 05 06 07 08" --count=1 --format=json:发送一帧指定数据
总线统计 stat bmcli stat show --channel=vehicle-can --format=json:查看已启动统计的结果
DBC 信号解析 dbc bmcli dbc signal list --message=VehicleStatus --database=vehicle --format=json:查看报文中的信号定义
录制 logging bmcli logging start --channel=vehicle-can --path=logs/run.blf --log-format=blf --duration=10 --format=json:保存 10 秒 BLF 日志
回放 replay bmcli replay start --channel=vehicle-can --file=logs/run.blf --format=json:将已有记录重新发送到台架
周期发送任务 txtask bmcli txtask list --channel=vehicle-can --format=json:查看该通道的发送任务
报文路由 route bmcli route list --channel=vehicle-can --format=json:查看该通道的报文路由规则
UDS 诊断与刷写 isotpuds bmcli uds did read 0xF190 --format=json:在已配置的诊断连接上读取 DID
LIN 主从通信 linldf bmcli ldf schedule show NormalTable --database=body-lin --format=json:查看 LDF 调度表
XCP 测量与标定 a2lxcp bmcli xcp measurement read EngineSpeed --database=ecu --format=json:按 A2L 变量名读取测量值
CANopen 节点服务 canopen bmcli canopen object list --database=node --format=json:查看 EDS 对象字典
Modbus 工业模块接入 modbus bmcli modbus resource list --database=plant --format=json:查看已登记的模块资源
节点仿真与故障规则 simulation bmcli simulation validate --file=node.json --format=json:离线检查节点配置
统一信号网关 gateway bmcli gateway validate --file=bridge.bmgw --format=json:离线检查信号映射工程
Web 数据与应用接口 web bmcli web start --listen=127.0.0.1:18080:启动本机 Web 服务

下面这些接口负责准备环境和管理服务,建议与上面的总线功能分开理解。Bench 保存项目与本机设备的对应关系,daemon 管理持续运行的任务,AI 接口则安装和检查给编程助手使用的技能说明。

运行基础 命令关键字 代表性调用
版本信息 version bmcli version --format=json
环境检查 doctor bmcli doctor --format=json
项目台架配置 bench bmcli bench show --format=json
后台服务 daemon bmcli daemon status --format=json
AI 技能配置 ai bmcli ai status --format=json

比如,录制和回放已经负责了文件格式与总线时序,AI 只需围绕它们组织“保存工况”和“重跑实验”的操作界面。诊断与标定接口则让应用直接使用 DID 或测量变量,而不必重新实现协议。发送、回放和诊断调用会产生总线通信,适合在已确认操作范围的测试台架上使用。

命令解决具体操作,Skill 帮助 AI 将这些操作组织成完整方案。同一份采集结果可以用于页面显示、日志记录和测试判断;节点仿真也可以成为回归测试的输入。需要深入某个参数时,可查阅 BMCLI 在线帮助,或让 AI 查询本机 Help。后续教程将逐步展示这些接口怎样组合成项目工具。

下面这张图概览了第二至第十三篇的应用方向。您可以先浏览感兴趣的成果,再从后面的几个例子感受它们如何用于日常工作。

BMCLI 典型应用效果示意

图 1-1 后续十二篇场景教程的成果概览;这些应用可以按项目继续组合与扩展。

看懂总线上的数据。 一份 DBC 配合一段抓包,就可以得到报文清单、带单位的信号值和变化趋势。原来的十六进制数据,现在可以读成“车速 72.5 km/h,档位 D”。

把项目资料整理成测试。 通信矩阵中的 ID、周期、范围与诊断表中的 DID,可以转成有明确判断条件的用例。报告不仅给出结果,也说明每项检查对应哪条要求。

给台架做一个工程面板。 将实时数值、曲线、报文列表和录制、发送等操作放到同一页面。它可以从本机联调起步,也可以结合业务服务与 HTTPS 反向代理,成为多人使用的远程工程应用。

补齐暂时缺席的节点。 ECU 尚未到位时,可先仿真周期报文和信号变化;进入测试阶段后,再加入丢帧、重复帧等异常,观察接收端的处理。

组织诊断与刷写流程。 将会话、下载和校验等步骤串起来,显示进度,并把失败原因定位到具体阶段。项目特有的地址、算法和流程则由项目配置提供。

这些案例的共同点,是让您用工程语言提出目标,由 AI 组合 BMCLI 的现成能力。随着需求增加,报告可以长成工具,工具也可以融入更大的系统。

BMCLI 支持 Windows 和 Linux。Windows 10/11 用户可在 PowerShell 中运行:

Terminal window
# 下载并运行 Windows 安装脚本。
irm https://download.busmust.com/bmcli/install.ps1 | iex

Linux 用户可运行:

Terminal window
# 下载并运行 Linux 安装脚本。
curl -fsSL https://download.busmust.com/bmcli/install.sh | sh

现场电脑采用离线安装时,可先完整解压正式安装包,再运行包内安装脚本。以 Windows 为例:

Terminal window
# 从已准备好的离线安装包执行安装。
$packagePath = Read-Host "请输入已下载的 Windows ZIP 安装包完整路径"
powershell -ExecutionPolicy Bypass -File .\share\bmcli\packaging\install.ps1 `
-PackagePath $packagePath

安装完成后,请重新打开终端,运行以下检查:

Terminal window
# 确认当前软件版本。
bmcli version --format=json
# 检查 AI 技能说明的安装状态。
bmcli ai status --format=json
# 检查运行环境和依赖是否就绪。
bmcli doctor --format=json
# 列出可用设备与稳定通道标识。
bmcli channel enumerate --format=json

这四项分别确认软件版本、AI 技能配置、运行环境和设备通道。Windows 需要安装配套的 BUSMUST 设备驱动;Linux 的 USB 访问权限可按安装包说明配置 udev。

如果 ai status 提示技能尚未安装,可运行 bmcli ai setup --target=all,再重新打开 AI 会话。这里的 Skill 是提供给 AI 的 BMCLI 使用说明,帮助它查找命令和理解返回结果。

准备好能够执行本机命令的 AI 编程助手,例如 Codex 或 Claude Code,就可以开始第一次任务了:

我已安装 BMCLI,并连接了 BUSMUST 分析仪。请检查软件、驱动、AI Skill 和可用通道,参考已有 Bench 配置选择接收通道。我们先做只听检查:确认接线和总线参数后监听 10 秒,整理一份简短报告,说明发现了哪些设备、是否收到报文,以及接下来适合做哪项分析。需要我补充的信息请列出来。

其中的 Bench 是台架配置,用来记录“哪个逻辑网络连接哪个设备端口、使用什么参数”。如果项目已有这份配置,AI 就能沿用熟悉的网络名称;首次接入时,请提供序列号、端口和接线信息,方便 AI 准确识别台架。

BMCLI 的持续接收和后台任务由后台服务 daemon 管理。AI 会先检查是否已有可复用的服务,再按确认的参数打开通道。团队共用台架时,约定好设备使用时段,检查过程会更顺畅。

一份实用的检查报告不必很长。例如,本系列演示台架中的通道信息可以整理为:

检查内容 演示台架结果
接收设备 BM-USB-XL4,序列号 10357
CAN 端口 10357/0,支持 CAN 与 CAN FD
本次通信配置 Classic CAN,500 kbit/s
接收内容 VehicleStatus,CAN ID 0x100
可继续分析的资料 VehicleStatus 演示 DBC

设备数量和端口以当前枚举结果为准。如果暂时没有收到数据,报告可以进一步提示检查对端供电、休眠状态或总线参数,让排查有一个明确起点。

在与车辆断开的双分析仪测试台上,还可以进一步验证主动链路。例如,让发送端发出 4 帧,接收端确认收到 4 帧。本系列的报告样例展示了这样的结果;实际使用时,可在只听检查后单独提出这项测试。

前面的安装检查可以由您直接运行;这次报告则由 AI 组织调用并整理结果。AI 通过 versionai statusdoctor 检查环境,通过 channel enumerate 确认通道,再依据 Bench 准备只听采集。BMCLI 返回设备信息与接收记录,AI 将它们整理成报告中的表格和结论。主动链路验证是另外一项任务,只有您明确提出后才执行。

进一步探索:从第一次连接开始积累

Section titled “进一步探索:从第一次连接开始积累”

第一次连接成功后,可以请 AI 将设备端口、速率和用途整理到项目 Bench 中,并为网络取一个容易识别的名字,例如“动力 CAN”。以后分析脚本和页面使用逻辑名称,设备更换时只需调整本机绑定。再附上一段供电与接线说明,同事就能沿用这份配置开始工作,也能减少反复确认端口的时间。

如果手边已有 DBC,可以接着告诉 AI:“请把刚才的记录按这份数据库解释,挑出与当前工况有关的信号。”实现上继续使用 BMCLI 的数据库与解码接口,再由 AI 整理单位、范围和曲线。这样就能从“收到数据了”走到“知道数据在说什么”;下一篇教程将完整展开这一步。

下载本篇配套示例 ZIP


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