虚拟数控加工中G代码编译器的研究
- 格式:pdf
- 大小:168.91 KB
- 文档页数:3
收稿日期:2004-10-19
作者简介:王心光,浙江大学人现代制造工程研究所硕士研究生,主要从事数控加工仿真软件开发等,(E-mail)waterxn707@yahoo.com。
文章编号:1001-2265(2005)06-0080-02
虚拟数控加工中G代码编译器的研究
王心光,傅建中(浙江大学现代制造工程研究所,杭州 310027)
摘要:介绍虚拟数控加工中,G代码编译功能模块的结构、功能和重要意义。设计了以正则类库为工具的通用G代码编译器,该功能模块主要由词法分析器、语法分析器和G代码生成器等部分组成,可成功应用于虚拟数控加工仿真。关键词:虚拟数控加工;G代码;编译器中图分类号:TG659 文献标识码:A
ResearchonaGCodeTranslatorofVirtualNCMachiningSystemWANGXin2guang,FUJian2zhong(lnstituteofModernManufacturingEngineering,ZhejingUniversity,Hangzhou310027,China)Abstract:Inthispaper,aGcodetranslatormoduleofvirtualNCmachiningsystemispresent,andsomespecialexpressionsareusedforlexicalandsyntaxanalyzinginthismodule.ThisGcodetranslatorconsistsoflexical2analyzer,syntax2analyzerandvirtualcodegenerator,whichisappliedonNCmachiningsimulationsuccessly.Keywords:NCmachiningsimulation;Gcode;translator
0 引言传统的数控加工过程是由工艺设计、原型加工、评估检验等步骤重复进行,直到设计出满意的产品模型,这不仅存在着许多误差,而且成本高昂,造成大量原材料和时间的浪费。虚拟制造技术(VM)综合了实际加工对象及操作流程的设计建模、数控仿真、人工智能等过程而发展起来的一门技术[1],
以达到提高设计精度,缩短研发周期,降低制造成本的目的,提高了研发和生产效率。虚拟制造中的数控仿真技术通过对实际生产加工过程的模拟仿真,为技术人员提供了一个可以分析计算、优化设计工艺流程的可视化环境和辅助手段[2]。G代码编译器可以在NC程序实际执行之前,检查和确认NC程序。G代码翻译器是数控仿真技术最重要的功能模块之一。1 G代码编译器概述 图1 数控仿真G代码相关的模块G代码编译器是联接NC源代码生成模块(例如使用TPG软件工具包等)和仿真加工运动控制模块之间的枢纽,如图1所示。NC源代码的生成主要通过两个步骤完成,首先,CAM模块根据设计部分计算刀具切割的轨迹,然后,NC处理模块根据刀具位置文件产生具体的NC程序,作为机器的输出控制。这两步工作都离不开人为行为的参与,NC程序中不可避免的存在一些可能的错误例如词法错误、语法错误、机械参数错误、刀具和工件发生碰撞等等[1]。尽管有些CAD/CAM软件如UGII和MASTERCAM也可以进行刀具路径仿真演示,但这种演示仍然是以刀具位置文件为基础进行的,而虚拟数控加工则是以NC程序代码为基础进行的仿真。在数控仿真加工中,刀具在三维图象模块中的仿真运动是由实际机械刀具使用的NC程序代码来控制的。G代码编译器用来检查NC程序,并且根据这些程序计算生成驱动虚拟刀具运动的命令代码。如果NC程序源代码发现错误,G代码编译模块可以将相关的错误信息反馈到NC源代码生成模块中,以便于做相应的修改。2 G代码编译器的结构和功能如图2所示,G代码编译器主要由词法分析器、语法分析器、虚拟加工代码生成器三部分以及G代码关键字表、加工信息储存表等表格文件组成。2.1 G代码关键字表G代码关键字表是用来存储各种不同类型数控系统的加工关键字(如G0、G33、M98、M30等),不同类型的数控系统关键字的含义不同,例如:螺纹攻丝循环指令,SIEMENS系统使用G33
指令,而FANUC系统使用G84指令;刀具返回参考点指令,
SIEMENS系统使用G74指令,FANUC系统使用G28指令等等,为此需要针对不同的系统制作不同的关键字表,表中定义了一系列功能字符串,分别存储不同系统中相同功能的加工关键字,例如:字符串StrGoRef表示刀具返回指令,在SIEMENS关键字表中,StrGoRef=”G74”;而FANUC关键字表,StrGoRef=”G28”。通过G代码关键字表可以使不同类型系统的NC代码都可以通过这种编译器编译,并且,如果需要对新系统的NC代码进行编译时,比如日本三菱系统,只需要制作一份相应的三菱G代码关键字表就可以了,从而实现了G代码编译器的通用性和兼容性。2.2 正则表达式的应用微软公司的GRETA正则表达式模板类库包含了C++对
・08・
・工艺与装备・组合机床与自动化加工技术象和函数,即rpattern:搜索的模式和matchresults/substre2sults:放置匹配、替换结果的容器。使用时,首先用一个描述匹配规则的字符串初始化一个rpattern对象,然后以这个字符串为参数调用rpattern类的函数就可以得到匹配后的结果。例如做语法分析时,查找X坐标后面的加工数据,则相应的程序代码如下:.......stringstr1;rpatternpat(“X(\d+)”);matchresults::backreftypebr=pat.match(str1,results);........变量br存储了X坐标的下一个加工点的数值。2.3 词法和语法分析器的结构及功能如图2所示,词法分析器和语法分析器都是通过链接相应的G代码关键字表,对NC源程序代码做分析、检查。它们以块(BLOCK)为单位,读入NC程序,逐行分析,并输出结果。词法分析器主要用来去除NC程序中的注释、空格,分析检查NC程序中的关键字符号是否与G代码关键字表相对应。如果发现错误,则显示并且记录错误字符和所在位置。语法分析器则主要以正则表达式为工具,逐行对G代码关键字表中的关键字进行格式匹配,找出相关的加工信息参数例如主轴转速、刀具编号、进给速度、冷却液状态等,并加以分析检查,如果发现错误例如主轴转速超过额定值等等,则显示并记录错误信息和所在位置,以便于技术人员修改。最后,将经过检查正确的NC代码加工信息存储到加工信息存储表中,作为虚拟加工代码生成器的输入数据流。图2 词法和语法分析流程图2.4 加工信息储存表(CodeInfoList)经过词法和语法分析器检查的NC源代码以加工关键字和数据参数的形式储存在加工信息储存表中(CodeInfoList),表格中的元素是C++类CCodeInfo的一个对象。CCodeInfo类的结构如下:classCCodeInfo:publicCCmdTarget{......public:doublemdDotX; //存放数据点的X坐标数值信息doublemdDotY; //存放数据点的Y坐标数值信息doublemdDotZ; //存放数据点的Z坐标数值信息doublemdDotI; //存放圆弧插补的圆心的X值doublemdDotJ; //存放圆弧插补的圆心的Y值......CArraymGcodeArray; //G关键字数值CArraymTagArray;//子程序调用标记CArraymMcodeArray;//M关键字数值intmiFcode;//F关键字数值......public:inlinedoubleGetX(){returnmdDotX;}//读出X点坐标信息......voidSetX(doublex);voidSetY(doubley);......voidCopyGcodeTo(CCodeInfo3);voidCopyMcodeTo(CCodeInfo3);......protected:......DECLAREMESSAGEMAP()......};2.5 虚拟加工代码生成器的结构和功能如图3所示,虚拟加工代码生成器是以加工信息储存表为输入数据流。读入一组加工信息后,首先处理子程序调用指令(例如FANUC系统中子程序调用指令为M98,返回指令为M30),
子程序调用时,将子程序返回地址入栈,同时设置子程序调用次数标记量为初始值;
图3 虚拟加工代码生成器的结构流程子程序返回时,返回地址出栈,执行下一行指令。然后,进行坐标系和坐标偏移量设置(G53、G54等指令)。接下来,判断是否要进行刀具半径补偿同时进行补偿方式设定(如G40、G41、G42
指令),最后读入X、Y、Z等加工数据,并根据坐标偏移量和刀具补偿做相应修改。最后根据驱动机床运动的G代码(如G00、G01、G02等)生成相应的驱动代码。生成的虚拟驱动代码既可以驱动虚拟数控机床进行仿真控制,也可以通过各种运动控制器驱动实际机床运动。(下转第84页)
・18・
2005年第6期・工艺与装备・材料;C=80%,S=65%此外,产生某种现象的原因还可能是某几个量相互作用的结果。根据实际需要还应对量硬度、再回火、去应力退火、表面脱碳、滚丝/磷化的先后顺序、头下圆角粗糙度等因素对高强度紧固件疲劳性能的影响[3]。表2 各相关参数所决定的试验条件表试验条件试验时间被测件规格疲劳强度规格标准差 再进一步进行数据处理,得到描述疲劳强度如表3。2.3 数据挖掘结果分析与技术总结在研究中所选的6种材料在给定条件下的疲劳性能有一定差异,但最大差异只有7.2%,说明材料因素不是影响高强度螺栓疲劳性能的主要因素。其他条件相同,由于热处理波动导致螺栓的硬度在不大的范围年变动时,其疲劳性能吴明显变化。表3 描述疲劳强度的表被测件规格试验变化因素参数值疲劳强度平均值标准差试验负责人硬度再回火去应力退火表面脱碳滚丝/磷化1滚丝/磷化2头下圆角粗糙度 高强度螺栓表面在脱碳现象时,其疲劳性能将产生较大幅度下降。螺栓先滚丝后磷化比先磷化后滚丝的疲劳强度低。螺栓头下圆角过渡形式、粗糙度、滚丝轮螺纹牙性等结构、工艺因素将显著影响强度螺栓的疲劳性能。紧固件疲劳试验数据处理中的所面临的挑战:(1)过程计算机记录的数据是时间上连续变化的数据采样量化得到的,本质上是连续的,其变化受过程状态约束;其次,在空间上,过程变量具有高维数、强关联和非线形的特点。而目前大多数挖掘算法都有维数上的限制,另外,数据的强关联性和非线形也增加了知识表示的浓度,影响知识的可视化和可理解性。(2)由于各种干扰,过程数据中含有大量噪声。另外过程数据中也含有大量的不确定性。数据中的噪声影响算法的有效性和结论的可靠性,而数据中的不确定性又给知识的提取带来了困难。且不确定性数据要求挖掘算法本身具有鲁棒性。目前的挖掘算法处理数据中的干扰和不确定性集算法的鲁棒性,距知识发现的要求存在差距,有待进一步研究。(3)在过程记录的数据中,绝大多数数据都是正常状态的数据,极少量不正常状态数据,从大量数据中发现小模式是异常检测的主要方法。目前大多数数据挖掘都不能有效地从大规模数据库中辩识小模式。这给数据选择带来了困难。(4)效率的挖掘算法的研究。根据所采集数据的特点,既时间上连续变化且高维数。如何充分利用领域知识,有效的处理数据的关联与耦合,剔除与挖掘任务无关的数据,以降低维数,设计出高效的数据挖掘算法是下一步发展的重点。(5)紧固件疲劳试验中的数据挖掘结构模型的研究。应与其他系统集成技术和方法的研究,与紧固件疲劳试验系统、数据库、专家系统、可视化工具等多项技术集成。