尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

从设计到生产:构建装配视图BOM的完整实践指南

从设计到生产:构建装配视图BOM的完整实践指南 在电子设计自动化EDA和机械设计领域物料清单Bill of Materials简称 BOM是连接设计、采购、生产和装配的核心文件。一个完整的 BOM 不仅需要列出所有元器件的详细信息更需要清晰地展示这些元器件在最终产品中的物理装配关系。这就是“装配视图”的价值所在。很多工程师在导出基础 BOM 后面对如何将原理图或 PCB 布局中的逻辑连接转化为指导实际生产的装配层级结构时常常感到无从下手。他们可能得到了一个包含位号、型号、数量的扁平列表却不知道哪个部件属于哪个子板或者多个相同型号的器件该如何区分安装位置。本文将以一个典型的电子硬件开发流程为背景深入讲解如何从设计文件如 Cadence Allegro、Altium Designer 或 SolidWorks出发创建出结构清晰、信息准确的装配视图 BOM。我们将重点关注“创建”这一动作背后的逻辑、数据提取方法、层级构建规则以及最终输出的验证而不仅仅是某个软件的点击操作。无论你是硬件工程师、PCB 设计师还是负责生产导入的工程师都能通过本文理解从设计数据到可指导生产的装配 BOM 的全链路实践。1. 理解 BOM 表与装配视图的核心关系在深入操作之前必须厘清几个核心概念这是避免后续数据混乱的基础。1.1 什么是 BOM 表BOM 表是构成一个产品所需的所有物料项目的结构化清单。一份基础的 BOM 通常包含以下关键字段位号 (Reference Designator) 如 R1, C2, U3在电路板或装配图上唯一标识一个元器件的位置。物料编码 (Part Number) 公司内部或供应商提供的唯一标识符用于采购和库存管理。描述 (Description) 物料的名称、规格说明如 “10kΩ, 1%, 0805 Resistor”。数量 (Quantity) 在该产品或装配层级中所需的数量。封装 (Package/Footprint) 物料的物理外形和焊盘尺寸如 0805, SOIC-8。一个简单的 BOM 表示例CSV 格式Reference, Part Number, Description, Quantity, Package R1, R-10K-0805, RES 10K OHM 1% 1/8W 0805, 1, 0805 C1, C-10uF-0805, CAP CER 10UF 10V X5R 0805, 1, 0805 U1, IC-MCU-STM32F103, MCU 32BIT ARM CORTEX-M3, 1, LQFP-48这种 BOM 是“扁平化”的它列出了所有物料但没有体现它们之间的组装关系。1.2 为什么需要装配视图装配视图有时也称为“层级化 BOM”或“制造 BOM”在扁平 BOM 的基础上引入了产品结构树的概念。它按照产品的实际物理组装顺序来组织物料。核心价值在于指导生产装配 明确告诉生产线先装子板 A再将子板 A 装到主板 B 上。避免了物料混装和工序错误。精确成本核算 可以分别计算子装配体如电源模块、显示模块的成本便于模块化定价和成本分析。清晰的物料归属 在多板卡主板子板或包含外购模块如 WiFi 模组的产品中能明确区分哪些物料属于哪个部件。支持模块化设计与复用 一个成熟的子装配体如标准电源模块可以被多个产品引用只需在顶层 BOM 中引用该模块即可无需重复列出其所有下级物料。一个装配视图 BOM 的简化结构示例产品智能网关 (P-1000) ├── 装配主板 (ASSY-MAIN-01) │ ├── PCB 主板裸板 (PCB-MAIN-REV1.2) │ ├── 物料 U1, MCU, ... (属于主板) │ ├── 物料 R1, R2, C1, C2, ... (属于主板) │ └── 装配 电源子板 (ASSY-PWR-01) (作为一个整体被引用) │ ├── PCB 电源板裸板 (PCB-PWR-REV1.0) │ ├── 物料 U10, PWM IC, ... (属于电源子板) │ └── 物料 L1, D1, ... (属于电源子板) ├── 装配 外壳组件 (ASSY-ENCL-01) │ ├── 物料 上盖 (PLASTIC-TOP) │ └── 物料 下盖 (PLASTIC-BOTTOM) └── 物料 螺丝 (SCREW-M3x5), 4个 (属于顶层)1.3 设计数据如何映射到装配视图这是创建装配视图的技术关键。映射关系依赖于设计工具中的信息原理图层次化设计 在 Altium Designer 或 OrCAD 中你可以用“子图”或“层次化框图”来表示一个功能模块如电源。这些子图会对应装配视图中的一个子装配体。PCB 中的器件层与装配层 如 Allegro 中的ASSEMBLY_TOP和ASSEMBLY_BOTTOM层定义了顶面和底面的装配图形。导出 BOM 时包含器件层信息可以帮助区分顶贴和底贴器件这对于生成面向 SMT 贴片的装配工位图至关重要。机械装配体 在 SolidWorks 中装配体文件.sldasm天然就是一棵结构树。其中的子装配体和零件直接对应 BOM 的层级。位号前缀约定 虽然不是绝对可靠但常见的位号前缀有时用于暗示器件类型或所属模块如U代表 ICJ代表连接器P代表插头等可作为辅助判断信息。注意 设计工具的层级并不总是与制造装配层级完全一致。例如原理图中为了绘图方便可能将多个模块画在一张图上但生产时它们是独立的板卡。创建装配视图时需要以实际物理组装方式为准对设计数据进行重新组织和归并。2. 环境准备与数据源梳理创建装配视图 BOM 不是一个孤立的任务它严重依赖于上游设计数据的完整性和规范性。在开始操作前请完成以下准备工作。2.1 设计文件与工具确认首先明确你的数据来源和所需工具设计领域可能的设计工具关键输出文件用于 BOM备注电子电路 (ECAD)Cadence Allegro/OrCAD, Altium Designer, KiCad, Mentor PADS原理图文件(.dsn,.SchDoc), PCB文件(.brd,.PcbDoc), 网表核心数据源提供位号、参数、封装、网络连接。机械结构 (MCAD)SolidWorks, AutoCAD, Fusion 360, Creo3D 装配体文件(.sldasm,.iam), 2D 工程图提供外壳、支架、螺丝等非电子物料以及装配关系。BOM 管理/ERPArena, Oracle Agile, SAP, 或自研系统物料主数据、已有组件库、替代料信息提供标准的物料编码、描述、供应商信息确保 BOM 与公司物料系统一致。行动清单定位最新版本 确保你使用的是已发布或基线化的设计文件版本如PCB_Main_V1.2和SCH_Main_V1.2。检查设计完整性 确保所有器件都有正确的位号、封装和必要的参数如阻值、容值、芯片型号。统一命名规范 检查原理图符号库、PCB 封装库、3D 模型库的命名是否一致且符合公司规范。2.2 建立物料编码映射库这是将设计参数转化为可采购物料的关键一步。你需要一个映射表通常是一个 Excel 文件或数据库查询将设计中的“描述”或“型号”映射到公司的“物料编码”。示例映射表 (part_mapping.csv):Designator_Prefix, Schematic_Part, Value/Model, Manufacturer, Internal_Part_Number, Description RES, RESISTOR, 10k, Yageo, R-10K-0805-1%-YAG, RES 10K OHM 1% 1/8W 0805 CAP, CAPACITOR, 10uF, Murata, C-10UF-10V-X5R-0805-MUR, CAP CER 10UF 10V X5R 0805 IC, MICROCONTROLLER, STM32F103C8T6, ST, IC-MCU-STM32F103-LQFP48-ST, MCU 32BIT ARM CORTEX-M3 64KB FLASH ...为什么需要这个因为设计中的“10k”可能对应多个不同精度、功率、封装的电阻采购必须依据唯一的物料编码。在创建 BOM 时脚本或工具可以依据此映射表自动填充Part Number和标准Description。2.3 定义装配层级规则在开始导出数据前必须和结构工程师、生产工程师共同确定产品的装配层级。例如层级 0 (产品) 最终可销售的完整产品。层级 1 (主要装配体) 如主板总成、外壳总成、线束总成。层级 2 (子装配体) 如主板上的电源模块可能是一块独立的子板、显示模块、射频模块。层级 3 (PCB/裸板) 每一块需要贴片的印刷电路板本身也是一个“物料”。层级 4 (元器件) 最底层的电阻、电容、芯片等。将这套规则文档化它将指导你如何对导出的原始数据进行分类和聚合。3. 从设计工具导出原始 BOM 数据现在我们从设计工具中提取第一手数据。以Altium Designer和SolidWorks为例这是两种最常见的数据源。3.1 从 Altium Designer 导出包含层级信息的 BOMAltium 的 BOM 导出功能非常强大关键在于配置。打开装配体项目 确保你的.PrjPcb项目文件已打开并且所有原理图文档都已正确编译无错误。执行 BOM 导出 菜单Reports-Bill of Materials。关键列配置 在 BOM 对话框中你需要将以下字段拖到“Grouped Columns”用于创建层级或“All Columns”用于显示区域Document 原理图文档名。如果使用了层次化设计不同子图的器件会归属不同文档这是构建装配层级最重要的依据之一。Description,Designator,Footprint,QuantityPart Number 如果已在原理图符号中填写了公司物料编码则直接使用。Comment 通常存放型号或参数值。Layer 器件所在 PCB 层Top/Bottom用于区分贴装面。分组与层级化 将Document字段拖入“Grouped Columns”的顶部。这样BOM 会首先按原理图文档即逻辑模块进行分组每个分组下再列出该模块的所有器件。这已经初步形成了基于设计逻辑的层级视图。导出数据 选择导出格式为Excel或CSV保存文件例如BOM_Raw_From_Altium.csv。导出的分组 BOM 片段可能如下Grouped By: [Document] - Document: Power_Supply.SchDoc Designator | Comment | Description | Footprint | Quantity U10 | LM2675 | SIMPLE SWITCHER... | SOIC-8 | 1 L1 | 22uH | Inductor | 1210 | 1 D1 | SS34 | Schottky Diode | SMA | 1 - Document: MCU_Board.SchDoc Designator | Comment | Description | Footprint | Quantity U1 | STM32F103| MCU | LQFP-48 | 1 R1, R2 | 10k | Resistor | 0805 | 23.2 从 SolidWorks 导出结构化 BOM对于机械部件SolidWorks 能直接生成带有装配层级的 BOM。打开顶级装配体文件 打开代表最终产品的.sldasm文件。插入表格 在工程图环境或装配体环境中选择插入-表格-材料明细表。配置 BOM 类型 在材料明细表属性中选择“仅限顶层”、“仅限零件”或“缩进”。创建装配视图必须选择“缩进”。这将生成一个树状结构的 BOM清晰显示装配体、子装配体和零件的关系。自定义列 确保表格包含以下列项目号、数量、零件号对应物料编码、说明描述、材料等。导出表格 将材料明细表另存为Excel文件例如BOM_Raw_From_SW.xlsx。导出的缩进 BOM 结构在 Excel 中看起来像这样项目号 | 零件号 | 说明 | 数量 1 | ASSY-TOP | 产品总成 | 1 1.1 | PCB-MAIN | 主板组件 | 1 1.1.1 | PCB-MAIN-REV1 | 主板裸板 | 1 1.1.2 | IC-MCU | 主控芯片 | 1 1.1.3 | R-10K | 10K电阻 | 5 1.2 | ENCLOSURE | 外壳组件 | 1 1.2.1 | PLASTIC-TOP| 塑料上盖 | 1 1.2.2 | PLASTIC-BOT| 塑料下盖 | 1 1.2.3 | SCREW-M3 | M3螺丝 | 43.3 处理 Allegro 等工具的导出对于 Allegro通常通过Tools-Reports功能导出 BOM。关键是要在报告设置中勾选输出Ref Des、Comp Value、Part Number来自元件属性以及ASSEMBLY_TOP/ASSEMBLY_BOTTOM层的器件信息。这能帮助后续区分贴片面。导出的通常是文本文件需要进一步用脚本或 Excel 进行解析和格式化。4. 整合与构建装配视图 BOM现在我们有了来自 ECAD 和 MCAD 的原始数据。下一步是将它们整合并按照第 2.3 节定义的物理装配规则进行重构。4.1 数据清洗与标准化将导出的 CSV/Excel 文件在 Excel 或 Python使用 pandas 库中进行处理。常见清洗任务统一列名 将Designator、Ref Des、位号统一为Reference。将Part Number、零件号、物料编码统一为Part_Number。处理多值单元格 ECAD 导出的 BOM 中相同物料的设计位号可能合并为一个单元格如R1, R2, R3。为了后续处理有时需要将其拆分为多行每行一个位号但保留相同的物料信息。这取决于下游 ERP 系统的要求。应用物料映射 使用 VLOOKUP 函数或 pandas 的merge操作根据Comment型号或Description描述去匹配part_mapping.csv为每一行数据填充标准的Part_Number和Description。标记数据来源 新增一列Source标记该行数据来自Altium、SolidWorks还是Manual手动添加的物料如润滑脂、硅胶垫。4.2 构建装配结构树这是核心步骤。你需要创建一个新的工作表或数据结构来代表装配视图。手动构建适用于简单产品新建一个 Excel 工作表命名为Assembly_BOM。按照层级规则从顶层产品开始逐级创建“装配项”。对于每个“装配项”它包含两类内容子装配体 引用另一个装配项如“电源模块”。物料 具体的元器件、标准件、原材料。为每一行数据定义关键字段Level: 层级编号如 1, 1.1, 1.1.1Type: 类型Assembly,Part,PCBItem_Number: 项目号如100,110,111Part_Number: 物料编码对于装配体可以自定义一个编码如ASSY-PWR-01Description: 描述Quantity: 数量注意此数量是相对于其父项的数量Reference: 位号仅对Part类型有效且属于该装配体Source_Assembly: 该物料所属的装配体用于数据关联和校验示例Assembly_BOM工作表结构Level, Type, Item_Number, Part_Number, Description, Quantity, Reference, Source_Assembly 1, Assembly, 100, P-1000, 智能网关, 1, , 1.1, Assembly, 110, ASSY-MAIN-01, 主板总成, 1, , 100 1.1.1, PCB, 111, PCB-MAIN-REV1.2, 主板裸板, 1, , 110 1.1.2, Part, 112, IC-MCU-STM32F103, 主控芯片, 1, U1, 110 1.1.3, Part, 113, R-10K-0805, 10K电阻, 5, R1,R2,R3,R4,R5, 110 1.2, Assembly, 120, ASSY-ENCL-01, 外壳组件, 1, , 100 1.2.1, Part, 121, PLASTIC-TOP, 塑料上盖, 1, , 120 1.2.2, Part, 122, PLASTIC-BOT, 塑料下盖, 1, , 120 1.2.3, Part, 123, SCREW-M3x5, M3x5螺丝, 4, , 1204.3 使用脚本半自动化整合进阶对于复杂产品或频繁更新的项目建议使用 Python 脚本自动化此过程。脚本工作流思路读取 用pandas读取清洗后的 ECAD BOM (df_ecad) 和 MCAD BOM (df_mcad)。定义映射规则 创建一个配置文件 (rules.yaml)定义如何将原理图文档名或位号前缀映射到装配体。assembly_mapping: - source: “Power_Supply.SchDoc” # Altium 文档名 assembly_part_number: “ASSY-PWR-01” assembly_description: “DC-DC 电源模块” level: “1.1.4” # 在主板的层级下 - source_prefix: “J” # 位号以 J 开头 assembly_part_number: “ASSY-CONN-01” assembly_description: “连接器组件” level: “1.1.5”处理与归并 脚本遍历df_ecad的每一行根据映射规则将其Reference和Part_Number分配到对应的装配体下。同时将df_mcad的数据作为独立的装配体或顶层物料插入。生成结构树 脚本按照层级顺序输出最终的Assembly_BOM.csv。这种方法确保了数据的一致性和可追溯性当设计变更时只需重新运行脚本即可更新 BOM。5. 验证、输出与导入 ERP创建好的装配视图 BOM 必须经过严格校验才能投入使用。5.1 完整性校验清单在发布前请逐项核对[ ]数量守恒 所有底层元器件的数量总和是否等于各层级装配体数量乘以其内部用量的总和可以用 Excel 公式验证。[ ]位号无遗漏 从原始 ECAD BOM 导出的所有位号是否都分配到了某个装配体中是否存在“孤儿”位号[ ]物料编码有效 所有Part_Number是否都能在公司的物料管理系统中找到描述、规格是否匹配[ ]层级逻辑正确 装配关系是否符合实际生产工艺例如螺丝是否确实用于固定对应的外壳[ ]关键属性完整 对于采购和生产以下信息是否齐全制造商/供应商封装/规格是否有替代料是否属于客户指定物料5.2 生成最终交付物根据下游用户的需求生成不同格式的 BOM面向采购的扁平 BOM 将装配视图 BOM “压平”汇总所有唯一Part_Number的总需求数量。这可以通过数据透视表轻松实现。面向生产的装配指引 BOM 保留完整层级并可以附加更多信息如每道工序的站位号、贴片坐标文件链接、装配示意图编号。可视化装配图 结合 Altium 的装配图输出或 SolidWorks 的爆炸视图在 BOM 中引用相关图纸编号实现图文关联。5.3 导入 ERP/PLM 系统这是最后一步也是 BOM 数据“落地”的一步。通常需要将最终的Assembly_BOM.csv转换为 ERP 系统要求的特定模板格式。关键注意事项字段映射 确保你的 CSV 列名与 ERP 导入模板的列名完全一致。数据格式 注意数字、日期的格式避免前导零丢失如物料编码00123变成123。父子关系字段 ERP 系统通常有Parent_Item和Child_Item或Level字段来维护 BOM 结构。按照系统手册正确填写。试导入 先在测试环境进行导入检查结构树是否正确建立物料是否成功关联。版本控制 在 ERP 中任何 BOM 变更都应生成新版本并与设计文件版本号关联确保可追溯。6. 常见问题与排查路径在实际操作中你可能会遇到以下典型问题。6.1 问题导出的 BOM 中器件描述或参数缺失现象 BOM 中Description列为空或Value值不正确。可能原因原理图符号的属性未正确填写。例如电阻的Value属性未设置。原理图库符号中用于映射到 BOM 的字段名与 BOM 输出配置中的字段名不匹配。器件属性被隐藏或未导出。排查步骤在原理图中双击有问题的器件检查其属性对话框确认Value、Description、Part Number等关键属性已填写。检查原理图库中该符号的定义确保相关属性存在且命名规范。在 BOM 导出配置中检查“All Columns”列表确保包含了所需的属性字段如Parameter:Value。6.2 问题装配视图中的数量计算错误现象 顶层产品所需物料总数与各子装配体需求汇总数对不上。可能原因重复计算 同一个物料在多个子装配体中被错误地重复列出且未考虑顶层数量。层级数量因子错误 子装配体 A 需要 2 个其内部的电阻 R1 数量为 1。那么顶层对电阻 R1 的总需求应该是 2 * 1 2 个。计算脚本或公式错误。虚拟件/外协件处理不当 将实际需要采购的物料误标为“虚拟件”导致未计入采购需求。排查步骤使用 Excel 数据透视表分别按扁平化和层级化方式汇总各Part_Number的数量对比差异。逐级检查装配体数量。从最底层零件开始向上逐级乘法计算验证总数。审查Type字段确认所有Part类型的项目都是真实物料所有Assembly类型都不直接参与采购汇总。6.3 问题位号无法归属到正确的装配体现象 在整合后的 BOM 中某些器件的Source_Assembly为空或错误。可能原因映射规则 (rules.yaml) 不完整未能覆盖所有原理图文档或位号前缀。设计变更后新增了原理图文档或位号但映射规则未更新。位号命名不规范导致基于前缀的规则失效例如连接器用了CN而不是J。排查步骤找出所有Source_Assembly为空的记录。回溯到原始 ECAD BOM查看这些位号所在的原理图文档名。更新映射规则文件补充新的映射关系。考虑在原理图设计规范中明确位号前缀与功能模块的对应关系从源头减少歧义。7. 最佳实践与扩展方向7.1 设计阶段的前置规范统一库管理 建立公司统一的原理图符号库、PCB 封装库和 3D 模型库并在符号中预定义好 BOM 相关属性如MPN、Manufacturer。推行层次化设计 在原理图阶段就使用层次化图纸使设计逻辑与装配逻辑尽可能对齐。属性填写检查 将关键属性如Value、MPN的填写纳入设计评审环节。7.2 BOM 管理流程自动化CI/CD 集成 将 BOM 生成脚本集成到 Git 提交钩子或 CI 流水线中。每次设计文件更新自动触发 BOM 生成、校验并发布到内部站点。与 PLM 系统联动 通过 API 将自动生成的 BOM 直接推送至 PLM 系统创建变更单减少人工录入错误。差异对比报告 脚本自动对比新旧版本 BOM生成增、删、改的差异报告便于快速评审。7.3 扩展面向不同角色的 BOM 视图一个主 BOM 数据源可以衍生出多种视图采购 BOM 包含供应商、采购周期、单价、替代料信息。制造 BOM 包含工艺路线、工时、站位号、测试要求。维修 BOM 包含故障率、维修备件建议、关键物料标识。成本 BOM 关联最新采购价实时计算产品材料成本。创建装配视图 BOM 不是一次性的数据转换任务而是一个需要设计、物料、生产等多部门协同的持续过程。其核心在于建立从设计数据到生产指令的准确、自动化的信息流。通过规范设计源头、利用工具脚本、严格执行校验你可以将这项繁琐的工作转化为稳定可靠的工程实践显著减少生产错误和沟通成本为产品的顺利制造打下坚实基础。下一步你可以尝试将本文的手动或脚本流程封装成团队内部的一个标准化工具或模板让每一位工程师都能更轻松地生成高质量的装配 BOM。
返回列表