一种用于处理模具精加工加工余量的自动编程方法

文档序号:1719473 发布日期:2019-12-17 浏览:38次 >En<

阅读说明:本技术 一种用于处理模具精加工加工余量的自动编程方法 (automatic programming method for processing finishing allowance of die ) 是由 夏琴香 张心言 陈志平 叶福缘 徐晓 于 2019-09-29 设计创作,主要内容包括:本发明提供一种用于处理模具精加工加工余量的自动编程方法,包括以下步骤:1、把加工程序以G代码的形式,另存为TXT格式;2、读取加工程序TXT文档的数据;3、其按顺序提取加工程序文档中的一行数据,将信息分类整合;4、判断步骤3中提取的数据是否需要修正,若需要修正,则跳到步骤5,否则跳到步骤7;5、获取加工余量的大小及其矢量方向;6、根据加工余量的大小及其矢量方向,对加工G代码进行修正,并输出新的G代码;7、将剩余的加工G代码直接输出至文本窗口,并提取加工程序TXT文档中的下一行数据,若该行为最后一行,自动编程中的G代码修改部分结束,否则跳回步骤3;本发明能提高数控编程的效率,同时降低出错率。(The invention provides an automatic programming method for processing the finishing allowance of a die, which comprises the following steps: 1. storing the processing program in a TXT format in a G code form; 2. reading data of a TXT document of a processing program; 3. sequentially extracting a line of data in a processing program document, and classifying and integrating information; 4. judging whether the data extracted in the step 3 needs to be corrected, if so, jumping to the step 5, otherwise, jumping to the step 7; 5. obtaining the size and the vector direction of the machining allowance; 6. correcting the processing G code according to the size of the processing allowance and the vector direction thereof, and outputting a new G code; 7. directly outputting the rest processing G codes to a text window, extracting the next line of data in the TXT document of the processing program, if the last line of the line is the line, finishing the G code modification part in the automatic programming, otherwise, jumping back to the step 3; the invention can improve the efficiency of numerical control programming and simultaneously reduce the error rate.)

一种用于处理模具精加工加工余量的自动编程方法

技术领域

本发明属于模具数控编程技术领域,具体涉及一种用于处理模具精加工加工余量的自动编程方法。

背景技术

数控编程是数控加工准备阶段的主要内容之一,是从零件图纸到获得数控加工程序的全过程;通常包括分析零件图样,确定加工工艺过程;计算走刀轨迹,得出刀位数据;编写数控加工程序;制作控制介质;校对程序及首件试切。

数控编程分为手工编程和自动编程两种方法。

手工编程是编程员直接通过人工完成零件图工艺分析、工艺和数据处理、计算和编写数控程序、输入数控程序到程序验证整个过程的方法。手工编程广泛用于形状简单的点位加工和直线、圆弧组成的平面轮廓加工中。

自动编程是一种利用计算机辅助编程技术的方法,它是通过专用的计算机数控编程软件来处理零件的几何信息,实现数控加工刀位点的自动计算。对于几何形状复杂的零件需借助计算机使用规定的数控语言编写零件源程序,经过处理后生成加工程序。

加工误差是指被加工工件达到的实际几何参数(尺寸、形状和位置)对设计几何参数的偏离值。在生产实际中,影响加工精度的工艺因素是错综复杂的。由于误差补偿方式的不同,误差补偿又可分为加工误差补偿和原始误差补偿,前者是对零件加工过程中的误差进行补偿,而后者是对造成零件加工误差的误差源进行补偿,本软件采用的是前者。

此外针对模具加工中的自动编程问题,国内专家学者进行了大量的研究,具体如下。

