知识驱动数字化产品开发发表时间:2008-9-19屈福平来源:e-works1、前言「知识工程-KnowledgeBaseEngineering」是由美国Feigenbaum教授于1977年提出。早期主要用于专家系统及人工智能以提供知识获取及基于知识的推理技术与方法。现今,具有知识处理能力的软件系统已成为新一代专业软件的重要指针。所谓知识工程其普遍的共识及定义为:以知识为处理对象,即用工程化的思考模式,并应用人工智能的原理、方法及技术以达成设计、建构及维护知识系统的一门科学。知识工程的目的是在研究知识的基础上,开发智能系统。因此,知识的获取、知识的表达及知识的运用便构成知识工程的三大要素。知识工程的研究主要内容包括:基础理论的研究、实用技术的开发、知识型工具系统及智能机等相关课题的研究。其中,基础理论的研究主要是研究基本的理论方法,包括知识的本质、知识的表达、推理、获取及学习的方法等。实用技术的开发则主要研究解决建立知识系统过程中遇到的问题,包括实用知识的表达方法,建立知识获取技术,实用知识推理方法、知识库结构系统及知识系统体系结构等。建立知识型系统工具的主要目的是给系统的开发提供良好的运用工具,以提高系统研制的质量与缩短系统研制周期等。所以,知识系统能解决专家等级的问题,能快速的进行假设及搜索解答,即系统具有大量的基础知识及一般问题的求解能力,具自动推理的能力。从制造业的技术来看,知识工程是一种基于知识的计算机应用系统,它着眼于自动的、导引式的方式帮助使用者进行产品的工程设计,包括产品的造型、分析、检测、制造评估及工艺规划等活动。并且可以捕捉及再利用与产品开发有关的优化设计制造方案知识与良好的设计经验。它是与人工智能、协同设计、知识库系统、几何造型系统及信息技术进行有效整合的一项工程技术。从本质看,知识工程的目的是「知识重用」,即将知识创造性的应用到一个工业产品的设计开发及生产制造过程中,充份利用各种实践经验、专家知识及其有关的讯息,产生以知识驱动为基础的工程设计新思路。现今对知识的建立,基本上是应用所定义的计算机语言(符号)来架构人类的各种概念及概念间的关系,每一种表示方式实际上是一种数据结构。「知识融合程序语言-KnowledgeFusion」SiemensPLM软件公司的NX系统提供自定义开发且符合工程知识融合需要的知识融合程序语言,以有效描述及整合工程知识与几何模型间的关系。图1.传统KBE系统与NX/KF的区别知识融合程序语言是高级语言,因而可以用比较浅显的语言文字描述程序的功能与运作方式,可用来表示全新的对象模型。因此该语言为面向对象(Objectoriented)的解释性(Interpreted)语言,在知识融合程序语言中有类(Class)及对象(Object)能够进行多重继承(Inherent)。类是对象的共同特征的抽象描述,其定义方式如图2所示。图2.类(Class)的定义用户可以方便的应用此程序语言在产品模型中以规则(Rule)的型式增加工程知识,图3则是应用规则控制其知识工程的应用程序案例,而此规则为此语言的基本组件,其直斜螺齿轮及螺旋斜齿轮与加工方法的决定是由工程规则决定,并对具知识的资料库进行读写的动作。图3.利用规则控制知识工程的程序案例另外,KF程序中允许用户以任意顺序定义属性,将其视为「关键词」,使其可以「需求驱动(Demand-driven)」方式取用。此外,知识融合语言有能力存取NX系统以外的知识资源,如资料库及电子试算文件等,且有能力结合其它分析及优化软件。KBE系统结构是对象导向的结构,这也使得对象属性具有对象的继承性。此一结构具有方便储存几何尺寸及知识推理的表现形式。此外,NX的规则是用于实现过程的表达式,而面向对象的系统与规则的结合,提供用户可捕捉全生命周期知识(Lifecycleknowledge)。2、知识管理的过程近几年来,KBE技术已经从理论研究转向实际应用,各主要的PLM厂商相继在推出了不同的制造业领域的KDA(知识驱动自动化-KnowledgeDrivenAutomation)解决方案,比如:SiemensPLM软件公司的模具工程向导(MoldWizard/ProgressiveDieWizard)、齿轮设计向导(GearWizard)、汽车工程向导(VichicleWizard),达索公司CATIA知识工程专家KWE,PTC公司的专家模架系统EMX等,相信大家利用NX系统在日常工程应用中也有体验到它对企业的实际应用所带来的价值,本文主要围绕SiemensPLM软件公司的KF技术在玻璃制品及模具领域的智能化应用开发展开叙述。2.1在利用KF进行开发的前期,首先要对NX/KF开发及后期管理过程进行规划,同时还要深刻理解其开发目标。图4.KBE前期开发的理解图5.KF知识管理的过程2.2其次,在程序设计过程中,可参考NX/KF针对的主要开发对象以灵活的选择IDE开发工具的组合(C++、MenuScript、UIStyler),同时还包括NX5版本中的新增功能KnowledgeFusionICE,它能更方便的捕捉产品的知识规则以及优化KF程序。图6.NX/KF主要开发对象NX提供的MenuScript和UIStyler两个模块主要用于开发下拉菜单、应用工具条和人机交互对话框,实现NX二次开发的应用程序界面化。MenuScript是UG/OPEN的一个重要组成部分,它可以通过编辑纯文本的Menu文件(菜单脚本文件,文件的扩展名为*.men)创建或修改NX的主菜单及下拉菜单,而不用编写C语言程序。在脚本文件中,相应按钮的ACTIONS为相应的DFA文件,脚本文件的格式如下:图7.菜单与用户UINX/OpenUIStyler是开发NX对话框的可视化工具,其生成的对话框与NX完全集成,用户可以方便、高效地与NX进行交互操作,该工具的使用避免了复杂的图形用户接口GUI编程,直接将对话框中的基本控件进行组合与布局,可以创建满足不同功能需求的NX风格对话框3、知识管理的挑战与方法3.1在传统的玻璃制品及模具设计开发过程中,通常的制作工艺流程如下图所示:1.制作木制模型-2.利用测量工具分层测量主要Section轮廓数据-3.根据原始数据利用CAD工具逐一分层绘制各轮廓-4.利用分层轮廓线编织外形曲面-5.将外形曲面转换为产品及模具实体并进行后续详细结构设计-6.进行产品及模具零部件试制加工-7.通过测量工具对比分析其偏差(如果偏差过大再返回3.进行修改,从而更新其数字样机)应用挑战:从木模的制作-数字样机的采样过程中,主要难度在于CAD轮廓绘制过程(整合数据过大),模具制造商深知,通常在绘制和反复修改CRT产品的轮廓线大约需要5天的时间。而一整套模具的计划开发时间仅为7~10天,因此为完成这一指标,大多模具厂商通常选择提前偷跑或超强加班的方式来完成项目,因此后续的设计变更也是意料之中的事,而最关键的其模具质量无法保证,以至无法实现量产。图8.木模试制Section数据测量3.2为攻破上述难关,只能采用各个击破的方式,对于开发过程中面临的最大挑战(整合数据过大)需要逆向迭代大量历史数据(如:点坐标-15705个、圆弧-10367条、直线-1452条、相切匹配-2904对),最终通过对原始Section测量数据的分析,可利用NX/KF中Spreadsheet功能将其特征数据导入(导入规则如图9所示)KBE系统,通过ODBC分析数据规则最终将其迭代为ClassASurface特征参数。图9.ODBC-Spreadsheet导入规则3.3前期面临的主要挑战解决了(基于ClassASurface的CRT成型面已成功),但后处理过程中的大量详细结构的设计工作也不容忽视,如果将产品或模具的详细结构部件并在迭代过程中同时通过KF程序完成,结果显然不乐观。在最后实现的方法是模仿NX中最佳的KDA实践经验---Wizard方式,一步步引导用户完最终的复杂结构设计,如下图示为结构设计各阶段的交互向导界面。图10.CRT结构设计向导(ProcessWizard)生成CRT制品与模具成型面数据逆向的KF源程序如下示(仅供参考)#KF源程序头#!UG/KBE17.0DefClass:Cone(ug_base_part);(NumberParameterModifiable)angle:;......#ODBC入口(导入原始*.excel数据文件)(StringParameterModifiable)data_file:;#对导入的Section长/短轴数据进行分析(ListModifiable)read_data_section:@{$aug_excel_open_file(data_file:,read);$sheet_indexug_excel_get_worksheet_index($a,Sheet1);$bug_excel_read_range($a,$sheet_index,-1,-1,-1,-1);ug_excel_close_file($a,False);$b;};#对导入的Path对角轴数据进行分析(ListModifiable)read_data_path:@{$aug_excel_open_file(data_file:,read);$sheet_indexug_excel_get_worksheet_index($a,Sheet2);...};#按ODBC定义的原则对Section长/短轴数据进行迭代(ListModifiable)read_data_section_list:loop{with$line_numberisnth(4,read_data_section:);For$ifrom0to($line_number-2)*12by12;...};#按ODBC定义的原则对path对角轴数据进行迭代(ListModifiable)read_data_path_list:loop{with$line_numberisnth(4,read_data_path:);For$ifrom0to($line_number-2)*8by8;...};#按Section长/短轴Curve特征排列数据(ChildList)section_list:{Class,nth(1,nth(2,nth(child:index:,read_data_section_list:)));......};#按Path对角轴Curve特征排列数据(ChildList)path_list:{Class,nth(1,nth(2,nth(child:index:,read_data_path_list:)));quantity,length(read_data_path_list:);...};...#将Section长/短轴Curve逐一串联(ChildList)Join_sections:{Class,ug_curve_join;Quantity,nth(1,last(read_data_section_list:));...};#将Path对角轴Curve逐一串联(ChildList)Join_Paths:{Class,ug_curve_join;Quantity,nth(1,last(read_data_path_list:));Profile,Loop{...};#利用曲面Mesh编织CRT制品及模具成型面(Child)Surface_Mesh:{Class;ug_curve_mesh;Primary;Loop{For$ainJoin_sections:;Collect{Forward,$a};};Cross;Loop{For$ainJoin_Paths:;Collect{Forward,$a};};Emphasis;Both;Body_Type;Sheet;Tolerances;};4、结论企业创新绝非偶然,通过KBE技术,可以将企业知识和经验固化,以最终实现知识驱动数字