《知识工程项目之知识驱动数字化产品开发》由会员分享,可在线阅读,更多相关《知识工程项目之知识驱动数字化产品开发(20页珍藏版)》请在金锄头文库上搜索。
1、知识驱动数字化产品开发发表时刻:2008-9-19 屈福平 来源:e-works1、前言 知识工程- Knowledge Base Engineering是由美国Feigenbaum教授于1977年提出。早期要紧用于专家系统及人工智能以提供知识猎取及基于知识的推理技术与方法。现今,具有知识处理能力的软件系统已成为新一代专业软件的重要指针。所谓知识工程其普遍的共识及定义为:以知识为处理对象,即用工程化的考虑模式,并应用人工智能的原理、方法及技术以达成设计、建构及维护知识系统的一门科学。 知识工程的目的是在研究知识的基础上,开发智能系统。因此,知识的猎取、知识的表达及知识的运用便构成知识工程的三大
2、要素。知识工程的研究要紧内容包括:基础理论的研究、有用技术的开发、知识型工具系统及智能机等相关课题的研究。其中,基础理论的研究要紧是研究差不多的理论方法,包括知识的本质、知识的表达、推理、猎取及学习的方法等。有用技术的开发则要紧研究解决建立知识系统过程中遇到的问题,包括有用知识的表达方法,建立知识猎取技术,有用知识推理方法、知识库结构系统及知识系统体系结构等。建立知识型系统工具的要紧目的是给系统的开发提供良好的运用工具,以提高系统研制的质量与缩短系统研制周期等。因此,知识系统能解决专家等级的问题,能快速的进行假设及搜索解答,即系统具有大量的基础知识及一般问题的求解能力,具自动推理的能力。 从制
3、造业的技术来看,知识工程是一种基于知识的计算机应用系统,它着眼于自动的、导引式的方式关心使用者进行产品的工程设计,包括产品的造型、分析、检测、制造评估及工艺规划等活动。同时能够捕捉及再利用与产品开发有关的优化设计制造方案知识与良好的设计经验。它是与人工智能、协同设计、知识库系统、几何造型系统及信息技术进行有效整合的一项工程技术。 从本质看,知识工程的目的是知识重用,立即知识制造性的应用到一个工业产品的设计开发及生产制造过程中,充份利用各种实践经验、专家知识及其有关的讯息,产生以知识驱动为基础的工程设计新思路。现今对知识的建立,差不多上是应用所定义的计算机语言(符号)来架构人类的各种概念及概念间
4、的关系,每一种表示方式实际上是一种数据结构。 知识融合程序语言-Knowledge FusionSiemens PLM软件公司的NX系统提供自定义开发且符合工程知识融合需要的知识融合程序语言,以有效描述及整合工程知识与几何模型间的关系。 图1.传统KBE系统与NX/KF的区不 知识融合程序语言是高级语言,因而能够用比较浅显的语言文字描述程序的功能与运作方式,可用来表示全新的对象模型。因此该语言为面向对象(Object oriented)的解释性(Interpreted)语言,在知识融合程序语言中有类(Class)及对象(Object)能够进行多重继承(Inherent)。类是对象的共同特征的抽
5、象描述,其定义方式如图2所示。 图2.类(Class)的定义 用户能够方便的应用此程序语言在产品模型中以规则(Rule)的型式增加工程知识,图3 则是应用规则操纵其知识工程的应用程序案例,而此规则为此语言的差不多组件,其直斜螺齿轮及螺旋斜齿轮与加工方法的决定是由工程规则决定,并对具知识的资料库进行读写的动作。 图3.利用规则操纵知识工程的程序案例另外,KF程序中同意用户以任意顺序定义属性,将其视为关键词,使其能够需求驱动(Demand-driven)方式取用。此外,知识融合语言有能力存取NX系统以外的知识资源,如资料库及电子试算文件等,且有能力结合其它分析及优化软件。KBE系统结构是对象导向的
6、结构,这也使得对象属性具有对象的继承性。此一结构具有方便储存几何尺寸及知识推理的表现形式。此外,NX的规则是用于实现过程的表达式,而面向对象的系统与规则的结合,提供用户可捕捉全生命周期知识(Lifecycle knowledge)。 2、知识治理的过程 近几年来,KBE技术差不多从理论研究转向实际应用,各要紧的PLM厂商相继在推出了不同的制造业领域的KDA(知识驱动自动化-Knowledge Driven Automation)解决方案,比如:Siemens PLM软件公司的模具工程向导(Mold Wizard/Progressive Die Wizard)、齿轮设计向导(Gear Wizar
7、d)、汽车工程向导(Vichicle Wizard),达索公司CATIA知识工程专家KWE,PTC公司的专家模架系统EMX等,相信大伙儿利用NX系统在日常工程应用中也有体验到它对企业的实际应用所带来的价值,本文要紧围绕Siemens PLM软件公司的KF技术在玻璃制品及模具领域的智能化应用开进展开叙述。 2.1 在利用KF进行开发的前期,首先要对NX/KF开发及后期治理过程进行规划,同时还要深刻理解其开发目标。 图4. KBE前期开发的理解 图5. KF知识治理的过程 2.2 其次,在程序设计过程中,可参考NX/KF针对的要紧开发对象以灵活的选择IDE开发工具的组合(C+、MenuScript
8、、UIStyler),同时还包括NX5版本中的新增功能Knowledge Fusion ICE,它能更方便的捕捉产品的知识规则以及优化KF程序。 图6. NX/KF要紧开发对象NX提供的MenuScript和UIStyler两个模块要紧用于开发下拉菜单、应用工具条和人机交互对话框,实现NX二次开发的应用程序界面化。MenuScript是UG/OPEN的一个重要组成部分,它能够通过编辑纯文本的Menu文件(菜单脚本文件,文件的扩展名为*.men)创建或修改NX的主菜单及下拉菜单,而不用编写C语言程序。在脚本文件中,相应按钮的ACTIONS为相应的DFA文件,脚本文件的格式如下: 图7. 菜单与用
9、户UI NX/Open UIStyler是开发NX对话框的可视化工具,其生成的对话框与NX完全集成,用户能够方便、高效地与NX进行交互操作,该工具的使用幸免了复杂的图形用户接口GUI编程,直接将对话框中的差不多控件进行组合与布局,能够创建满足不同功能需求的NX风格对话框 3、知识治理的挑战与方法 3.1在传统的玻璃制品及模具设计开发过程中,通常的制作工艺流程如下图所示: 1.制作木制模型-2.利用测量工具分层测量要紧Section轮廓数据-3.依照原始数据利用CAD工具逐一分层绘制各轮廓-4.利用分层轮廓线编织外形曲面-5.将外形曲面转换为产品及模具实体并进行后续详细结构设计-6.进行产品及模
10、具零部件试制加工-7.通过测量工具对比分析其偏差(假如偏差过大再返回3.进行修改,从而更新其数字样机) 应用挑战:从木模的制作- 数字样机的采样过程中,要紧难度在于CAD轮廓绘制过程(整合数据过大),模具制造商深知,通常在绘制和反复修改CRT产品的轮廓线大约需要5天的时刻。而一整套模具的打算开发时刻仅为710天,因此为完成这一指标,大多模具厂商通常选择提早偷跑或超强加班的方式来完成项目,因此后续的设计变更也是意料之中的事, 而最关键的其模具质量无法保证,以至无法实现量产。 图8. 木模试制Section数据测量3.2 为攻破上述难关,只能采纳各个击破的方式,关于开发过程中面临的最大挑战(整合数
11、据过大)需要逆向迭代大量历史数据(如: 点坐标-15705个、圆弧-10367条、直线-1452条、相切匹配-2904对),最终通过对原始Section测量数据的分析,可利用NX/KF中Spreadsheet功能将其特征数据导入(导入规则如图9所示)KBE系统,通过ODBC分析数据规则最终将其迭代为Class A Surface特征参数。 图9. ODBC-Spreadsheet导入规则 3.3 前期面临的要紧挑战解决了(基于Class A Surface的CRT成型面已成功),但后处理过程中的大量详细结构的设计工作也不容忽视, 假如将产品或模具的详细结构部件并在迭代过程中同时通过KF程序完成
12、,结果显然不乐观。 在最后实现的方法是模仿NX中最佳的KDA实践经验-Wizard 方式,一步步引导用户完最终的复杂结构设计,如下图示为结构设计各时期的交互向导界面。 图10. CRT结构设计向导(Process Wizard) 生成CRT制品与模具成型面数据逆向的KF源程序如下示(仅供参考) # KF源程序头 #! UG/KBE 17.0 DefClass: Cone (ug_base_part); (Number Parameter Modifiable) angle: ; .# ODBC入口 (导入原始*.excel数据文件) (String Parameter Modifiable)
13、data_file: ; # 对导入的Section长/短轴数据进行分析 (List Modifiable) read_data_section: $a ug_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对角轴数据进行分析 (List Modifiable) rea
14、d_data_path: $a ug_excel_open_file(data_file:, read); $sheet_indexug_excel_get_worksheet_index( $a, Sheet2); . ; # 按ODBC 定义的原则对Section长/短轴数据进行迭代 (List Modifiable )read_data_section_list: loop with $line_number is nth(4, read_data_section:); For $i from 0 to ($line_number-2)*12 by 12; . ; # 按ODBC 定义的原则对path对角轴数据进行迭代 (List Modifiable) read_data_path_list: loop