周祯晖等(周祯晖. 基于NX 的复杂曲面零件数控加工自动编程[J].科技资讯,2017 (50):50-52.)以复杂曲面零件为研究对象,基于NX_CAM模块,对数控加工自动编程中的刀具选择、加工参数设置、刀轨生成及校验、后置处理等一系列关键环节进行了研究,以为数控加工自动编程技术的实施提供了参考。孙先成等(孙先成,邹阳等. 自由轮廓曲面铣削加工的表面尺寸误差补偿[J]. 机械设计与制造2018(11):124-127.)针对自由轮廓曲面铣削加工,提出了一种补偿加工中由于刀具变形引起的表面尺寸误差的方法。徐子文(徐子文. 型腔模复杂镶块数控自动编程系统的研究与开发[D].华中科技大学. 2017.)以Unigraphics NX 作为编程系统的架构平台,通过其提供的二次开发函数接口,根据系统选用的数控加工工艺方案和操作参数,使用编程语言实现创建加工操作、设置操作参数、生成刀路轨迹、完成后处理等所有编程流程的自动化。

以上方法的缺点为:

1.针对手动编程方法,对于复杂的零件精加工时所产生的加工余量,特别是具有非圆曲线曲面的加工表面,或者零件的几何形状并不复杂,但是程序编制的工作量很大,或者是需要进行复杂的工艺及工序处理的零件,由于这些零件在编制程序和加工过程中,数值计算非常繁琐,程序量很大,如果采用手工编程往往耗时多、效率低、出错率高,甚至无法完成。

2.针对自动编程方法,对于复杂的零件精加工时所产生的加工余量,设计人员首先需要对加工零件模型进行对应余量的修改,再在该模型的基础上利用UG进行自动编程以得到加工程序,结束编程后还需将模型恢复原状,以保证模型的一致性。整个过程进行大量重复操作,耗时多且效率低。

3.而针对目前专家学者的研究成果,目前针对模具加工中的自动编程问题,主要是基于基于NX_CAM模块,通过人工或软件编程对模具的3D结构模型进行再编程,最终输出G代码,以达到自动编程的目的。但这类方法由于需要对模具的3D结构模型进行处理,耗时长,效率低。目前急需一种直接对加工程序G代码直接进行处理的自动编程技术。

发明内容

针对现有手动编程与自动编程存在的加工效率低、加工成本高的技术问题,本发明提供了一种用于处理模具精加工加工余量的自动编程方法,处理模具精加工加工余量的数控编程,其能提高数控编程的效率,同时降低出错率。

本发明至少通过如下技术方案之一实现。

一种用于处理模具精加工加工余量的自动编程方法,包括以下步骤:

S1、把加工程序以G代码的形式,另存为TXT格式,形成加工程序TXT文档;

S2、建立文件读取函数,读取步骤S1中的加工程序TXT文档的数据;

S3、建立提取函数,使其按顺序提取加工程序TXT文档中的一行数据,并将其中信息分类整合;

S4、判断步骤S3中提取的数据是否需要修正,若需要修正,则跳到步骤S5,否则跳到步骤S6;

S5、获得加工余量的大小及其矢量方向;

S6、根据加工余量的大小及其矢量方向,对加工G代码进行修正,并逐步将新的G代码输出至文本窗口;

S7、将剩余的加工G代码直接输出至文本窗口,并提取加工程序TXT文档中的下一行数据,若该行为最后一行,自动编程中的G代码修改部分结束,否则跳回步骤S3。

S8、新建一个TXT文档并将修改的G代码复制至其中,然后将其重新导入数控机床中对产品进行二次加工,至此,自动编程结束。

进一步的,步骤S3具体包括以下步骤:

S31、建立文件行读取函数uc4514(intchan, char * * cbuf),读取加工程序TXT文档中的一行数据并将其储存进char类型的数组Cbuf[64]中;

S32、建立若干个char类型数组,用于储存文档中字符X、Y、Z及X、Y和Z后面数字的字符,分别命名为Cbuf_X[64],Cbuf_Y[64]和Cbuf_Z[64];

S33、建立若干个char类型数组,用于储存文档中字符X、Y、Z前面所有的字符,分别命名为temp_X[64],temp_Y[64]和temp_Z[64];

