e-works数字化企业网  »  文章频道  »  产品创新数字化(PLM)  »  PDM/PLM

基于GBOM和差异表的新型BOM的设计与实现

2015/7/29        作者:朱芳来  董志豪  徐立云      
关键字:BOM  GBOM  差异表  数据冗余  产品族  
在基于CBR的产品快速设计中会不断增加系列产品中的产品品种,而同一系列不同产品的BOM结构存在着相似性,如果仍采用传统的单产品BOM或GBOM会产生大量的数据冗余。在分析单产品BOM数据结构的基础上研究了一种基GBOM和差异表的新型BOM,并分析了其生成方法。新型BOM数据结构完整表达了产品的结构,便于BOM表的维护、分解等操作,数据冗余小。

0 引言

    物料清单(bill ofmaterial,BOM),又称为产品结构表或用料需求结构表,它是作为ERP系统计算物料需求过程的重要控制文件,其组织结构设计的合理与否直接影响到系统的处理性能。传统的BOM基于一个产品有一个BOM,并以这个BOM结构为核心来组织文档管理、产品配置管理和工作流管理。在基于CBR(case-based reasoning)的产品快速设计中,为了满足客户的多样性需求,需要不断增加系列产品中的产品品种。在这种系列产品中,不同产品的BOM结构存在着相似性,且包含大量的相同零件。随着系列中产品品种的增加,包含这些零件的部件和产品将会相应增加,从而导致BOM结构的冗余。文献提出的通用物料清单(generic billof materials,GBOM)方法,提供了一种用有限数据描述大量产品品种的方式,用一个通用的产品结构树来表示产品族的完全产品结构,打破了传统BOM中一个BOM清单针对一个产品的固有模式,避免了结构冗余;其不足是即使是两个系列的产品存在极小的结构差异,也要建立两个产品结构树,仍不可避免地存在数据冗余。本文在单产品BOM数据结构的基础上研究了一种基于GBOM和差异表的新型BOM结构,并分析了其在关系型数据库中的存储模型,有效地降低了数据冗余。

1 BOM概念

    BOM是一个层次分明的产品及其零部件表,主要表明产品的加工装配结构以及相应零部件装配数量。BOM中的零部件来源于基础物料库。基础物料库是详细描述所有零件、部件、原辅材料的编号、版本、名称、材料、供应商、变更记录等信息的基本数据库。

    在新产品的设计过程中,企业会大量使用标准件和重用已有零部件,因此,产品零部件之间存在着大量的零部件相互借用现象。零部件的大量相互借用关系使得BOM数据成网状结构。如图1所示。其中,P表示产品;A,B,C表示部件;D,E,F表示零件;数字表示上层部件对下层零部件的装配数量。图2是产品BOM转换后的树状结构,表达了零部件之间的装配级别和装配数量关系。从图2中可以明显看出在装配关系中,上、下层零件之间存在着多对多的关系。例如,A同时为P和B的子件,D同时为P和A的子件。多对多关系使得描述BOM的问题更为复杂。

图1 产品BOM的网状结构表示

图1 产品BOM的网状结构表示

    为了便于计算机识别,必须把用图示表达的产品结构转化成某种数据格式。目前,大多采用适用于关系型数据库的二维表。针对BOM表的操作主要有查询、维护和分解等,且在产品设计及生产过程中上述操作会反复用到,加之随着产品结构变得复杂、产品数量增加,BOM存储数据量会非常大,所以合理的BOM数据结构对提升操作效率、减小数据冗余是非常重要的。

 图2  产品BOM的树形结构表示

图2  产品BOM的树形结构表示

2 常见的单产品BOM数据结构

    单产品BOM[4,5]的思想是“一个产品对应一个BOM”。目前,常见的单产品BOM数据结构有单层BOM、多层BOM和复合型BOM。

    2.1 单层BOM

    单层BOM通常也称作父子型BOM,采用“单父-单子”的BOM结构,通过零部件之间的装配与被装配关系即父子关系来描述。单层BOM主要有“父件代码”、“子件代码”和“装配数量”3个字段。如表1所示。

 

表1单层BOM数据表结构

表1单层BOM数据表结构


    单层BOM定义的产品结构比较清晰,可以从任意零部件向下展开查看其组成,存储数据量相对比较小。但是如果想要显示出产品的整体结构,必须要借助递归算法来辅助,导致分解效率低;另外,单层BOM对物料结构的基础数据准确性要求非常高,因为相同部件只定义一次,如果定义错了某个部件,会导致所有用到该部件的产品结构都会出错。

    2.2 多层BOM

    多层BOM是以“单父-多子”的结构将BOM树存储在数据库中,主要有“产品代码”、“子件代码”、“装配数量”和“层次号”4个字段。如表2所示。该结构中需要1个字段来存储BOM树的根节点,子节点存储该树的所有其他节点,层次号表示当前子节点所处BOM树中的层数。如果处在底层,可用一个特殊的符号如字母L标记出来。

 表2 多层BOM数据表结构

表2 多层BOM数据表结构

 
    多层BOM结构分解算法比较简单,效率比较高,只要根据产品编码查出底层部件的编码和数目即可,且不存在共同定义的共用件,维护起来比较独立。但多层BOM结构中零部件的父子关系并没有具体体现,因此正向查找和反向查找比较困难,也无法显示出产品的整体结构;另一方面,多层BOM结构存在零部件的重复定义,如果更新某一零部件,则用到该零部件的产品都需要更新,容易造成数据的不一致。

 

