李 靖,张新卫,王克勤,同淑荣
(西北工业大学 管理学院,西安 710072)
配置设计根据已知的预定义组件集合和配置规则找出满足所有要求的配置结果,实现产品定制[1]。进行产品配置设计是解决用户多样化需求与产品开发时间成本之间矛盾的有效方法[2]。其中,构建产品组件模型是实现配置设计的前提。组件化最早应用于软件工程领域,主要研究如何以即插即用的方式利用组件配置出具有所需功能的软件系统。组件化旨在降低软件产品的复杂性,缩短软件产品进入市场的时间[3]。例如Mikael等人提出了一种SaveComp组件模型,基于该模型实现车辆控制系统的快速开发[3];Thareendhra等人对软件中的组件类型以及接口兼容性问题进行了研究[4]。随着研究的不断发展,组件的概念也得到了延伸,越来越多的应用于系统工程领域,机械产品零部件、电子元器件等都可以通过组件的形式实现快速配置。例如白晶等人针对制造业的工装夹具,提出了一种基于元素分解-聚类的组件化过程[5];除此之外,还有基于解释结构模型的方法[6]、基于设计结构矩阵的方法[7]、自组织图(Selforganizing maps)方法[8],基于三角算法图的方法[9]等。已有研究多侧重从单方面的控制系统或物理结构等方面进行组件化,但对于复杂产品而言,进行配置设计所需要的组件涉及机械、电子、软件等领域[10],组件的构建过程涉及多领域零部件的集成、不同组件之间的通讯与交互、组件的可扩展性等问题,是配置设计中需要解决的关键问题之一。
针对这一问题,论文借鉴软件工程中面向对象的思想,对复杂产品的组件模型构建方法进行研究。第1节对基于面向对象思想的组件构建过程进行了研究,包括组件封装、组件实例化及扩展机制等,第2节以工业机器人为例,对所提的组件构建方法进行了验证。论文研究对复杂产品重用以往知识,实现快速配置设计,具有重要意义。
借鉴软件工程中面向对象的思想,将复杂产品的零部件视为对象,封装零部件的功能、行为、属性,构成组件,通过组件的调用可实现产品设计知识及零部件的重用。按照面向对象的表示方法,从属性和操作两个方面对组件进行描述。同时组件封装了零部件的内部结构,与外界的交互只通过接口进行,因此,接口也是组件非常重要的一个参数,需要单独描述。因此,将组件C用下式表示:
Atr为组件的属性,Atr={a1,a2,…an},ai表示组件的功率、尺寸、惯量、重量等技术特征,Atr中每个参数的值域用Atrv=表示,Vatr={Va1,Va2,…,Van}表示参数的具体值,下同;
Int为组件的接口,Int={i1,i2,...,im},im描述与其他组件连接交互的信息如物理接口的类型、物理接口的属性以及接口所能通过的实体流。物理接口的类型可分为机械接触类,例如用运动副连接的物理接口,数据传输类如用数据线连接的组件物理接口,非接触式如通过无线、红外等连接的物理接口;物理接口的属性包括机械接口尺寸、接口通讯协议等;接口所能通过的实体流包括信号、数据、能量、物理实体等。当两个组件具有连接关系时,必定有两个接口能够匹配,匹配的含义包括两个接口的类型相同、属性相同、所能通过的实体流也相同;
Ope为组件的操作,Ope= {o1,o2,…,oj},oj描述组件所提供或依赖的功能/服务;
Inc为组件属性的约束关系,Inc= {c1,c2,…,ck},ck描述了当组件内部的某个属性发生变化时对组件中其他属性的影响。Inc可以用一组约束方程或产生式规则表示,在Inc的约束下可以对组件的属性或属性值进行变更,使得组件能够在一定范围内扩展。当Inc为空时,代表组件为标准件,不可扩展。
在面向对象的思想中,对抽象类赋值使其变为对象的过程称为实例化。1.1节所定义的组件也可进行实例化,与软件中的实例化不同,这里的实例化有两层含义:对象实例化和产品实例化。定义如下:
定义1:对象实例化:产品设计者对组件的各个参数赋唯一值的过程,称为对象实例化。经过对象实例化后的组件成为组件对象,记为△C。
定义2:产品实例化:组件制造者根据根据组件对象进行制造,使组件对象变为现实世界中的产品或零部件的过程,称为产品实例化。
组件的实例化如图1所示。对象实例化使得用户能够在计算机中利用组件对象进行自配置设计,但组件对象仍然是存在于计算机中的抽象模型,产品实例化使得用户能够得到实际的物理产品。
在配置设计过程中,用户对组件的需求是多样化且不断变化的。因此组件必须提供扩展机制,以满足需求。但同时组件的扩展不能是无限制的,因为无限制的扩展有可能会引起组件的性能发生不可预期的变化,从而导致配置设计的失败。
每个组件的四元组表示结构是固定不变的,不允许对四个抽象元组进行更改,这就保证了组件的稳定性。组件的扩展从对象层开始,通过修改对象层的技术参数实现组件的扩展,并通过组件内部的Inc实现对组件技术参数扩展的控制。Inc规定了组件扩展集合的边界,通过在Inc的约束下扩展组件,以满足用户对组件的不同需求,使得组件在保持稳定结构的前提下具有较强的适应性和灵活性。随着新技术的发展,组件所受的扩展约束可能会产生变化,Inc还提供了对外部发布者的可变视图,组件的发布者通过升级Inc即可实现对组件的更新,而不需要更改服务件的其他参数。
图1 组件实例化过程
组件的扩展过程如图2所示。扩展自底向上分为三个层面:
图2 组件扩展过程
1)每个组件都是由组件对象的集合组成,因此组件的每个属性都有一个取值范围,这个取值范围中的每个取值对应组成组件的每个对象,通过取值域中不同的值,可以实例化为不同的组件对象。当值域中所有的组件对象都不能满足需求时,便需要对组件中Atr和Int属性值域进行扩展。扩展值域实际上是向组件中增加新的能满足需求的组件对象,这种值域的扩展不会引起服务件上层属性的变化,但会引起同一层中的Ope值域的变化;
2)当值域的扩展不能满足需求时,便需要对组件中Atr和Int属性进行扩展。对属性的扩展有两种方式,一种是通过Int接口调用其他的服务件实现接口的扩展,例如控制器可通过自身的某个接口连接传感器,通过对传感器的调用增加了原来没有的感知功能,实现了自身功能的扩展。这种方式简单直接,是属性扩展优先采用的扩展方式;另一种是通过修改组件的内部结构实现外部接口的扩展,这种方式对组件的改动较大,只有在接口扩展不能满足需要的前提下才会采用。这两种方式的修改都会引起Atr,Ope属性的变化,当属性扩展完成后,相应的属性所具有的下层属性值域也会随之变化。属性和属性值域的扩展并不是随意的,都受Inc的约束;
3)最后是Inc的扩展,当更先进的设计方法或制造技术出现时,都可能会导致原来组件所必须遵守的约束减少,并由此引发Inc的变更。Inc的扩展并不会引起组件的变化,但由于它的改变,组件属性的可扩展空间会发生变化,而属性的扩展又会导致属性值域更大的扩展空间,一层一层的放大效应使得Inc的扩展对组件的影响最大,因此,Inc的扩展很少使用,一般通过前两层扩展即能满足需求。三个层面的扩展由浅入深,一起组成了组件的可扩展空间。
以工业机器人为例进行实例验证。工业机器人的零部件涉及多个领域,不同领域的零部件结构及特征有很大差别。通过统一进行抽象描述,使其成为组件,在配置设计过程中能够被方便的调用或删除。下面通过工业机器人中减速器的描述和基座扩展两个实例对论文所提的组件模型进行说明。
例1:减速器描述
根据市场上的需求,某设计者设计了一个新的减速器如图3所示。按照组件的标准对其进行形式化描述,作为组件对象,描述的结果如图4所示。
描述完成后,可将该组件对象的参数值加入到原有减速器组件的值域中,在以后的配置设计过程中,该组件对象就可以作为组件的对象实例化结果供设计调用。但由于该服务件对象还没有经过产品实例化,如果在配置设计过程中选择该组件对象,得不到最终的物理产品。假设某减速器制造商根据自己的生产能力,从组件对象中选择了上述减速器进行生产,则代表该组件对象已经通过产品实例化变为了具体的组件,可支持最终物理产品的实现。
图3 某型号减速器
图4 减速器描述实例
例2:基座扩展
某设计者在配置设计过程中调用了基座这个组件,本体中基座的尺寸参数的值域为{高度(20,30,40),半径(10,15,20),厚度(5,8,10)},如图5所示,为了简洁,图中只标出了与扩展相关的参数。通过对象实例化,可以得到三个基座对象的尺寸分别为{(20),(10),(5)},{(30),(15),(8)},{(40),(20),(10)},如图6所示。
图5 基座值域
图6 基座对象
对于某个用户来说,这三个对象的高度都不能满足用户的要求,因此,设计者对基座服务件进行属性值域层次的扩展。将最接近尺寸要求的第三个基座对象进行扩展,将其高度扩展为45。为了保证基座的支撑强度,该基座对象中Inc参数规定了高度与厚度的关系,即每当高度增加1,厚度增加0.1。因此,扩展高度后的基座的厚度也随之变化为10+(45-40)×0.1=10.5,扩展后得到新的基座组件对象,尺寸为{(45),(20),(10.5)}。随后,设计者对扩展后的组件进行对象实例化,对组件中的其他参数一一赋值,得到基座如图7所示,调用该组件对象进行配置设计。
基座组件扩展完成之后,其尺寸参数值域更新为{高度(20,30,40,45),半径(10,15,20),厚度(5,8,10,10.5)}。根据图2所示的服务件扩展过程可知,Atr属性值域的扩展可能会引起服务件Ope值域的扩展。在此例中,基座尺寸值域的增加,导致Ope中“可装电机型号”这一属性的值域发生扩展,增加了一个更大尺寸电机的型号。
图7 扩展基座对象
论文引入软件工程领域面向对象的思想,对复杂产品的组件模型构建方法进行了研究。将涉及机械、电子、软件领域的零部件封装为组件,通过组件接口为使用者提供一个隐藏实现的服务,从而支持组件以即插即用的方式进行组合,从产品级保证了对需求多样化的满足。同时,对组件的实例化及扩展机制进行了分析,从组件级保证了对需求多样化的满足。研究结果可为复杂产品的配置设计提供支持,实现产品的快速定制。