S34、建立若干个char类型数组,用于储存文档中字符X、Y、Z后面所有的字符,分别命名为Cbuf_AX[64],Cbuf_AY[64]和Cbuf_AZ[64];

S35、建立一个char类型数组作为缓存空间,储存空格后面所有的内容,命名为temp_sapce[64];

S36、通过expression0->Value()函数,读取所要修改的余量大小,并储存为double类型,命名为value;

S37、通过vector0->Vector()函数,读取所要修改的余量的矢量方向,并储存为Vector3d类型,命名为vector。

进一步的,所述的步骤S4中判断步骤S3中提取的数据是否需要修正,具体包括以下步骤:

S41、建立bool类型变量key,初始值记为false,当检测到字符G91时,令key=true;当再次检测到G91时,令key=false,如此反复;

S42、建立strcat(char* strDestination, const char* strSource)函数遍历数据的字符,查看该行数据是否存在字符X、Y或Z;若不存在,则不需要修正;若存在,则继续判断key是否为true,若是,则需要进行修正,否则便不需要修正。

进一步的,步骤S5具体包括以下步骤:

S51、通过expression0->Value()函数,读取所要修改的余量大小,并储存为double类型,命名为value;

S52、通过vector0->Vector()函数,读取所要修改的余量的矢量方向,并储存为Vector3d类型,命名为vector。

进一步的,步骤S6具体包括以下步骤:

S61、首先运用初始化函数memset(void *buffer, int c, int count)对相关变量进行初始化,清空内存,去除上一行数据的影响;

S62、建立一个用于用于复制X前面的字符的函数;建立一个用于复制Y前面的字符的函数;建立一个用于复制Z前面的字符的函数;

S63、建立一个用于复制X后面的字符的函数;建立一个用于复制Y后面的字符的函数;建立一个用于复制Z后面的字符的函数;

S64、在复制X后面的字符的函数的基础上,建立一个用于延矢量方向调整字符X后数值的函数;在复制Y后面的字符的函数的基础上,建立一个用于延矢量方向调整字符Y后数值的函数;在一个用于复制Z后面的字符的函数的基础上,建立一个用于延矢量方向调整字符Z后数值的函数;

S65、遍历数组Cbuf[64]的字符,查看该行数据存在字符X、Y或Z中的哪几个或全部,然后按照X、Y、Z的顺序,对其进行修正。由于修正过程有一定相似性,以下以行数据仅存在X为例进行说明,修正包括以下步骤:

S651、运用复制X前面的字符的函数将字符X前的字符拷贝至temp_X[64]中,并调用输出函数打印该信息至信息窗口;

S652、利用vector.X可以得到目标矢量方向的沿X轴方向的单位矢量(double类型),则value*vector.X便可得到沿X轴方向修正量。Y和Z方向同理;

S653、将沿X轴方向修正量带入用于延矢量方向调整字符X后数值的函数,对字符X后的数字进行修正;

S654、通过判断X后面的字符是否存在空格,可以判断X后面是否存在除数字以为的其他字符。若X后面的字符存在空格,则利用C++语言中的指针功能打印空格后面的字符并进入下一步,否则直接进入下一步;

S655、判断该行是否为文本中的最后一行,若不是,则行读取函数uc4514(intchan,char * * cbuf),读取加工程序TXT文档中的一行数据并将其储存进char类型的数组Cbuf[64]中,然后回到步骤S3进行循环,否则程序结束。

进一步的,步骤S7具体如下:

将步骤S3到步骤S7整个过程用while循环或for循环包括起来,以是否最后一行为判断条件,若不是最后一行则继续循环,若是最后一行则自动编程结束。

进一步的,步骤S2所述的文件读取函数为uc4504(const char * fspec,intomode, intftype)。

进一步的,步骤S3所述的提取函数为uc4514(intchan, char * * cbuf)。

与现有的技术相比,本发明的有益效果是:

1、本发明能适用于任意形状、结构的加工零件,具有很高的适应性;

2、本发明是在UG的基础上进行二次开发的技术方案,具有很高的普适性;

