刘晓初,陶建华,刘 华,包佑文,陈志斌,黎福生
(广州大学机械与电气工程学院,广东广州 510006)
随着制造技术的不断发展,零件的复杂程度及其加工要求越来越高,PowerMILL 作为新一代的智能CAM软件得到了广泛地应用,市场对优秀PowerMILL 工程师的需求量也逐渐增多,同时,对PowerMILL 工程师的技术要求越来越高。由于PowerMILL 工程师的培养周期日益增长,而目前在加工领域大量优秀的编程工艺仅仅只是记录下来,并没有将其作为一种可利用资源得到很好地利用[1]。
因此,本文主要针对PowerMILL 编程中重复劳动多、工艺参数设置对编程人员依赖性大,且加工质量参差不齐等问题,结合PowerMILL 软件平台记录编程过程的工艺记录文件——“宏”,来研究使用“宏”工具记录工艺信息的规律,并用宏文件作为工艺信息的载体研究工艺信息的提取等,这为优秀工艺信息的存储管理和再次利用的实现奠定了基础,不仅方便编程人员经验交流,而且为编程初学者人员快速成长提供一个很好的平台。
PowerMILL 宏文件由文件头段、参数设置段和仿真段三部分组成。PowerMILL 宏文件结构很简单,且容易读取,并且,PowerMILL 宏对断点不敏感,没有严格的头文件格式,在本文中将输入模型语句定义为文件头段,这是后面模型库和工艺数据库建立映射的依据。PowerMILL 宏文件的信息量均为有效代码,即仅记录打开的对话框和进行修改了的参数,故信息冗余量就少。图1是PowerMILL宏文件的文件结构。
图1 PowerMILL宏文件结构分析
文本都是由语句构成的,但是PowerMILL 的宏文件作为文本文件中的一种,不是一般的自然语言的语句,而是有它自己的记录方式,即语法。
PowerMILL 中变量的命名分两大类:一类是单个词的,此类用整个英文单词的大写形式,比如TOOL 代表刀具、BLOCK 代表毛坯等等;另一类是组合词。组合词又分短组合词和长组合词,如果是短组合词一般都是多个单词直接或者通过连接符连接的,如:BLOCKTYPE 代表毛坯类型、TOOLPATH代表刀具路径、PLUNGE_SIZE代表开始Z 高度等等,长组合词也是把几个单词写在一起,但是其中一些单词会简写,比如:ZMAX 代表Z 方向的最大值、PMLLEADINRAMP表示PowerMILL斜向切入等等。
所有PowerMILL 系统命名的操作名和参数名都是其关键字,操作的关键字主要是后面所说的动词,如IMPORT、CREATE、FORM 等,表示动作的关键字一般都是单个单词,表示输入模型、创建刀具、加工坐标系、毛坯等操作,含有这些动词的语句对应的就是GUI 中的对话框打开操作;参数名就是PowerMILL 系统按照上面的命名规则已经命名好了,如果要对PowerMILL 系统进行指令级操作,比如:进行二次开发、重写宏来达到预期的目的等,都需要遵守系统的关键字命名规则,否则系统会出现不能识别的情况。PowerMILL 系统对命令的大小写不敏感,比如FORM BLOCK和Form Block及foRm bLock是一样的[2]。
2.2.1 词性分析
在本文研究主要把文件中的词性分为动词和名词两种,对应是动作和动作的承受者,下面分别对这两类词性进行介绍。
(1)动词,就是动作的描述,每个系统都有自己的动作描述词,动词的作用是创建、关闭对话框、创建刀具、毛坯、加工策略等实体、显示或者修改参数等。比如:PowerMILL 宏文件中的动词有IMPORT、CREATE、FORM、SIMULATE、EDIT等。
(2)名词,就是动作的承担者,包括实体和参数名。比如PowerMILL 宏文件中“Frate”表示“切削进给率”等。
2.2.2 语法分析
在PowerMILL 中用IMPORT/CREATE/FORM/SIMULATE 来控制实体的创建,在GUI 界面的体现就是对话框的控制,其中IMPORT和SIMULATE是单独使用的,它们在宏文件出现的频率也不高,CREATE 和FORM 被用来创建大部分实体,它们有固定的语法格式,每个动词应用格式具体如下:
(1)IMPORT
(2)SIMULATE
SIMULATE 是加工仿真命令,对本论文的研究的工艺信息提取没有直接的联系,而且设置也比较简单,所以都用下面通用格式,就是在仿真各个具体的加工是要把TOOLPATH替换成对应的刀具路径名。本论文在PowerMILL 上加工仿真时采用下面通用格式:
CREATE 实体类名; 类型或者布尔值FORM实体类名或者其简称。
(3)CREATE
CREATE 的具体实例参考典型对话框格式中刀具对话框的建立,其中要注意的是CREATE 和ACCEPT是成对出现的。
FORM 语法格式比较简单,规律性也比较强,和CREATE 一样都是和ACCEPT 成对使用,FORM 还可以嵌套使用,嵌套使用的时候是和最近的ACCEPT 配对使用。FORM 的具体实例同样可以参考典型对话框中毛坯对话框的创建。
PowerMILL 中还有一类非常重要,也是出现概率比较大的动词,这类动词就是用来改变参数值的,其中用的最多的是EDIT,另外在修改名称(刀具、加工策略、坐标名等)时用的RENAME。这类动词用法比较简单,语法也比较简单,就是前面阐述的采用动词+名词(操作对象)+参数值(修改后)/操作的记录方式。
本文研究的包含在工艺记录文件中的工艺信息没有包括数控加工工艺中的所有部分,文件中只记录了零件的毛坯信息、工件坐标系信息、加工工序信息、机床和工艺装备的选择、切削用量的选择信息等。图2 是主流CAM 工艺记录文件记录的工艺信息的总体结构图。
本文针对这种特定的文本文档,采用基于自然语言理解的信息提取技术的思路和正则语言形式规则[3],两者的结合从而达到信息提取的目的。
PowerMILL 宏文件在记录编程过程时采用的是各个实体独立记录并且有对应的固定格式,本文PowerMILL 宏文件信息提取模块就是基于这种规律来设计的,在分析宏文件对不同的实体采取对应的信息解析模块,其中对条件的判定都采用正则表达式来表示。
对PowerMILL宏文件解析主要有如下步骤。
(1)文件读入内存。在VB中用Line Input#语句把宏文件按行读入内存中,存储在字符串Str中。
(2)字符串拆分。用Split()函数把字符串Str以vbCrLf分割成以行为单位的字符串,存储在字符串数组MyArr()中,并在拆分后通过总行数K (K=UBounkMyArr +1)给 动 态 数 组MyArr(K)重新定义,为信息提取确定上限和下限值并分配内存。
(3)对数组MyArr()各元素进行分析。用循环语句对数组MyArr(K)从MyArr(0)到My-Arr(K-1)逐个分析,循环判定语句用正则表达:^(IMPORT|CREATE|FORM)S(MODEL|WORKPLANE | FEEDRATE | PMLLEADINRAMP | LEADLINK|TEMPLATE),对MyArr(0)的前两个字符匹配,用匹配的内容作为Select case语句的case选择依据,从而进入相应模块处理。在相应模块处理每一个MyArr()元素都要判定是否满足结束相应模块的条件,如不满足则在相应模块继续处理MyArr()数组的下一个元素,直到满足条件则跳出循环,只有跳出循环选择下一个元素的时候才要判定是否完成所有元素的解析,如果没结束则继续进入循环,直到分析完所有的元素。
PowerMILL 宏文件信息提取模块的主程序如下:
图2 主流CAM工艺记录文件中工艺信息
其中包括多个子程序的调用。图3 是对PowerMILL宏文件信息提取的流程图。
在解析PowerMILL 宏文件的时候把文件按记录规律分为:模型输入模块、刀具模块、毛坯模块、用户坐标模块、切入切出设置模块、加工策略模块、进给设置模块等,这里介绍两类比较典型的模块解析的过程。一类是一般的单个实体的模块,另一类是实体中还有嵌套实体的模块。
按上面模块划分方式,PowerMILL 宏文件中大部分是像刀具模块、毛坯模块等单个实体记录的模块,除了这些单个实体的模块还有一种是一个模块中包含多个实体的建立,在记录的形式上表现为嵌套记录,对于这些不同的形式在建立信息提取机制的时候一定要具体且准确地告诉计算机该做什么操作。
3.2.1 单个实体模块处理——刀具解析模块
下面是在PowerMILL 中建立一把端铣刀的宏文件记录记录,具体记录文本如下:
其中包括刀具类型、刀具名称、刀具直径、刀具长度及刀刃数等信息,下面是这段宏文件的具体解析过程。
①在文件被读入到内存的MyArr(K-1)数组的时候,打开存储工艺信息的工艺数据库,用不同变量定义打开数据库的参数映射表和其他用于储存工艺信息的表。
图3 PowerMILL宏文件的信息提取流程图
②当通过Select Case 进入刀具解析模块的时候,用AddNew在刀具资源表中自动添加一条记录。
③假设此时存储第一行的元素是MyArr(m),利用正则表达式查找“;”后面的字母,到第一个空格结束部分的字母,去除空格后的字母存到字符串S1中。
④查找变量映射表的“在PowerMILL 中的名称字段(NameInPowerMILL)”和S1中内容相同的记录,返回该记录的“在数据库的名称(NameInDB)”字段的内容,存放在字符串S2中。
⑤在刀具资源表中找到和S2中字符串相同的字段,把S1 的值添加到该字段的最新空记录中;然后数组索引自动加一,跳到存储下一行的数组元素。
在TOOL ACCEPT结束之前这些数组元素的处理都类似,主要思想是:先用正则表达式判断第一个单词,也就是动词,如果动词是RENAME,则把RENAME放入第③中的S1中,然后重复第④步,第⑤存入数据库的是第二个引号里的数值,提取后先存在字符串S3中,即刀具名称;如果动词是EDIT,把第一个(”)和第二个(”)之间除引号相邻空格外的字符存入S1中,然后执行第④步,在第⑤步存入数据库的值是S1字符后的除去“”和空格外的数值或者字符串。在写入数据库后,数组索引加1,这时先对字符串做判断,如果(!TOOL ACCEPT)成立则重复上面的操作,否则跳出循环。
在该例中用到的正则表达式如下:
3.2.2 嵌套实体的模块
含有嵌套实体的模块,比如在切入切出模块中,包括切入切出连接和斜向选择的设置,其记录格式如下:
这类实体的解析和单实体的处理区别不大,当在模块内碰到FORM等模块分类的动词的时候按一般的情况处理,不需要打开新的模块处理程序。
本文从PowerMILL 入手,研究了其记录工艺的文件——“宏”的结构、语法以及相关的工艺信息等,并在此基础上采用基于自然语言理解的信息提取技术的思路和正则语言形式规则两者结合的方法对“宏”文件中的工艺信息进行提取,因此,这对于工艺数据的存储管理和标准化,以及自动化设置奠定了基础,并在此基础上实现优秀工艺信息的重用。
[1]陶建华,杨晓琴,刘晓初,等.基于工艺特征识别技术的数控自动编程方法研究[J].计算机工程与设计,2011,32(10):3548-3552.
[2]PowerMILL 2012 macro Programming Guide R4 [Z].2011.
[3]宋艳娟.基于XML 的HTML 和PDF 信息抽取技术的研究[D].福州:福州大学,2005.
[4]何雪明,吴晓光,常兴.数控技术[M].武汉:华中科技大学出版社,2006.