在TEAMCENTER中,BOM配置是一个比较广泛的概念,可以理解为“通过一定的条件得到满足要求的BOM结构”。因此在TEAMCENTER系统,通过版本规则和有效性筛选BOM行,和通过变量驱动获得实例BOM都称为“配置”。
TEAMCENTER系统中通过变量控制BOM结构有两种方式:传统变量(classic variant)和模块化变量(modular variant)。前者可理解为一种自顶向下的方法,后者可视为一种基于模块化的,自下向上的方法。
图1 BOM配置
本文介绍基于变量的BOM配置方法,重点介绍“模块化变量”方法,“传统变量”简要介绍过程。
一、传统变量方法和模块化变量概述
所有通过变量控制BOM结构的方法,从变量的角度看实际都涉及四个方面的工作:
(1)变量的定义;
(2)变量之间的规则;
(3)变量与零部件的驱动关系;
(4)配置的定义及实例化BOM的生成。
TEAMCENTER中也不例外。传统变量(classic variant)和模块化变量(modular variant)的方法都需要做上面的四步工作,而将它们区分的关键因素是看变量是主要定义在顶层零部件上,还是主要定义在模块化的子组件上。
对于传统变量方法,一般情况下变量(option)一般定义在顶层,然后在下层零部件上进行分配,分配的时候可以跨级,并不是只能分配给直接下级。如下图:
图2 传统变量方法
在下层零部件上分配完变量(称为变量条件,variant condition)后,便可以通过定义具体的配置(configuration),筛选出实例化的BOM。
图3 筛选实例化BOM
在传统变量方法中,对变量(option)的控制(定义,维护)主要在顶层零部件,下层结构只管应用(当然,下层也可以定义变量,并且定义的变量在顶层零件创建配置的时候会出现在配置选项中,但变量主要还是定义在顶层零件上),是一种自顶向下的方法。对于下层结构而言,零部件的使用条件是定义在顶层零部件的环境下的,若换到另外的顶层零部件上则需要重新定义。这一方面使得零部件的使用条件比较灵活,但是另一方面变量条件的重用率却比较低。
设想,在上图中,对于子组件“Cylinder Block”,如果其下级零部件“Long Block”的出现条件永远是“ENG=V6L”,“Short Block”的出现条件永远是“ENG=V6S”。则在传统变量中,每一个用到“Cylinder Block”的顶层零部件都需要定义相同的变量和变量值(ENG=V6L,V6S),并且定义“Long Block”和“Short Block”的变量条件,重复工作。对于这种子组件,实际上它的下级结构的出现条件已经与顶层零部件无关,是独立于设计环境,可以单独定义在子组件内部的。像这种具有独立性的子组件可以在子组件上直接定义变量并分配给下级,然后将在子组件上定义的变量有条件的开放并传递到顶层零部件上。这种自下向上的方法在TEAMCENTER中称为“模块化变量”的方法(modular variant),其中定义了变量的子组件称为“模块”(module)。
下文以上面的结构为例子分别介绍传统变量和模块化变量的具体使用方法。
二、传统变量(classic variant)
在传统变量方法中,选项(option)和选项规则(option rule checks)主要定义在顶层零部件上(例子中的Engine Family)。下级零部件直接使用这些选项(变量条件,variant condition),一般流程如下图。可以归结为三个主要过程:
(1)定义结构和选项(包括默认选项值和选项规则检查);
(2)定义选项与下级零部件的对应关系(变量条件)
(3)配置BOM(定义配置)
图4 定义结构和选项
(1)定义结构和选项
在“结构管理器”中定义顶层零部件的BOM结构,数据面板中(点击工具条上的“显示/隐藏数据面板”)。系统默认显示模块化变量的面板,需要切换到传统变量控制面板。如下图:
图5 传统变量控制面板
在顶层零部件(此处为Engine EPL)的“变量”选项卡上,分别定义选项,选项的默认值,和选项规则(option rule checks)
图6 “变量”选项卡
(2)定义选项与下级零部件的对应关系
在结构BOM行中选择要定义选项的BOM行,选择工具条上的“变量条件”(option condition)进行变量条件定义。在顶层零部件上定义的选项可以跨级使用,并非只能在直接下级上使用。定义了变量条件的BOM行会出现“V”字图标
图7 变量条件定义
(3)定义配置
当所有的变量条件定义完成后,可以对顶层零部件创建配置,筛选出符合配置条件的零部件。(要在BOM行中不显示未配置的零部件,需要取消勾选:视图显示未配置的变量)
图8 顶层零部件创建配置
三、模块化变量
在应用传统变量方法时,我们的主要关注点在顶层零部件上。设计是从顶层零部件开始,设计方向是自上而下。但在使用模块化变量方法时则正好相反,我们的主要关注点在下级组件或者说模块上,定义模块时可以不关心它应用于哪个顶层零部件,而是关心模块本身的结构,选项和下级零部件的变量条件。因此可以说设计是从模块开始的,设计方向是自下而上(从模块到顶层零部件)。在这里,模块的合理定义成为关键。若模块结构划分或选项定义不合理,使得模块的重用率不高,或根本不能在不同顶层零部件之间借用,则会丧失模块化变量方法的优势,这时应该考虑用传统变量的方法。
模块化变量方法中,模块的选项(option)分为“公开”(public)和“私有”(private)两种。“公开”选项(public option)对外可见,可以“传递”(present)到顶层零部件上使用,也可以接收顶层零部件传递来的变量值(通过child module constrain进行)。而“私有”选项(private option)则对外不可见,只能在模块内部使用。因此模块的“公开选项”可以看成是模块对外的一个接口,用于模块与顶层零部件之间交换变量信息。
在模块内部,选项之间(包括public和private)之间可以通过内部约束(internal module constrain)约束个选项值之间的关系。选项验证(error checks)用于检查各选项之间的容斥关系。与传统变量方法一样,选项通过变量条件(variant condition)对应到模块的下级零部件上。
既然模块定义了选项,并且是可配置的,那么模块就不是一个传统意义上的总成,而是一个“超级总成”,可以根据具体配置产生出多个总成实例。在模块化变量中,用“变量零部件”(Variant Item,简称VI)来表示具体的总成实例。在一个顶层零部件下,针对某一个具体的配置,所有的模块,包括顶层零部件本身都可以生成VI,最终由VI和其他非模块化零部件构成实例化BOM。在生成VI的过程中,如果模块的某一配置已经存在对应的VI,则调用已经存在的VI。
图9 生成VI的过程
上图示意了模块各概念之间的关系。在这里,模块可看成是一个独立,封闭的单元,对外通过“公开选项”与外界传递变量信息。
下面以一个简单例子,描述模块化变量使用的一般过程。注意这里只是演示一般过程,实际使用情况可能比这里复杂,但基本过程大致相同。
图10 演示一般过程
【说明:上例中,Mainstream Module是一个模块,有两个公开选项:ENG Type和HasFW。选项的使用条件(变量条件)如图所述。选项ENG Type被传递到顶层零部件Engine ELP2,同时选项HasFW的值受顶层零部件选项TRANS的控制。】
基本过程如下图所示,可归结为四个主要过程:
(1)模块定义
(2)父模块定义(或顶层零部件定义)
(3)变量对接
(4)创建配置,生成实例化BOM
图11 基本过程
(1)模块定义
在“结构管理器”中定义顶层零部件的BOM结构,然后点击“显示/隐藏数据面板”显示出数据面板。系统默认的模块化变量的面板。如下图
图12 模块化变量面板
通过向导创建模块选项。在创建公开选项前,可以将通用的选项创建为全局选项(Global option),然后在创建模块选项的时候借用。
图13 创建模块选项
选项创建完成后,在选项列表中,双击选项,添加选项的值和缺省值:
图14 添加选项的值和缺省值
所有选项定义完成,可以通过模块内部约束定义选项值之间的约束关系;通过定义变量条件,建立选项与下级零部件之间的对应关系。
图15 定义变量条件
(2)父模块定义(或顶层零部件定义)
父模块的定义与模块定义过程相同,主要定义选项,选项约束。在搭建父模块结构时,将定义好的模块插入到父模块中。父模块中,一般不需要定义模块的变量条件。
图16 父模块的定义
(3)变量对接
变量对接是在父模块选项与模块选项之间建立关系。主要有两种:传递模块选项、建立子模块约束
传递模块选项是将模块的选项传递到父模块上,使其在创建配置时可用,就像该选项是在父模块上定义的一样;
建立子模块约束是用父模块的选项值控制子模块的选项值。
注意:上述操作都是针对模块的公开选项(public option)进行的,模块的私有选项(private option)不能进行上述操作,体现了公开选项的接口性质。
图17 变量对接
(4)创建配置,生成实例化BOM
当父模块(或顶层零部件)结构和与下级模块的变量对接完成后,便可以对父模块(或顶层零部件)创建配置(要在BOM行中不显示未配置的零部件,需要取消勾选:视图显示未配置的变量),形成实例化BOM。上文说过,对于各模块,可以生产变量零部件(VI),最终由VI构成实例化BOM,进行发布和下游传递。
图18 实例化BOM
四、两种方法的比较
当然,在传统变量方法中,上例中选项(ENG=V6L,V6S)也可以直接定义在“Cylinder Block”上,当“Cylinder Block”被用到“Engine EPL”上,用户在创建配置(Configuration)时,选项(ENG=V6L,V6S)也会出现。但是却存在以下缺点:
(1)“Cylinder Block”上定义的所有选项都会出现到顶层零部件配置上,无法对模块定义一些内部使用的变量;
(2)当多个下级模块存在相同的变量时,顶层零部件配置页面上会出现多个变量;若将相同的变量定义在顶层零部件上,则破坏了模块的完整性和独立性;
(3)顶层零部件上定义的变量无法影响下层零部件上的变量。
而使用模块化变量方法,则不会有上述问题。当然这不是说模块化变量方法就比传统变量方法好。当企业能够定义出模块,并希望最大限度的进行模块重用时,模块化变量方法是最佳选择。但如果业务无法定义出独立的模块,或定义的模块通用程度不高,而又希望做BOM配置时,传统变量方法是最佳选择。所以,两种方法各有优劣,应该根据企业的实际情况选择。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文网址:http://www.toberp.com/html/consultation/10820619457.html