

一、软件用途
本软件用于 Excel 工作簿(.xlsx、.xlsm)与 CAN 数据库(.dbc)之间的双向转换,支持经典 CAN 和 CAN FD。程序会先读取并校验数据,再生成目标文件;源文件不会被覆盖。当前使用 ToDBC_Mode.xlsx 23 列模板,也兼容读取旧 22 列模板。
二、界面操作
-
在"源文件"框中输入路径,点击"选择文件",或将文件拖到主窗口。Excel 输入会自动建议 .dbc 输出;DBC 输入会自动建议 .xlsx 输出。
-
在"输出文件"框查看或编辑保存路径,也可点击"保存位置"选择文件名和目录。
-
导入 DBC 时,先选择正确的字符编码。默认 GB18030;若中文显示乱码,改选 UTF-8 后重新点击"校验 / 预览"。导出 DBC 时所选编码也用于生成文件。
-
点击"校验 / 预览"读取并检查源文件。通过后,"报文预览"显示报文列表;选中一个报文,可在"信号预览"查看它的信号。"转换日志"显示校验提示及重复信号合并信息。
-
点击"开始转换"生成输出。若目标文件已存在,确认覆盖后才会替换。转换失败时不会用不完整结果覆盖原有目标文件。
-
点击"打开输出目录"可打开目标所在文件夹。"另存模板"可将当前内置模板复制到可编辑的位置;程序安装目录中的原模板不会被覆盖。
三、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,因此建议将输出保存到文档、桌面或其他用户可写目录。