EXCEL与DBC格式互转软件

一、软件用途


本软件用于 Excel 工作簿(.xlsx、.xlsm)与 CAN 数据库(.dbc)之间的双向转换,支持经典 CAN 和 CAN FD。程序会先读取并校验数据,再生成目标文件;源文件不会被覆盖。当前使用 ToDBC_Mode.xlsx 23 列模板,也兼容读取旧 22 列模板。

二、界面操作


  1. 在"源文件"框中输入路径,点击"选择文件",或将文件拖到主窗口。Excel 输入会自动建议 .dbc 输出;DBC 输入会自动建议 .xlsx 输出。

  2. 在"输出文件"框查看或编辑保存路径,也可点击"保存位置"选择文件名和目录。

  3. 导入 DBC 时,先选择正确的字符编码。默认 GB18030;若中文显示乱码,改选 UTF-8 后重新点击"校验 / 预览"。导出 DBC 时所选编码也用于生成文件。

  4. 点击"校验 / 预览"读取并检查源文件。通过后,"报文预览"显示报文列表;选中一个报文,可在"信号预览"查看它的信号。"转换日志"显示校验提示及重复信号合并信息。

  5. 点击"开始转换"生成输出。若目标文件已存在,确认覆盖后才会替换。转换失败时不会用不完整结果覆盖原有目标文件。

  6. 点击"打开输出目录"可打开目标所在文件夹。"另存模板"可将当前内置模板复制到可编辑的位置;程序安装目录中的原模板不会被覆盖。

三、EXCEL 模板填写


主工作表表头如下,列顺序必须保持不变:

Message ID、Message Name、Message Type、Message Comment、Message Length、Message Send Type、Cycle Time(ms)、Signal Name、Value Type、Byte Order、Signal Size(bit)、Start Bit、Factor、Offset、Init Value、Minimum、Maximum、Sender、Receiver、Signal Group、Comment、Unit、Coding。

• 报文行填写报文信息;后续信号行归属于最近一条报文行。也支持每个信号行都重复填写报文字段的平铺表格,但重复的报文属性必须一致。

• Message ID 可写十进制或十六进制,例如 1025 或 0x401。同一数据库内报文 ID 和报文名须唯一。

• Message Type:经典 CAN 使用 CAN_Standard 或 CAN_Extended;CAN FD 使用 CANFD_Standard 或 CANFD_Extended。

• Message Length 是实际载荷字节数,不是 DLC 编码。E 列提供下拉选项 0~8、12、16、20、24、32、48、64。经典 CAN 长度最多 8 字节;CAN FD 使用这些合法长度。

• Message Comment(D 列)是报文注释;Comment(U 列)是信号注释。两者会分别转换为 DBC 的报文注释和信号注释。

• Signal Size(bit)(K 列)是信号位长,手动输入 1~64;信号位长没有下拉框。Unsigned、Signed 可按需要填写;Float 必须是 32 位,Double 必须是 64 位。

• Byte Order 使用 Intel 或 Motorola。Start Bit 使用 DBC 位编号;Motorola 使用锯齿编号,通常表示信号最高有效位的位置。信号位不能越过报文有效载荷,也不能与同一复用分支的其他信号重叠。

• Factor、Offset、Minimum、Maximum 是信号物理值换算参数。Factor 留空默认为 1,Offset、Minimum、Maximum 留空默认为 0。Factor 必须非零,Minimum 不得大于 Maximum。

• Init Value 是 DBC 原始初始值属性;留空表示未设置。它不会自动进行 Factor 或 Offset 换算。

• Sender 是报文发送节点;同一报文的发送节点必须一致。Receiver 是信号接收节点,多个节点可用逗号或分号分隔。

• Signal Group 填信号组名称。Coding 每行一项,例如 0x0:关闭;范围可写作 0x5~0xE:保持。也支持单元格中的换行或字面量 \\n 分隔。

• 多个具有模板表头的工作表可以一起导入;没有模板表头的工作表会忽略。SignalExtras 和 DBC_Metadata 是软件反向导出时用于保存复用及扩展信息的辅助工作表,不要删除其中需要保留的数据。

• 公式单元格不参与转换。请在 Excel 中将公式结果复制并粘贴为值。旧版 .xls 文件请先另存为 .xlsx。

四、同名信号处理


