结论:SavvyCAN 自带的 examples/ 目录是最小成本的复现环境:三份示例 DBC 分别是 10 报文 22 信号的动力总线样本、501 报文 548 信号的大规模档案、6 报文 31 信号的部件级总线,量级相差约 80 倍,正好覆盖「小规模逐条核对—大规模过滤检索—部件级拓扑」三类分析动作。采集硬件并非必需,工具能直接读写 12 种日志格式(其中 3 种只读),因此用示例数据就能把整条流程走通。需要注意的是:三份示例都没有独立的年款适配与信号验证记录,且其中一份大规模档案在归档里还有 502 报文 761 信号的后续修订版,两者应按不同来源快照分别留存。
三份示例 DBC:量级差 80 倍,用途完全不同
把三份示例放在一张表里看,最直观的不是报文数,而是它们的性质差异:LeafPowertrainBus.dbc 是标注为 Leaf 的动力总线样本,规模小到可以逐条人工核对;ThinkCity.dbc 是 501 条报文的城市车档案,价值在于压测过滤与检索;bms.dbc 只有 6 条报文却命名了 EVTVBMS、GEVCU 与逆变器三类部件,是典型的部件级总线示意。
| 示例文件 | 报文数 | 信号数 | 文件性质 | 证据边界 |
|---|---|---|---|---|
LeafPowertrainBus.dbc |
10 | 22 | 标注 Leaf 的动力总线示例 | 代数、年款、硬件与信号验证均未记录 |
ThinkCity.dbc |
501 | 548 | 标注 Think City 的大规模档案 | 并非每条报文都确立了车型年款适用性 |
bms.dbc |
6 | 31 | 部件级示例,含 EVTVBMS、GEVCU、逆变器 | 通用部件示意,不是某款整车的原厂 DBC |
归档中的 ThinkCity_modified6.dbc |
502 | 761 | 同名的后续大幅扩充修订版 | 与上一行是两个来源快照,不可互相覆盖 |
第四行值得单独说明:501/548 与 502/761 只差 1 条报文,信号数却差了 213 条。这说明后者的修订主要集中在信号定义而非报文条目扩充。归档时的正确做法是把两者当作独立快照各自留存,而不是用新版本替换旧版本。
用示例数据复现分析流程:每个文件演示什么
三份示例对应三种不同的分析动作。小规模样本适合验证「DBC 定义与原始字节是否自洽」,大规模档案适合验证「过滤、分组与检索是否好用」,部件级示例适合验证「多设备报文关系能否被正确建模」。把它们按这个顺序跑一遍,就能在不接硬件的前提下判断工具链是否完整。
| 分析动作 | 推荐示例 | 可验证的能力 | 演示不了什么 |
|---|---|---|---|
| 逐条核对信号定义 | LeafPowertrainBus.dbc |
报文清单浏览、信号曲线绘制、缩放与偏移是否自洽 | 代数与年款适配判定 |
| 大规模检索与过滤 | ThinkCity.dbc |
按 ID 区间过滤、按报文名搜索、大文件加载与刷新性能 | 逐条物理值的实测验证 |
| 部件级拓扑建模 | bms.dbc |
多设备(BMS、整车控制器、逆变器)报文归属与发送关系 | 整车级网络拓扑与网关行为 |
| 格式往返一致性 | 任意一份 + 日志导出 | 导入后再导出,比较 ID 与数据字节是否逐帧一致 | 时间戳在不同格式间的保真度差异 |
| 来源快照比对 | ThinkCity.dbc 与修订版 |
同名报文在两版之间信号数变化的对比 | 哪一版更接近原车的判定 |
为什么「导入再导出」是最先该跑的一条
这条流程不需要理解任何信号含义,只需要比对 ID 与 8 个数据字节是否逐帧一致。它能一次性暴露三类问题:格式解析器的边界处理、扩展帧与标准帧的区分、以及多帧时序是否被保留。在这条通过之前,后续任何信号级分析都建立在不可靠的输入上。
十二种读写格式:九种可写,三种只读
工具的定位是「加载、保存与采集 CAN 帧」,用于可视化、逆向、调试与抓包。它明确说明采集设备并非必需,因此格式支持清单直接决定了它的离线分析能力边界。清单里前九种可读写,后三种只能读。
| 序号 | 格式 | 读写能力 |
|---|---|---|
| 1 | BusMaster 日志文件 | 读 + 写 |
| 2 | Microchip 日志文件 | 读 + 写 |
| 3 | CRTD 格式(OVMS 日志格式) | 读 + 写 |
| 4 | GVRET 原生格式 | 读 + 写 |
| 5 | 通用 CSV(ID 加 D0 到 D7) | 读 + 写 |
| 6 | Vector Trace 文件 | 读 + 写 |
| 7 | IXXAT Minilog 文件 | 读 + 写 |
| 8 | CAN-DO 日志 | 读 + 写 |
| 9 | Vehicle Spy 日志文件 | 读 + 写 |
| 10 | CANDump / Kayak | 只读 |
| 11 | PCAN Viewer | 只读 |
| 12 | Wireshark socketcan PCAP 文件 | 只读 |
采集侧则走另一条路:除推荐的 CANDue 板(需运行 GVRET 固件)之外,可以使用任意 Qt SerialBus 驱动,包括 socketcan、Vector、PeakCAN 与 TinyCAN。也就是说,离线分析用文件,实车采集走 SerialBus,两条路径互不影响。
可复现环境:依赖全部在源码树内
这份工程不依赖源码树或 Qt 安装器之外的任何东西,绘图库 QCustomPlot 已直接集成进源码,无需单独下载。编译门槛集中在 Qt 版本上:因为依赖 QtSerialBus 及其他新特性,需要 5.14.0 或更高版本。
| 环境项 | 要求 | 说明 |
|---|---|---|
| Qt 版本 | 5.14.0 或更高 | 低于此版本缺少 QtSerialBus,无法编译 |
| 屏幕分辨率 | 至少 1024×768 | 支持多显示器,4K 显示器可用 |
| macOS 二进制 | 至少 macOS 10.15 | 针对当前二进制构建的要求 |
| Qt6 支持 | QT6WIP 分支,2026-03-11 用 Qt 6.9 测试通过 | 质量约为 beta,多数功能可用 |
| 绘图依赖 | QCustomPlot 已集成 | 无需外部下载 |
| Ubuntu 模块缺失 | 安装 libqt5serialbus5-dev、libqt5serialport5-dev、qtdeclarative5-dev、qttools5-dev | 解决「Unknown module(s) in QT」类报错 |
| 调试构建 | qmake CONFIG+=debug 后 make |
获取更多运行期信息 |
标准编译路径是克隆仓库后依次执行 qmake 与 make,再直接运行可执行文件;Linux 上可用 ./install.sh 生成桌面快捷方式。若编译失败,官方给的第一步重试动作是重新 qmake、make clean、make;仍未解决则检查安装 Qt 时是否勾选了 SerialBUS 支持。
常见问题
没有采集硬件,能用 SavvyCAN 做分析吗?
可以。工具明确说明采集设备不是使用前提,它能直接加载并保存 12 种格式,其中 9 种可读可写,CANDump/Kayak、PCAN Viewer 与 Wireshark socketcan PCAP 三种为只读。用 examples/ 下的三份 DBC 配合日志文件即可跑完整条离线流程。
三份示例里哪份适合作为第一条分析流程?
建议从 bms.dbc 或 LeafPowertrainBus.dbc 这类小文件起步。LeafPowertrainBus.dbc 有 10 条报文 22 条信号,可以逐条核对缩放与偏移是否自洽;bms.dbc 有 6 条报文 31 条信号,适合看多设备报文归属。501 报文 548 信号的 ThinkCity.dbc 更适合压测检索与过滤性能。
ThinkCity.dbc 与归档里的另一份 ThinkCity 该怎么取舍?
不取舍,两份都要留。归档记录显示后者是同名的后续大幅扩充修订版,规模为 502 报文 761 信号,比前者多 1 条报文、多 213 条信号。两者属于不同的来源快照,正确做法是按各自 provenance 分别留存,而不是用新版覆盖旧版。
bms.dbc 能当整车 DBC 用吗?
不能。它是部件级示例,6 条报文 31 条信号里命名的是 EVTVBMS、GEVCU 与逆变器等部件,用于展示部件之间的报文关系。它既不是某款命名整车的原厂 DBC,也不包含整车级拓扑与网关行为。
Qt6 分支现在可以投入日常使用吗?
需按 beta 质量评估。仓库里的 QT6WIP 分支可配合 Qt6 编译,2026-03-11 用 Qt 6.9 测试通过,官方表述是「多数功能应该可用」,并请求反馈问题。若用于正式分析流程,仍建议以 Qt 5.14.0 或更高的稳定构建为主。
延伸阅读
- 公共 CAN/DBC 数据集怎么选:四类来源与三道筛查 —— 把来源快照与规模核对放进选源流程
- DBC 规范索引:8 段关键字与 7 份可下载文件 —— DBC 语法关键字的对照入口
- Outlander PHEV 的 CAN 日志:双通道同录与三条总线怎么分工 —— 日志侧的多总线取证方法
- CANedge 到 InfluxDB:两种解码口径与 200 信号上限 —— 离线解码链的规模化边界
参考资料
- 项目 01 ——
public-can-dbc-datasets/additional/collin80-savvycan-examples/SOURCE.md(三份示例 DBC 的报文数、信号数、SHA-256 与修订版快照关系) - 项目 01 ——
public-can-dbc-datasets/additional/collin80-savvycan-examples/README.md(12 种读写格式、Qt 版本与分辨率要求、编译与排错步骤)
免责声明
本文所述示例 DBC 均为公开仓库中的演示文件,其代数、年款、硬件适配与信号验证均未在说明文件中确立,不代表车辆制造商的官方数据。文中数字均来自上述公开仓库的说明文件,未经独立实车验证。涉及安全相关用途时请仅作参考,并以实际测量与官方资料为准。
更新记录
- 2026-10-14 初稿
发表回复