3、本发明比较现有的传统数控编程,不需要对加工零件3D结构进行修改,不需要利用UG软件进行数控编程,可直接结合加工所剩余量大小和其矢量方向对加工所用G代码直接进行编程修改,解决了数控编程过程中,任务量繁重、重复工作量大、工作效率低下并容易出现不可控错误等问题,提高了数控编程效率,从而提高公司产品的竞争力;

4、结合目前日益成熟的在线检测系统,可做到在线检测后,导入检测数据,实现快速自动编程,降低了加工误差,提高了加工效率。

附图说明

图1为本实施例一种用于处理模具精加工加工余量的自动编程方法的流程示意图;

图2为本实施例一种用于处理模具精加工加工余量的自动编程方法中编程所需用到的头文件;

图3为本实施例一种用于处理模具精加工加工余量的自动编程方法中判断该行是否需要修正的流程图;

图4为本实施例一种用于处理模具精加工加工余量的自动编程方法中对加工G代码进行修正的流程图;

图5为本实施例一种用于处理模具精加工加工余量的自动编程方法的新G代码结果示意图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细说明,但本发明的实施方式不限于此。

如图1所示,一种用于处理模具精加工加工余量的自动编程方法,包括以下步骤:

S1、将加工G代码从ptp格式转换为TXT格式,形成加工程序TXT文档,并安装相应语言环境;

本实施例中,步骤S1的将加工G代码从ptp格式转换为TXT格式,并安装相应语言环境具体如下:

运用数控编程软件导出加工G代码,并以记事本的形式打开,并另存为TXT格式。然后安装Microsoft Visual Studio 2010,其中编程所需要用上的头文件如图2所示。

S2、读取G代码的TXT文档中的全部信息具体为:

通过输入G代码的TXT文档的地址,利用文件读取函数uc4504(const char * fspec,intomode, intftype)读取步骤S1中的加工程序TXT文档的数据。

S3、建立函数uc4514(intchan, char * * cbuf),使其按顺序提取加工程序TXT文档中的一行数据,并将其中信息分类整合,具体包括以下步骤:

S31、建立文件行读取函数uc4514(intchan, char * * cbuf),读取加工程序TXT文档中的一行数据并将其储存进char类型的数组Cbuf[64]中;

S32、建立若干个char类型数组,用于储存文档中X、Y、Z及后面数字的字符,分别命名为Cbuf_X[64],Cbuf_Y[64]和Cbuf_Z[64];

S33、建立若干个char类型数组,用于储存文档中X、Y、Z前面所有的字符,分别命名为temp_X[64],temp_Y[64]和temp_Z[64];

S34、建立若干个char类型数组,用于储存文档中X、Y、Z后面所有的字符,分别命名为Cbuf_AX[64],Cbuf_AY[64]和Cbuf_AZ[64];

S35、建立一个char类型数组作为缓存空间,储存空格后面所有的内容,命名为temp_sapce[64];

S36、通过expression0->Value()函数,读取所要修改的余量大小,并储存为double类型,命名为value;

S37、通过vector0->Vector()函数,读取所要修改的余量的矢量方向,并储存为Vector3d类型,命名为vector。

在运用文件读取函数uc4504(const char * fspec,intomode, intftype)读取文档中的信息基础上,利用文件行读取函数uc4514(intchan, char * * cbuf),并将该信息储存至char类型的数组Cbuf[64]中。

S4、如图3所示,利用C语言中的逻辑语句,判断步骤S3中提取的数据是否需要修正,若需要修正,则跳到步骤S5,否则跳到步骤S6,具体包括以下步骤:

S41、建立bool类型变量key,初始值记为false,当检测到字符G91时,令key=true;当再次检测到G91时,令key=false,如此反复;

S42、建立strcat(char* strDestination, const char* strSource)函数遍历数组Cbuf[64]的字符,的字符,查看该行数据是否存在字符X、Y或Z;若不存在,则不需要修正;若存在,则继续判断key是否为true,若是,则需要进行修正,否则便不需要修正。

