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,因此建议将输出保存到文档、桌面或其他用户可写目录。

相关推荐
yychen_java1 小时前
第十二篇:完整项目实战——构建可验证的能源智能运维 Agent 中枢
运维·人工智能·能源
9624561 小时前
餐饮 SaaS 优惠券系统架构演进(七)营销定价引擎设计:活动、会员价、优惠券、买赠如何在同一 PriceQuote 中可解释地组合
java·运维·算法
重生之高冷汉堡包1 小时前
什么是数据中心代理?原理拆解、类型区别、应用场景与选型指南
服务器·网络·数据库·安全·ip
Frank_refuel1 小时前
分布式IoT数据采集与存储系统(项目复盘)
运维·服务器
青衫客361 小时前
从网卡到 Socket:再探 Linux 网络协议栈与 iptables 数据包处理流程
linux·网络·网络协议
承渊政道1 小时前
Linux网络学习【TCP Socket编程实战:connect的断线重连与客户端访问Linux验证】
linux·网络·学习·ubuntu·tcp·socket编程
java_logo2 小时前
Docker 部署 Portainer CE:轻松搭建容器管理平台
运维·docker·容器·portainer·容器管理·轩辕镜像·portainer-ce
雪落漂泊2 小时前
Linux基础开发工具(一)软件包管理器与Vim编辑器篇
linux·运维·服务器
崽崽..2 小时前
【Linux】网络编程的调试工具以及连接失败的具体排查方法
linux·网络