在同一个报文内,如果多行 Signal Name 相同,软件会比较信号配置。起始位、位长、字节序、值类型、有无符号、Factor、Offset、初始值、最小值、最大值、单位、接收节点、信号组、注释和 Coding 均一致时,只建立一个信号,并在"转换日志"写明合并的工作表和行号。接收节点按集合比较,顺序不同不视为配置不同。

如果配置不一致,不会静默选用其中一行。日志和错误对话框会列出报文、信号名、两处源行号以及不一致字段。软件会继续检查其余工作表和行,汇总发现的问题后再停止转换。修正所有错误后重新预览并转换。

信号名称只在所属报文内比较。不同报文中出现同名信号是允许的,因为它们是不同的报文信号。

五、DBC 导入与导出


程序支持常见 BO_、SG_、节点、标准/扩展 ID、Intel/Motorola、有符号/无符号、Float/Double、报文周期、发送类型、初始值、报文与信号注释、枚举、信号组和基本 M / mN 复用。CAN FD 可与经典 CAN 混合,支持合法的 0~64 字节载荷长度。

反向导出的 Excel 主表使用当前 23 列。DBC 中的基本复用写入 SignalExtras;不能直接映射到模板的其他属性或扩展语句保存在 DBC_Metadata,以支持再次导入。修改报文 ID、名称或节点后,应检查 DBC_Metadata 原始语句中的引用。

不支持 SG_MUL_VAL_ 扩展或嵌套复用,遇到时软件会报错。BRS 等没有专用模板列的 CAN FD 属性会作为原始扩展语句保留。

六、校验与故障排查


• 报文长度或信号超界:确认 Message Length 填的是字节数;按报文类型选择合法 CAN/CAN FD 长度,并检查 Start Bit 与 Signal Size。

• Float / Double 位长错误:Float 改为 32,Double 改为 64。

• 报文 ID、报文名或信号重复:检查重复项;同一报文中配置一致的同名信号会自动合并,配置不同则须根据日志修正。

• 标准帧 ID 超限:标准帧最多 11 位(0x7FF);扩展帧最多 29 位(0x1FFFFFFF),并确认 Message Type 与 ID 类型匹配。

• 位重叠或 Motorola 越界:核对各信号起始位、位长和字节序。Motorola Start Bit 使用 DBC 锯齿编号,不要按线性字节序换算。

• 中文乱码:DBC 文件按正确编码重新导入。界面默认 GB18030,可尝试 UTF-8。若模板中的原始文字已经损坏,切换编码无法恢复丢失字符。

• 公式、缺少列或格式错误:将公式粘贴为值,核对 23 列表头名称和顺序,并检查"转换日志"指出的工作表及行号。

• 输出文件无法保存:确认目标文件未被 Excel、CANdb++ 或其他程序占用,并确认目标文件夹可写。

七、文件与数据


转换只读取源文件,不修改源文件。输出文件写入所选位置;若未调整,通常与源文件位于同一目录。内置模板位于应用的 Templates 文件夹。安装版的程序文件可能位于 Program Files,因此建议将输出保存到文档、桌面或其他用户可写目录。

相关推荐
海宇AI4 小时前
零信任架构实战:基于海宇个人风险报告构建自动化分期商城信用额度初审网关
运维·人工智能·架构·自动化
IMPYLH5 小时前
Linux 的时间为什么会被拨回去
linux·运维·服务器
2601_963282775 小时前
寒地窄带通信工程实践:黑龙江哈尔滨对讲机选型、组网与合规运维总结
运维·服务器·网络
叼烟扛炮6 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
是真的小外套6 小时前
网络安全实战第14期:Week2周末闯关
网络·安全·web安全
xbzb7 小时前
OpenStack 网络管理(理论):Linux 网络虚拟化是 Neutron 的地基
linux·服务器·网络·openstack·network·neutron
我要见SA姐17 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·数据库·机器学习·oracle·回归
Android系统攻城狮8 小时前
Linux FFmpeg深度解析之avcodec_flush_buffers调用流程与实战(十九)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频进阶
QXWZ_IA9 小时前
边坡监测预算有限时的建设顺序:虚拟基准站与成本账
网络·数据库
Y3815326629 小时前
用 httpx 写 SerpBase 异步客户端:连接池与超时配置
运维·服务器·数据库