图3 单产品BOM结构向产品族BOM结构转换

图3 单产品BOM结构向产品族BOM结构转换


    2.3 复合型BOM

    复合型BOM是针对单层BOM和多层BOM存在的利弊,综合两种BOM的构造方法而提出的,以解决系统在运行过程中数据维护以及运行效率之间的矛盾关系。复合型BOM构造方法参考单层构造方法和多层构造方法,采用“产品代码”、“父件代码”、“子件代码”、“装配数量”和“层次号”5个字段来表示。如表3所示。复合型BOM借用零部件的父子关系可以通过递归方法来显示产品的结构树,借用层次号可以提高BOM分解效率。

 

 

图3 单产品BOM结构向产品族BOM结构转换

图3 单产品BOM结构向产品族BOM结构转换


3 GBOM

    当一系列产品的结构相同时,如果仍采用单产品BOM数据结构,数据存储量会变得非常大。GBOM与以往传统BOM基于单个产品模式不同,它可以表述多个产品或者是一类产品共有的产品结构[6]。如图3所示。GBOM结构中,把一系列相似零件组成的集合称为类零件(primary generic product),相似部件组成的集合称为类部件(generic subassembly products),相似产品组成的集合称为类产品(generic product)。产品族中所有的产品共享通用产品结构———产品族BOM结构,不同的产品族BOM结构区分了不同的产品族,所以GBOM不仅仅在形式上保持了传统BOM结构基础,还避免了大量冗余的产生。

4 新型BOM

    与单产品BOM相比,GBOM在一定程度上减小了数据冗余。但GBOM仍存在不足:一方面,即使两个系列的产品存在极小的结构差异,也要建立两个产品结构树;另一方面,即使同一系列的两个产品存在很小的数据差异,也要建立两个产品数据表。随着产品结构变得复杂,数据存储量会非常大。在基于CBR的产品快速设计中,由于其核心是通过实例检索在实例库(产品库)中找出与当前问题实例相似的实例,然后对其进行变形设计以使其满足设计要求并创建新的BOM表,此时如果使用传统GBOM,不可避免地会遇到上述问题。

    4.1新型BOM数据结构

    为了解决上述问题,本文研究了一种基于GBOM和差异表的新型BOM结构。新型BOM的存储模型由产品库、产品结构表、产品数据表、产品结构差异表和产品数据差异表组成,数据库表结构如图4所示。产品库记录了所有产品的主要属性及产品所对应的产品结构表、产品结构差异表等;产品结构表记录了产品所属产品族的BOM结构,为了便于查询、维护和分解等操作,产品结构表采用复合型BOM的数据结构;产品数据表记录实例化后具体产品的零部件信息;产品结构差异表记录新产品与检索出的相似产品在组成结构上的差异信息,当新产品与相似产品在结构上有较小的差异时,只需将结构差异信息记录在产品结构差异表中,而不必新建一张产品数据表;产品数据差异表记录新产品与相似产品在组成数据上的差异信息,同样,当新产品与相似产品在组成数据上有较小差异时,不必新建一张产品数据表,减小了数据冗余。

 

图4新型BOM数据结构

图4 新型BOM数据结构

    4.2 新型BOM创建过程

    在创建新产品BOM时,要考虑检索出的产品是否满足设计要求,是否与新产品BOM结构有较大差异等情况,故新产品的BOM创建过程如下所示。

    (1)在产品库中添加一条新记录,来记录新产品(用N表示)的主要属性及所对应的其他数据表。

    (2)查看检索出的产品(用O表示)的装配结构是否满足设计要求:如果不满足设计要求则跳至(6);否则,将产品库中N对应的字段“产品结构差异表”的值置为空,将字段“产品结构表”和“产品数据表”的值置为产品O的产品结构表表名和产品数据表的表名,并跳至(5)。

    (3)如果结构差异较小,则将产品库中N对应的字段“产品结构表”和“产品数据表”的值置为产品O的产品结构表表名和产品数据表表名,并调至(4);否则调至(6)。

    (4)基于产品O的装配结构,对结构上有差异的零部件重新设计,并新建产品结构差异表,以记录新设计的零部件的装配关系;将产品库中N对应的字段“产品结构差异表”的值置为新建产品结构差异表的表名。

    (5)基于产品O的产品数据表新建产品数据差异表,以记录与产品O有差异的零部件信息;将产品库中产品N对应的字段“产品数据差异表”的值置为新建产品数据差异表的表名。

    (6)创建新的产品结构表和产品数据表,以记录产品N的产品装配结构和零部件信息;将产品库中N对应的字段“产品结构表”和“产品数据表”的值置为新建表的表名,将字段“产品结构差异表”和“产品数据差异表”的值置为空。通过上述步骤即可建立基于GBOM和差异表的新型BOM结构,该结构不仅完整表达了产品的结构,便于BOM表的维护、分解等操作,而且数据冗余小。


5 结束语

    本文比较了传统单产品BOM和GBOM的表结构,分析了各自优缺点,结合两者的优缺点给出了一种基于GBOM和差异表的新型BOM结构,研究了其在关系型数据库中的存储模型,给出了其创建过程。

责任编辑:黄骏
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