您的位置:网站首页 > 机械制图 > 机械技巧

曲线加工的G代码程序分析

时间:2011-07-16 08:34:06 来源:未知
在机械、模具制造行业,经常遇到曲线加工。对于简单的曲线——圆弧,G代码提供了G2、C3、I、J、K、R指令,很容易写出数控程序。但对于一些复杂、特殊的曲线——椭圆、抛物线、渐开线等,当然还有更加复杂的高次曲线,常规的手段就无能为力。笔者根据多年的工作实践,通过借助一些工具软件,经特殊处理,写出G代码程序来解决此类问题。常用的方法有三种:①利用G代码的强大功能,写出宏程序。②借助工具软件Mastercam,生成曲线程序。③用C语言(或其他语言)产生程序的主数据文件,然后手动在文件头尾加上功能语句,成为可以运行的程序。这三种方法都有各自的优、缺点和适用范围,可以相互补充。

 

1.G代码的宏程序

 

它提供了变量,算术运算指令(加、减、乘、除),功能函数(SIN,COS,TAN,…),还有控制指令(IF——GO-TO,WHILE——DO)。巧妙的运用这些指令,可以解决很多比较简单、有规律的曲线,如正弦曲线、抛物线等。例1:正弦曲线(如图1)。

主程序主程序

 

 

G65P9910AOB360.C100.F100

 

 

对局部变量设置

 

#l=0

 

#2=360.00

 

#3=100.00

 

#9=100.00

 

09910(子程序)

 

WHILE[#1IE#2]DO1

 

#10=#3*SIN[#1]

 

G90Gl#lY#10F#9

 

#1=#1+10.

 

END1

 

当然,此法还可以表达较复杂的曲线。宏程序短小精炼,对于存储空间小的设备很适用。具有很强的适应性,只要改动一两个数据就可以进行粗加工。但其晦涩难懂,逻辑复杂,过程中的错误不易发现,对于特别复杂的曲线无能为力。这种方法对编程人员的要求较高,须非常熟练G代码,包括不常用的指令,要有相当扎实的高等数学知识,还要熟悉数控加工操作。

Mastercam软件的应用

2.利用Mastercam软件

此软件广泛应用于数控加工,界面亲和,易学易用,能解决G代码宏程序不能解决的问题。以本文给出的工件为例,如图2所示,其曲线由一些离散的坐标点来定义(用于测量),如附表所示。

用Mastercam处理,操作流程如下:①先创建点,按坐标值绘制所有已知点。②把所有点按次序联成Spline曲线。③选择加工方式。④生成加工程序。具体步骤如下:

第1步,Create—Point—Position,然后直接输入坐标值,先x轴后y轴,中间用逗号隔开。第2步,待所有给定数据输入完毕后,命令Create—Spline—Auto-matic,系统提示选择第一个点、第二个点及最后一个点,一一点击完成后,系统自动生成Spline样条曲线。第3步,命令Toolpaths—Finish—Chain,用鼠标点击曲线的右(末)端,选择End here命令,确认Done后,弹出Tool parameters刀具参数对话框,根据需要选择合适刀具,再切换到Finish parameters对话框,如图3所示,选择切削参数。该过程中要特别注意几个重要参数的确定:①Linearization决定加工精度,其值越小精度越高,则程序也越长,一般0.01就足够了。②Compensa-tion type意为选择刀补类型,常用的是Computer和Con-trol两种。computer是根据刀具实际情况计算出刀具轨迹,生成程序,不用刀补;Control则不考虑刀具规格,生成有刀补的程序。③Compensation direction,选择刀补方向,一般可根据加工方式和操作方法而定。以上参数确定后弹出管理菜单,如图4所示。第4步,点击Post键,打开后处理对话框,如图5所示,确定机床数控操作系统,此处选择的是FANUC系统,文件是MPLFAN。,注意:后处理文件以MPL开头,其后几位表示简写的数控操作系统。若想更改为其他系统,通过change Post键进行选择,且选中Edit命令,然后点击0K键,生成程序。#p#分页标题#e#

该工件的加工经过几次摸索:第一次加工时直接利用给出点的坐标值,将两点间近似为一条直线,用G1指令写出程序。结果加工出来的曲线是19段折线,是离散点过于稀疏造成的。第二次,在AutoCAD2002中把离散点用样条曲线Spline命令串连起来,用垂线分曲线,等分它在X轴上的投影,将点的坐标求出来,增加了点的个数。且人为在原有两点之间插入若干个点,全部写入程序。此法虽然能解决问题,但很繁琐,且程序庞大,易出错。第三次,使用Mastercam,采用样条线把离散的点连起来,直接生成满足精度要求的程序,与方法二相比,生成程序短小精炼,正确率高。该方法高效、简单、便捷,可以解决只给定离散点的曲线形式,对操作者要求较低。

曲线加工的数据编程

3.用C语言(或其他语言)生成程序的数据主体

某产品,其外形是一个很复杂的曲线方程,用宏程序很难(甚至不可能)把它写出来,而Mastercam则无法输入函数方程。此时,借助C语言来生成数据主体。

例:车工曲线方程如下:

      0≤x≤22.1

      Y=200.2+140.653√b

      b=0.008754(x/168)+6.1455(x/168)2

        -4.87544(x/168)3+0.568749(x/168)4

        +0.76587(x/168)5

    它很难在Mastercam中绘制。用C语言来计算其离散点,过程如下:

    #Include”math.h”

    #Include”conio.h”

    #Include”stdio.h”

    Main ()

   {

    double a,b,d,c,i,e;

    FILE*fp;

  fp=fopen(”d:\s77.txt”,”w+”);

  for(i=0;i<22.1;i=i+0.1)/*③*/

  {

  c=i/168;

  b=0.008754*c+6.1455*c*c-4.87544*c*c*c+

  0.568749*c*c*c*c+0.76587*c*c*c*c*c;

      d=0.3333*log(b);

      e=exp(d);/*①*/

      a=200.2+140.65*e;/*②*/

      printf(“Z=%.4f”,i);

      printf(“X=%.4f\n”,a);

      fprintf(fp,”z%.3fX%.3f\n”,i,a);

   结果输出到文件S77.TXT*/

     }

     Printf (”ok”);

     getch ()

   }

程序①②两句用到了一个公式a=eIna,b开3次方即是6的1/3方。此程序在TC2.0下通过。

运行此程序得到s771.txt文件,用编辑器(任何一个,如记事本)打开,只要在头尾加上功能句,就是一个可用的程序。它的原理是:任何曲线可以分成无数很短的曲线,每个很短的曲线可以近似地认为是一段直线。当每段曲线的长度趋于零时,与直线的误差也趋于零。足够多的直线连起来可以替代一段曲线,这样就把曲线转化成有限段的直线。直线的程序很容易实现,问题得到简化。为了尽可能的减小曲线误差,每段曲线长度要尽可能的短,所以程序中的循环步长(控制曲线长度,注③i=i+0.1中的0.1)可以取得很小。但这样做成的程序会很大,有大量的冗余数据产生。曲率与误差成正比,因为步长固定,在曲率小的地方误差小,曲率为零(即直线)时则有大量的无用数据(完全可以弃掉而不影响程序),而在曲线曲率大的地方误差较大。新生代机床其数控系统容量都很大,所以不必过多考虑程序的大小,以保证曲线精度(线轮廓度)为第一要务。如果要生成一个没有冗余的短小程序,要用到二次求导等数学知识,非常复杂,在此处不作讨论。#p#分页标题#e#