S5、获得加工余量的大小及其矢量方向,具体包括以下步骤:

S51、通过expression0->Value()函数,读取所要修改的余量大小,并储存为double类型,命名为value;

S52、通过vector0->Vector()函数,读取所要修改的余量的矢量方向,并储存为Vector3d类型,命名为vector。

S6、如图4所示,根据加工余量的大小及其矢量方向,对加工G代码进行修正,并逐步输出新的G代码具体为:

S61、首先运用初始化函数memset(void *buffer, int c, int count)对Cbuf_X[64],Cbuf_Y[64],Cbuf_Z[64],temp_X[64],temp_Y[64],temp_Z[64],Cbuf_AX[64],Cbuf_AY[64],Cbuf_AZ[64]和temp_sapce[64]进行初始化,清空内存,去除上一行数据的影响;

S62、建立void copystring_beforeX(char *str2,char *str1)函数,用于复制X前面的字符;建立void copystring_beforeY(char *str2,char *str1)函数,用于复制Y前面的字符;建立void copystring_beforeZ(char *str2,char *str1)函数,用于复制Z前面的字符;

S63、建立void copystring_afterX(char *str2,char *str1)函数,用于复制X后面的字符;建立void copystring_afterY(char *str2,char *str1)函数,用于复制Y后面的字符;建立void copystring_afterZ(char *str2,char *str1)函数,用于复制Z后面的字符;

S64、在copystring_afterX(char *str2,char *str1)函数的基础上,建立voidcopystring_pickX(char *str2,char *str1,double tmp_value)函数,用于延矢量方向调整字符X后的数值;在copystring_afterY(char *str2,char *str1)函数的基础上,建立void copystring_pickY(char *str2,char *str1,double tmp_value)函数,用于延矢量方向调整字符Y后的数值;在copystring_afterZ(char *str2,char *str1)函数的基础上,建立void copystring_pickZ(char *str2,char *str1,double tmp_value)函数,用于延矢量方向调整字符Z后的数值;

S65、strcat(char* strDestination, const char* strSource)函数遍历数组Cbuf[64]的字符,查看该行数据存在字符X、Y或Z中的哪几个或全部,然后按照X、Y、Z的顺序,对其进行修正。由于修正过程有一定相似性,以下以行数据仅存在X为例进行说明,修正包括以下步骤:

S651、运用copystring_beforeX(char *str2,char *str1)函数将字符X前的字符拷贝至temp_X[64]中,并调用输出函数打印该信息至信息窗口;

S652、利用vector.X可以得到目标矢量方向的沿X轴方向的单位矢量(double类型),则value*vector.X便可得到沿X轴方向修正量。Y和Z方向同理;

S653、将沿X轴方向修正量带入copystring_pickX(char *str2,char *str1,doubletmp_value)函数,对字符X后的数字进行修正;

S654、通过判断X后面的字符是否存在空格,可以判断X后面是否存在除数字以为的其他字符。若X后面的字符存在空格,则利用C++语言中的指针功能打印空格后面的字符并进入下一步,否则直接进入下一步;

S655、判断该行是否为文本中的最后一行,若不是,则行读取函数uc4514(intchan,char * * cbuf),读取加工程序TXT文档中的一行数据并将其储存进char类型的数组Cbuf[64]中,然后回到步骤S3进行循环,否则程序结束。

S7、输出剩余的加工G代码,并提取加工程序TXT文档中的下一行数据,利用C语言中的循环语句判断该行是否为最后一行,若不是则跳回步骤S3,否则自动编程结束,具体是,将步骤S3到步骤S7整个过程用while循环或for循环包括起来,以是否最后一行为判断条件,若不是最后一行则继续循环,若是最后一行则自动编程中的G代码修改部分结束。其实际结果如图5所示。

S8、新建一个TXT文档并将修改的G代码复制至其中,然后将其重新导入数控机床中对产品进行二次加工,至此,自动编程结束。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种数控寻中心设定坐标零点的方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类