摘要:面向21世纪敏捷制造模式的计算机辅助工艺规划系统是可重构CAPP。文章利用计算机软件科学中的COM理论,讨论了可重构CAPP系统工艺文件存储的核心--工艺卡片的组织与存取的策略和关键技术,并给出了实际开发所用的一些具体代码。
关键词:可重构CAPP;COM;结构化存储;工艺卡片;工艺文件
引言
上世纪90年代初诞生了敏捷制造(AgileManufacturing)的概念,人们一致认为,敏捷制造是21世纪制造业的发展模式,按照敏捷制造思想建立的敏捷企业模式,将成为21世纪制造企业的主要运作模式。敏捷制造企业的主要特征之一就是工艺过程和制造系统的可重构性[2],所谓可重构就是可以重复构造使用。制造系统的可重构不仅应当从硬件方面的机床等设备着手进行(一般称之为硬重构),还应当从软件方面进行软重构。许多时候为了满足同样的功能,软重构要比硬重构投入少,耗时短,效率高,应用灵活。一个具体的例子就是测试技术学科的虚拟仪器,它将传统仪器的专业化功能软件化,实现了令硬件化仪器望而生畏的、无法比拟的测试功能,从根本上改变了测试仪器的设计模式、调试模式、维修模式和销售模式。软重构联系到工艺设计方面,就是能够无缝嵌入可重构制造系统,并具有自治功能的可以重复构造、配置的计算机辅助工艺规划系统--可重构计算机辅助工艺规划(Reconfigurable Computer Aided Process Planning,RCAPP)。
RCAPP作为一种典型的多学科交叉的应用型学科,它的发展受到了多种学科的影响,但是它首先是作为辅助工艺设计的计算机软件程序,其组织结构和发展状况必然要受到计算机软件科学发展的冲击和制约。本文运用计算机软件科学中的COM理论对RCAPP的核心功能--工艺文件的组织与存储进行了一番探讨。文中的卡片模型和代码直接来源于课题项目。
1 工艺文件信息建模
工艺文件作为工艺数据的载体,往往以工艺卡片的形式存在,工艺卡片一般由工艺人员编制,用来指导车间的实际生产作业。工艺卡片种类繁多,不同的企业甚至同一个企业内部都各不相同。从格式上看,这些工艺卡片主要包括文字、线条、图形和特殊符号,有时候还开辟一块特殊的区域进行备注或者修改。图1就是一张典型的工艺卡片,它用于填写工序操作。 (图片)
图1 一张典型的工艺卡片图 1.1 工艺卡片结构综述
如果抛开工艺卡片具体的种类和格式,从数据的角度出发,可以将工艺数据和工艺卡片的关系抽象成图2所示的关系。工艺数据经过卡片定制之后,建立了与工艺卡片模板(数据抽象概念,可以理解为空白的工艺卡片)的关联,用户在进行工艺设计时,根据具体的工序调用相应的卡片模板,这时候已经存在的一些工艺数据将根据关联规则自动显示在由卡片模板实例化的某张具体的工艺卡片上,不允许用户修改。比如图1中“产品代号”、“零(部)件名称”、“零(部)件代号”等值用户是无法也没有必要修改的。有些区域是提供给用户填写的,比如图1中的“工步号”、“工步内容”、“刀具名称及规格”等,系统负责对这些数据进行收集整理。需要注意的是,这儿所谓的用户不单指具体的工艺设计人员,也可以为RCAPP系统的某个功能模块。
在文献[1]中,作者已经对卡片定制的一些关键技术做了较为深入的探讨,此处不再赘述。(图片)
图2 工艺数据与工艺卡片关联示意图 1.2 工艺卡片信息建模
根据文献[1]的分析,卡片模板的数据信息都可以归为5类,即卡片总体信息,线条信息,文字信息,图片信息和数据库关联信息。卡片总体信息是指关于卡片的名称、代号、大小、布局、设计者、设计日期、适用范围、备注等关于卡片总体描述方面的信息;线条信息是指构成工艺卡片方格的线段的位置,长短、粗细、颜色等关于卡片固定线条的描述,线条类可以派生出多边形类CPolygon;文字信息包括两类:静态文字和动态文字,其中静态文字是指卡片中诸如“零件名词”、“零件代号”、“工步内容”等由卡片设计者定义的文字,定义中包括文字的名称、字体、大小、位置、颜色、是否倾斜等基本属性,动态文字和静态文字的属性大体一致,用途不同,动态文字在卡片模板中只与数据库有关联,没有形成具体文字。当用户使用工艺卡片时,静态文字是固定的,用户无权更改,而动态文字要么由数据库中提取显示在相应的位置,要么由用户自己填写,系统负责提取文字信息,可以认为动态文字是由静态文字派生的;图片信息类是指工序简图,特殊符号,形位公差等图形和数据的混合信息;数据库关联信息是指定义卡片模板时,用户将动态文字定位定属性时与数据库的关联;此外,有关图片、特殊符号、线条的显示也需要从数据库中找到连接方式。数据库关联信息是一种内在的用户难以察觉的信息,但却是工艺卡片实现“所见即所得”、“广播”功能的根本。
通过以上分析,可以建立如下图所示的工艺卡片信息模型。从模型中可以方便地定义各种C++类,这些类是RCAPP中工艺卡片COM组件的基本框架。(图片)
图3 工艺卡片信息模型图 2 基于COM原理的工艺文件结构化存储
建立工艺卡片的信息模型以及各类图形的相关信息之后,需要对它们的组织形式进行规划,组织完成后就成了工艺文件。所以工艺文件存储的关键仍然在于工艺卡片的存储。工艺卡片属于文档格式的一种,文档格式的组织方式对文件的修改、浏览、保存都有很大关系,这些都属于软件的存储技术。
图4是传统的CAPP文档结构示意图,虽然也可以把文档信息有序地组织起来,但这样的结构难以管理,如果应用程序只编辑其中一小部分,增加了一张卡片或者一道工序,那么整个文件的结构都要受到影响,在其以后所有结构信息中的偏移量都要变化,为了维护结构的完整性和一致性,不仅需要大量代码来进行维护,而且文件结构的本质决定了它的扩展脆弱和存取迟缓,当文件仅仅包含单一结构如文本时还比较方便,一旦涉及了图片,表格时,情况变得非常复杂。(图片)
图4 传统的卡片文档组织示意图 随着关于面对对象理论和COM原理的研究的不断深入,结构化存储的机制应运而生,利用结构化存储,组件程序可以很好地协同工作,一个组件程序可以与另一个组件程序共享一个文件,就如同一个应用程序和另外一个应用程序共享一个磁盘文件系统一样。结构化存储是软件存储技术的一个重要进展。COM中不仅定义了结构化存储的规范,也提供了具体的实现技术,即复合文档技术,它是风靡一时的OLE技术的基础,但是又远远超过了OLE的应用范畴。
结构化存储借用“文件”的概念,在文件内部构造了一个类似于文件系统的树状层次结构,层次结构的节点可以是两种对象:流对象(Stream)和存储对象(Storage),它们均可以被独立地进行读写等操作,当组件程序操作这些对象时,只拥有该节点的操作权限,对其它节点毫无影响。其中流对象非常类似于单独的磁盘文件,它是进行数据读写操作的基本对象,利用它可以保存各种类型的数据,比如CAPP工艺卡片中的字符串、特殊符号、图片信息等等,流对象接口的定义包括Read/Write,Seek,LockRegion/UnlockRegion,SetSize,CopyTo等操作原型。
利用结构化存储,可以将CAPP中的工艺卡片文档以如下形式组织起来。很明显,相对于图4,这样的组织方式要灵活便利许多,增加各类信息时除了在上层节点中开辟一条指针外,对其它信息没有任何影响,配以Windows平台上的多线程操作,这种存储结构可以大大加快打开、修改、保存等文件访问的速度,提高系统安全性。
在图5的结构中,以卡片为例,定义部分关键的VisualC++代码(因为COM在VC环境下开发)如下:(图片)
图5 基于COM+的卡片结构化存储示意图 ClassCCard:CObject{
protected:
CCard();DECLARE-DYNCREATE(CCard)
public:
-RecordsetPtrm-pRst;//数据库记录指针
-CommandPtrm-pCmd;//访问记录指针
-FieldSetPtrm-pFld;//具体某个字段指
CProcedure pProcedure;//卡片对应的工序指针,找到工序号,工序名称,零件代号等一系列值,预先填入
CCardGenInf pCardGenInf;//卡片模板指针,找到卡片模板的详细信息以及具体数据填放位置(数据库关联)。
CPucture pPucture;//工艺图,找到工艺图格式,图片位置
CTypedPtrListm-stepList;//工步链表,临时存放工步
CStep newStep;//用户添加的新工步,注意特殊符号
voidInitCard();//初始化卡片,包括显示线条、网格、背景,显示静态字,初始化链表,显示链表数据等等。
voidSaveCard();//保存数据(从链表到数据库)
voidLoadPucture();//显示图形
voidMovePucture();//移动图形的位置
voidRefreshCard();//刷新工艺卡片,保存记录,重新初始化
...
};
许多数据虽然与数据库直接关联,但各类定义中还是要用链表将工序、卡片、工步等对象的格式建立起来。用户新建或打开卡片时系统从数据库中调用记录初始化链表,用户保存或关闭卡片时,用多线程API函数AfxBeginThread在后台写入相应数据到数据库。这样就避免了反复访问数据源造成不必要的混乱,也提高了卡片操作的速度。连接数据库用到了COM原理的经典之作--OLEDB/ADO,它提供了跨越具体数据库管理平台的全方位功能,使用方式不仅方便,而且灵活,VC环境下只需要在程序中预先引入:
import"C:\programfiles\commonfiles\system\ado\msado15.dll"\no-namespace\rename("eof", "adoEOF")
然后用定义中的m-pRst,配以相应的SQL语句操作,就可以迅速建立相关的数据连接。
在卡片编辑时最需要把握的是分工协作,即“合适的时候在合适的地方显示合适的内容”。一张具体的工艺卡片的生存周期在这种分工协作下应当分为图6所示的阶段。其中用户循环操作是指用户编辑卡片时的各种界面操作(不包括刷新,刷新意味着新的生存周期)。(图片)
图6 工艺卡片生存周期的阶段划分 3 结论
本文利用面对对象理论和COM原理,探讨了可重构CAPP工艺文件存储的核心—工艺卡片的组织与存储,包括对工艺卡片的结构分析、信息建模、存储策略等关键技术的实现,还给出了部分代码和卡片生存周期阶段的划分,这些技术在实际RCAPP系统的开发中起了关键作用。从用户的使用情况和反馈信息来看,这种工艺卡片的编辑与存取速度快,健壮性强,打印方便。相对传统的CAPP系统而言,具有本质的飞跃。
[参考文献]
[1]王旭初等.商品化CAPP系统工艺卡片定制的关键技术研究[J].计算机应用,2001,(6)
[2]张根保.可重构机床及其关键技术[J].世界制造技术与装备市场,2002,(1)
[3]Y.Koren.etc,Reconfigurable Manufacturing System,Annals of the CIRP,1999,(2)
[4]孙健等.机械制造工艺学[M].北京:机械工业出版社,1982
[5]潘爱民.COM原理与应用[M].北京:清华大学出版社,1999
[6]Michelj.Young. VisualC++6从入门到精通[M].电子工业出版社,1999
作者简介:王旭初(1976-),男,湖北仙桃人,重庆工学院计算机科学与工程学院讲师,硕士。张根宝(1953-),男,山西新绛人,博士后,博士研究生导师。
11/20/2004
|