搞了这么多年硬件和工艺,我发现一个特别有意思的现象:很多工程师天天挂在嘴边的“BOM”,其实根本不是同一个东西。研发说的BOM、工艺那边排的BOM、车间产线上实际跑的BOM,名字都叫BOM,内容却差着十万八千里。等到试产出了问题,追责的时候才发现,大家手里的表根本对不上。今天就把设计BOM、工艺BOM和制造BOM这三者的区别、各自的用途、以及它们之间是怎么一步步转换的,一次说清楚。
这篇文章适合刚入行的硬件工程师、结构工程师,也适合在PDM/PLM或者ERP系统里负责物料数据维护的同行。哪怕你暂时不接触工艺和产线,理解了这三层BOM的演变逻辑,对你画原理图、出物料清单的时候也会有很大帮助——至少你知道你手里那份清单,到了下游会经历什么。
1. 三种BOM的真实身份:从图纸到交付物的一条物料主线
BOM的全称是Bill of Materials,字面意思就是物料清单。但物料清单只是一张表,真正让BOM复杂起来的,是这张表背后服务的对象、承载的信息以及它变化的节奏。业界习惯把BOM拆成EBOM、PPBOM、MBOM三类去看,分别对应设计、工艺规划、生产执行三个阶段。
1.1 设计BOM(EBOM):研发视角下的“图纸物料表”
设计BOM是产品从无到有最原始的物料台账,它的核心逻辑是跟着图纸和原理图走。在电子硬件项目里,EBOM通常由硬件工程师在画完原理图之后,从EDA工具(比如Altium Designer、Cadence Allegro、立创EDA)里导出的那份元件清单,内容包括位号、封装、规格型号、数量、是否关键器件等;在结构件领域,EBOM则对应三维模型装配树展开后的零件明细。
EBOM有两个典型特点。其一,它是按“功能模块+装配逻辑”组织的。比如一个电源板,EBOM会按照电源输入、滤波、DC-DC转换、保护电路这样的功能单元把元器件分组,这种组织方式跟原理图页面的划分高度一致,研发工程师能一眼找到某个功能对应的物料。其二,EBOM里的物料状态是“设计态”,也就是说,里面某些物料可能只是选型阶段的一个临时替代,或者某个物料还没完全确定供应商,甚至有几颗物料是“预留位”——原理图里画了位置,但实际可不贴。
这就导致EBOM不能直接拿去买料或者上线生产。原因很直接:EBOM没有考虑一个物料是否可采购、是否有替代料、是否需要在特定工序分阶段投入,也没有从单板->整机的路径去拆解物料。说得极端一点,EBOM是一份“理想的物料集合”,它默认所有物料按设计原样装配就能做出产品,而现实往往是需要调整的。
1.2 工艺BOM(PPBOM):工艺与制造的中间翻译层
PPBOM(Process Planning BOM)在不同企业里的叫法略有不同,有人叫工艺BOM,有人叫规划BOM,还有人直接叫它“虚拟件BOM”。它的本质是连接设计与生产的桥梁,核心任务是把EBOM整理成“面向工艺路线”的物料结构。也就是说,PPBOM关心的是:什么东西应该在什么阶段、以什么方式进入制造流程。
PPBOM对物料做的最关键操作是“虚实转换”。EBOM里有很多物料是功能性的逻辑组合,比如一个“电源模块组件”,在EBOM里可能就是多个电阻电容芯片的组合;但到了工艺BOM里,如果这个组件是外购的标准模块,就应该把它设成采购件;如果是内部组装件,则需要建立一个“虚拟件”或“中间件”的BOM节点,下面挂上组成它的零件清单。
PPBOM还有一个杀手级工作,就是引入“工艺路线”信息。每个物料对应哪个工序加工、在哪道工序投入、由哪个车间完成,这些在PPBOM里要梳理出来。比如机箱的钣金件,可能涉及下料、折弯、焊接、喷涂四道工序,PPBOM要把物料和工序绑定;而在电子装联领域,PPBOM要把PCB裸板、元器件、辅料(焊锡、助焊剂、三防漆等)分别挂到SMT、THT、组装、测试等不同工序节点下。
1.3 制造BOM(MBOM):产线真正执行和库存扣账的版本
MBOM是制造执行系统(MES)、ERP生产订单真正调用的物料清单,它描述的是“制造和装配一件产品实际需要的物料、顺序和数量”。MBOM和EBOM看上去很像,但细节不同,最重要的一点是:MBOM包含生产过程中需要但不会出现在图纸上的物料,比如标签、包装材料、工艺辅料、返修预留件等。
MBOM的结构更贴近“装配工序”。举个例子,一台设备在EBOM里可能是一棵完整的树:外壳组件、主板、电源、显示屏等等都在同一层;但在MBOM里,生产线是先装外壳,再装主板,然后装屏幕,最后统一测试、贴标签、包装。所以MBOM通常把物料按“工位”或“工序”重新组织,一个工位需要哪些物料、数量多少,一目了然。这种组织方式让领料、备料、上线核对都非常方便。
MBOM也是企业ERP系统里库存扣账的基准。车间的工人扫一个条码,系统知道这是哪个工单的哪个工序,自动扣减对应物料库存,靠的就是MBOM里的物料挂接关系。如果MBOM和实际装配不一致,轻则库存账实不符,重则影响交期。所以MBOM几乎是企业数据准确度要求最高的一份BOM。
1.4 三种BOM的核心差异对照
| 维度 | 设计BOM(EBOM) | 工艺BOM(PPBOM) | 制造BOM(MBOM) |
|---|---|---|---|
| 归属部门 | 研发/硬件/结构 | 工艺/IE/制造工程 | 生产/计划/物控 |
| 数据源头 | 原理图/3D模型 | 工艺路线设计 | 生产工单/工序装配 |
| 组织逻辑 | 功能模块/图纸结构 | 工艺路线/加工顺序 | 工位装配/领料顺序 |
| 是否含辅料 | 一般不含 | 部分含(工艺耗材) | 必须含(标签包材等) |
| 物料状态 | 设计选型态 | 工艺规划态 | 可采购/可执行态 |
| 核心用途 | 设计评审、选型验证 | 工艺准备、成本核算 | 采购执行、排产、库存扣账 |
| 变更频率 | 高(选型优化多) | 中(工艺调整时变) | 低(稳定执行期) |
这张表建议截图存一下,后面任何关于BOM的讨论,先把“你指的是哪一种”确认清楚,沟通效率能提升一半。
2. 为什么BOM要拆成三层:它背后解决的是企业协作的现实问题
有些小团队可能会觉得,搞这么多BOM太繁琐了,我们直接一张表用到死不行吗?坦率说,项目简单、产品单一、产量小的时候,一张大BOM确实够用。可一旦产品复杂一点、参与协作的部门一多,一张表根本扛不住,因为不同角色对物料数据的需求是冲突的。
2.1 研发、采购、产线,三方对BOM的诉求根本不一致
研发希望BOM反映“设计意图”,采购希望BOM反映“可采购性”,产线希望BOM反映“怎么装”。这三种诉求放在一张表里必然打架。
举一个具体场景:研发在EBOM里放了两颗容值相同但封装不同的MLCC电容,一颗是0402,一颗是0603,为什么?因为板子上预留了两档设计,需要根据实测结果决定最终贴哪颗。从研发角度看,这是很正常的备选设计。但采购看到这张表会疯掉,到底买0402还是0603?买多了库存积压,买少了交期延误。生产那边也头疼,产线到底按哪个封装贴?
如果BOM经过工艺层转换,这个问题就由“设计备选”变成了“执行确认”。工艺工程师会跟研发确认:量产阶段到底锁定哪一颗?确认后,工艺BOM里直接删除未选中的物料,制造BOM更是只保留确定要装的物料。这就是分层管理的意义——各层各司其职,研发层保留设计灵活性,制造层保证执行准确性。
2.2 从EBOM到MBOM的演变,本质是物料被“加工信息”加持的过程
我习惯把BOM的转换理解为一个“给物料不断加属性”的过程。EBOM里的物料就像一个刚出生的孩子,有名字、有规格、有父母(所属模块),但它还没被赋予社会角色——它要去哪个车间、走什么流程、跟谁配套。PPBOM就是给每个物料做“职业规划”的环节,制造BOM则是“上岗排班表”。
这么理解BOM转换可能更清晰:
- EBOM阶段:关注“是什么”(What)——哪些物料组成这个产品;
- PPBOM阶段:关注“怎么做”(How)——物料按什么工序、什么阶段投入;
- MBOM阶段:关注“用什么执行”(With what)——产线在哪个工位、领哪些料、装什么件。
每一层都是在上一层的基础上做“加上新东西”的工作,而不是推倒重来。所以这三种BOM之间天然存在血缘关系,EBOM是源头,PPBOM是枢纽,MBOM是终点。这也是为什么很多企业上PDM/PLM系统时,一定要把BOM变更的传递链条设计好——改了一层,要有流程驱动下一层同步更新,否则断层立马出现。
2.3 没有工艺层,直接EBOM转MBOM会发生什么
不少初创公司或者小批量产线的硬件团队,为了图省事,会让ERP实施方直接把EBOM导入系统当MBOM用。短期看确实省事,但隐患埋得特别深。
第一个隐患是虚拟件问题。EBOM里经常有“模块化”的物料组,比如一个传感器板由主芯片、外围电路、连接器组成,如果直接按EBOM展开,ERP里的生产订单会要求仓库分别发三样物料到产线,可产线实际是想让供应商直接供一套“传感器板组件”,而不是自己贴。这种差异轻则导致采购下单错误,重则整个生产计划崩掉。
第二个隐患是辅料和包材缺失。直接导入EBOM,说明书、合格证、泡沫衬垫、外箱、标签、扎带这些“生产必需品”全都没有。等东西做完了要包装才发现没料,临时补采购,交期必然延误。这类问题几乎每个直接转BOM的企业都踩过。
所以,工艺层不是可有可无的,它是BOM从“设计语言”翻译成“制造语言”的必经之路。规模小可以简化,但跳不过去。
3. 实操要点:从EDA/结构工具导出BOM,到底怎么处理和跨层转换
聊完了理论,下面说点能直接上手的东西。这一Part结合日常工作中最常碰到的几个场景——AD导出BOM、Cadence导出BOM、Creo二次开发读取BOM表,以及拿到类似SW6206这样的原厂方案BOM后怎么消化利用。
3.1 Altium Designer导出BOM的正确姿势与常见坑
AD导出BOM的门槛很低,菜单里头点一下就行,但导出来的表能不能用就是另一回事了。很多人导出的BOM要么没有位号合并,要么数量统计不对,要么找不到关键物料字段,根源在于导出前没有配置好模板。
我的习惯是优先使用AD的“Report”里的Bill of Materials功能,然后做三个关键配置:
第一,分组字段选“Comment”和“Footprint”组合。如果不分组,每个位号单独占一行,一颗料有10个位号就出现10行,BOM会膨胀得没法看。按Comment+Footprint分组后,同规格同封装的料会合并成一行,数量列自动汇总。
第二,必须勾选并配置“Include Parameters From Components”里的关键字段。至少要有 Manufacturer Part Number(厂商型号)、Supplier Part Number(供应商编号)、Description(描述),这三样是后面做物料匹配的基础。如果库里这些参数为空,导出的表就是残缺的,拿给采购也没法用。
第三,位号栏(Designator)要转成单行文本。AD默认的导出里位号可能是逗号分隔的列表,这个没问题,但如果用的是某些老版本或插件,位号可能被截断。我一般会在Excel里用一个简单公式再校验一下位号数量:拆分为多个单元格后统计非空个数,跟数量列做对比。数字对不上,说明导出的位号有问题。
还有一个细节:AD导出BOM前,先在原理图里跑一遍ERC(电气规则检查),确认没有未连接的引脚或悬空的元件。原因很简单,如果原理图本身有问题,导出的BOM哪怕格式再漂亮,也是带病出生。
3.2 Cadence导出BOM:用CIS数据库保证物料字段一致性
Cadence的OrCAD Capture导出BOM跟AD思路不同,它的优势在于配合CIS(Component Information System)数据库,可以强制保证原理图里的物料字段跟公司标准库一致。
用Cadence导出BOM,第一步要先确认原理图工程勾选了CIS配置。如果没有CIS,所有物料属性都靠工程师手动填,填错的风险极大。CIS的好处是,你从库里选一个料,它的厂家、型号、封装、价格档位、生命周期状态全部自动带出,BOM导出的可靠性从源头就得到了保障。
OrCAD的导出通常用“Tools -> Bill of Materials”菜单,里面可以配置输出的字段顺序。我比较推荐把Part Number作为BOM的第一列,因为它是后续跟ERP对接的唯一主键;然后是位号、数量、Value、Footprint、Description。字段顺序决定了下游同事的使用体验,采购、计划看同一份表,各取所需。
一个实用的技巧是:在Cadence导出BOM时,把“Combined property string”里面的分隔符设置成一个不容易冲突的字符,比如双竖线||。因为有些元件的Description里面会带逗号或分号,如果分隔符用逗号,导出后用Excel直接分列,内容就会错位。用||或~这种冷门字符,能大幅度减少分列出错。
3.3 Creo二次开发读取BOM表:结构工程师的自动化提效方案
结构领域跟电子领域不太一样,结构件的BOM通常在Creo、SolidWorks这类三维软件里以装配树的形式存在。Creo本身有“OMI”和“BOM报表”功能,但对于需要频繁导BOM的团队,手动导来导去太痛苦,所以很多人会走二次开发。
Creo二次开发读BOM,主流的路径有两条。一条是用Creo TOOLKIT写C++程序,另一条是用J-Link(Java)或者Web.Link(JavaScript)写脚本。对于大多数做结构的工程师来说,Web.Link是最容易上手的,因为它不用编译,写个JavaScript脚本放到Creo的启动目录就能跑。
我见过比较成熟的方案是这样做的:用J-Link遍历装配树,把每个零件/组件的名称、编号、数量、材料、重量、备注导出成一个XML或CSV文件,然后通过脚本自动生成结构BOM表。整个过程不需要人工打开模型一棵树一棵树地展开,效率提升非常明显。这里的关键在于,Creo模型里的参数命名要统一,比如零件号参数统一叫CNAME,材料参数统一叫CMAT,否则脚本没法对所有模型通用。
平面的建议是:如果你所在企业有PLM系统,Creo二次开发导BOM表的动作尽量直接对接PLM的接口,把数据写入PLM的BOM模块,而不是导成Excel再人工导入。因为Excel中转一次,数据就可能被改一次,准确性就掉一次。
3.4 拿到SW6206这类原厂方案BOM后,怎么消化吸收
热词里出现了“SW6206原厂方案(包含PCB、原理图、寄存器列表、BOM等全套资料)”,这里稍微展开一下。SW6206是一款非常常见的电源管理/移动电源主控芯片,很多做消费电子的工程师都会拿到原厂或者方案公司提供的全套参考设计,里面就包含了BOM。
这种原厂BOM最大的价值是“参考”,而不是“直接量产”。原厂的BOM往往是在理想条件下设计的,用的物料可能都是大品牌、好采购、贵价的料。拿到这种BOM,正确的处理方式是分三个步骤:
第一步,筛选关键器件。主控芯片、Flash、电感、MOS管、充电协议相关的器件,这些是核心,尽量不要动,动任何一个都可能影响功能性能。原厂BOM里这些物料的规格型号必须原样保留。
第二步,对被动器件做替代评估。电阻电容这类通用物料,原厂BOM里可能用的是村田或者TDK,如果你有长期合作的国产替代品牌,比如风华、宇阳,可以小批量试焊验证后替换。但必须确认容差、耐压、温度系数这三个参数不低于原设计。
第三步,把原厂BOM转换成自己的编码体系。原厂给你的BOM里可能直接是厂家型号,而你的公司有自己的物料编码规则,需要把厂家型号映射到公司内部编码,然后才能进ERP。这一步别忽略,很多人直接拿着原厂BOM找供应商下单,结果采购系统里没有对应编码,流程根本走不动。
4. 从EBOM到MBOM的实操演绎:一颗物料的“变形记”
光讲概念可能还不够直观,下面用一个简化的电子产品的例子,把一颗物料从EBOM里的一个字符串,变成MBOM里产线能直接扫条码的料,完整走一遍。
4.1 设计阶段的原始记录
假设我们要做一款蓝牙温湿度传感器,硬件工程师在AD里画完原理图后,导出EBOM,其中有这么一行:
| 位号 | Value | Footprint | 厂家型号 | 数量 |
|---|---|---|---|---|
| C12, C13, C14, C15 | 100nF/50V/X7R | 0402 | GRM155R71H104KE14D | 4 |
这一行在EBOM里没有任何问题,它表示设计需要4颗100nF电容,放在C12到C15这四个位号上。但到了工艺和制造阶段,这行信息是不够的——至少还有三个问题没回答:这料从哪买?在哪个工序用?损耗算多少?
4.2 工艺BOM的处理逻辑
工艺工程师拿到EBOM之后,先做三件事。
第一件事,核对物料状态。GRM155R71H104KE14D是村田的型号,价格高、货期长,工艺或采购会评估是否有可替代的国产料。如果公司有替代料库,比如有一家国产厂的料C1005X7R1H104K050BA,规格参数一模一样,经过验证可以替换,那么PPBOM里会把“首选料”和“替代料”都标出来,采购下单时优先买国产料,缺货时切换村田。
第二件事,附加工艺信息。100nF电容属于表贴元件,理论上在SMT回流焊工序随PCB一起贴装,所以PPBOM中把这颗料归属到“SMT贴片工序”,同时需要定义一个关键属性——“供料方式”。考虑到0402封装特别小,编带供料必须用8mm编带,这些信息会在工艺BOM里备注清楚,供贴片机编程读料站时参考。
第三件事,核算损耗率。SMT贴片0402封装的电容,行业里正常的损耗率大概在千分之三到千分之五。如果一次投产1万片,那采购数量按10040到10050颗下单比较合理。这个损秗率在PPBOM里会作为参数记录,ERP跑MRP(物料需求计划)的时候会自动把这部分安全量算进去。
4.3 制造BOM的最终形态
制造BOM接收到PPBOM传递过来的信息后,做最后一步调整:把物料按工位结构化。SMT贴片工位需要这4颗电容,那MBOM里就会生成一个“SMT工位用料清单”,包含100nF电容、对应编带规格、以及贴片机程序里的Feeder编号。产线操作员扫料时,直接对照MBOM的工位清单领料,不会出现多领少领的问题。
如果这个产品还有组装和包装工序,MBOM还会在最后追加说明书、合格证、吸塑盘、纸箱这些物料,这些在EBOM和PPBOM里通常是看不到的。到这里,一颗电容从EBOM里的一个设计符号,变成了产线手里的实物,BOM的三层演变才算走完。
5. 常见问题与排查技巧:BOM转换中那些让人头大的坑
最后聊聊实际工作中BOM转换最常见的几个问题,以及我自己的排查思路。这些问题几乎每个做硬件和制造的人都会遇到,提前了解能省不少事。
5.1 物料一物多码和一码多物
一物多码是指同一个物料,在不同工程师或者不同时期被创建了多个编码,比如村田那颗GRM155R71H104KE14D,有人建成了M1005-104K-50V,有人建成了CAP-0402-100NF,其实都是它。一码多物则反过来,一个编码下面挂了多种规格,多半是旧编码复用导致的。
排查思路是:在物料主数据里筛选“厂家型号+封装+规格”完全一致但编码不同的物料,定期合并;同时建立编码申请规范,同一规格的物料禁止新建编码。这事靠人自觉很难,上一个PLM系统,在编码申请环节做查重拦截,才能从机制上根治。
5.2 BOM版本不对齐导致生产用错料
研发更新了EBOM,但工艺BOM和制造BOM没跟着变,产线还在按老版本生产。这个问题在没上PLM的企业极为常见。我见过最严重的案例是,一个结构件的EBOM从V1.2升到V1.3,只是改了一个螺丝的长度,结果工艺那边没同步,生产还是用旧料,整批产品装配后干涉,全部返工。
排查技巧核心就一句话:版本变更必须走“BOM变更单”,并且把变更影响范围定清楚。影响范围至少要包含三个地方——采购是否还有旧料库存、工艺路线是否要调整、产线工装/程序是否要变。如果三个答案都是否,才能放行;有一个是,就要走对应的再确认流程。
5.3 多工厂/多产线用同一份MBOM,但工艺能力不同
有些公司有几个生产基地,A工厂有高速贴片机,B工厂只有老式贴片机。同样一块PCBA,A工厂可以贴0402封装的料,B工厂良率很低。如果MBOM不做区分,B工厂按同一份MBOM排产,良率一定难看。
这类问题的解法是“MBOM按工厂/产线做视图”。PLM或ERP里同一个成品编码可以挂多个BOM视图,不同工厂调用对应视图。工艺工程师在发布PPBOM时,一定要加上“工厂适应范围”的属性,并在MBOM里做对应过滤。这个做法在汽车电子和大型家电企业里已经很成熟,中小型公司往往意识不到,等踩坑了才补。
5.4 替代料在BOM里的管理方式
很多制造企业的BOM里允许设置替代料,但这个替代关系的有效期和验证状态必须管好。我的建议是把替代料分成两类:一类是“已验证替代”,就是经过可靠性测试、小批量试产,可以随时切换;另一类是“临时替代”,比如主料缺货、客户交期紧,用一颗规格接近的料顶上,但只限本次工单有效。
在MBOM里,已验证替代料可以长期挂着,生产系统缺料时自动建议切换;临时替代料一定不要挂在标准MBOM里,要挂在具体工单上,生产完成后自动失效。不然这批用的替代料会一直留在BOM里,下次排产系统又按它跑MRP,干扰库存规划。
5.5 BOM准确率的日常监控方法
BOM准确率是制造企业非常核心的指标,但很多公司从来没认真统计过。最简单的监控方法是“产线盘点法”:随机抽若干工单,拿着MBOM去产线一一核对,看实际领料是否跟BOM一致,差异项记录下来,月度汇总算出准确率。
这个方法不需要上什么高级系统,但效果很好。一两次盘点下来,哪个环节BOM容易出问题就清楚了,是研发没更新,还是工艺挂错工位,还是物控改了编码没同步,数据一摆,责任一目了然。
写在最后
BOM这东西,入门容易,精深很难。很多人干了好几年,可能还只见过其中一种形态,却以为那就是BOM的全部。把设计BOM、工艺BOM、制造BOM的差异理清楚,往小了说,是避免项目沟通时扯皮;往大了说,是一家企业从“几个人手工做产品”走向“一套数据驱动制造”的必经起点。
我个人在实际操作中最深的体会是:BOM不是一张表,而是一条链。这条链从研发的创意开始,穿过工艺的规划,落到产线的执行,中间任何一个环节的失真都会在最终产品上暴露出来。下次当你再打开一份BOM文件时,不妨先问一句:这到底是哪一种BOM?它在我这条链上处于什么位置?想清楚了这两个问题,很多数据混乱的问题,其实已经解决了一半。