< 返回
delcam软件在发动机加工中的运用

一、概述

一汽大连柴油机厂的产品开发部门应用的cad的软件为autocad和pro/engineer两种软件,即二维和三维cad文档共存。对二维的autocad文档,转为cam加工所需的加工特征时,先通过delcam公司powermill软件生成加工特征,再进行数控编程。对三维的pro/engineer文档,可以直接通过powermill软件提取加工特征,进而进行数控编程。在一汽大连柴油机厂进行的6de2产品试制时,同时采用了上述两种方法进行编程。

由于powermill直接接收cad数据,避免了手工编程时反复查找图纸相关尺寸所浪费的时间,编程效率大大提高,为新产品上市取得了宝贵的时间。

二、对后处理技术的开发

后处理技术是cam技术的重要环节之一,针对不同的数控系统(如fanuc、siemens和toshiba等),要对cam系统编制不同的后处理程序。同时,由于二维加工与三维加工本质的区别,powermill系统要求的后处理也不尽相同。在二维加工中,特别是发动机的加工中,主要是点位的加工(主要是孔位的加工,有时带有很少的平面的加工)。而在三维加工中,主要是曲面加工。但无论曲面怎样复杂,cam系统都是以小的直线段,在精度要求的范围内来逼近复杂的曲面,在其生成的g代码中主要以g01为主。针对如图1所示的曲面加工所生成的加工程序如下:

图1 三维加工

%

:0001

n10g91g28x0y0z0

n20g40g17g80g49

n30g0g90z33.031

n40t1m6

n50g54g90

n420x1.828y21.705s1500m3

n430g43z28.031h1m8

n440g1z22.531f500

n450x1.142y21.014

n460x.247y21.705

..........

..........

n8180x22.679y35.32

n8190g0z33.031

n8200m9

n8210g91g28z0

n8220g49h0

n8230g28x0y0

n8240m30

delcam公司的powermill软件提供的缺省的后处理可以满足三维加工的要求。而在二维加工中,孔位加工(钻、扩、铰、攻丝和镗等)都以g81为主,其中攻丝时缺少节距和停留时间等参数。以fanuc为例,进行攻丝钻孔时,应用缺省的后处理,生成的g代码格式如下:

g81g99z-167.r-95.f341

应用笔者开发的后处理程序所生成的代码如下:

g84g99z-167.0r-95.0p300f2.0

针对上述情况,笔者分别为toyoda、yeongchin和toshiba三种加工中心开发了powermill软件孔位加工(钻、扩、铰、攻丝和镗等)的后处理程序,从而使所有的孔位加工功能得到充分的发挥,保证产品加工过程的工艺要求。

yeongchin加工中心的后处理如下:

machinefanuc15m

#originaloptionbyfaw_ddewliguangquan

definewordnt

addressletter="t"

addresswidth=1

fieldwidth=2

notmodal

enddefine

definewordts

addressletter="n"

addresswidth=1

fieldwidth=3

notmodal

enddefine

definewordtpn

addressletter="(toolpath:*******"

addresswidth=20

fieldwidth=30

enddefine

defineformat(id)

addressletter=":"

enddefine

defineformat(n)

notpermanent

enddefine

defineformat(g1)

leadingzeros=true

notmodal

enddefine

defineformat(f)

modal

decimalpoint=true

decimalplaces=2

trailingzeros=false

imperialformats=metricformats

enddefine

defineformat(hm1m2)

leadingzeros=true

enddefine

defineformat(p)

fieldwidth=3

metricformats

decimalpoint=false

decimalplaces=0

trailingzeros=true

imperialformats=metricformats

enddefine

definewordpf

addressletter="f"

fieldwidth=5

notmodal

metricformats

decimalpoint=true

decimalplaces=2

trailingzeros=false

imperialformats=metricformats

enddefine

defineformatall

tapeposition=0

enddefine

wordorder=(+tpnnttsppfd)

definekeys

toolradius=d

cycledwell=p

dwellnotused

enddefine

definecodes

cycleretract=g699

linear=g11

compoff=g240

componleft=g241

componright=g242

enddefine

messageoutput=false

blockorder=true

toolresetcoordinates=3

integer51=4

integer69=2

incrementalcentre=false

integer34=0

integer35=1

integer36=0

integer37=1

defineblocktapestart

"%"

idprogid

rapid;incrementaldata;g628;zcoord0

incrementaldata=c;g630;ycoord0;xcoord0

enddefine

defineblocktoolchangefirst

toolnumbertoolnumber

changetool

if(nexttool<>0)

ntnexttool

endif

tstoolnumber

setswa

enddefine

defineblocktoolchange

if(word[30]=7orword[30]=8)

m29

endif

rapid;incrementaldata;g628;zcoord0

incrementaldata;g630;ycoord0;xcoord0

compensationoff;g149;g480=c

changetool

if(nexttool<>0)

ntnexttool

endif

tstoolnumber

setswa

enddefine

defineblockmoverapid

if(swa)

tpntoolpathname;")"

g259;absolutedata;rapid;g6;xcoord;

ycoord;zcoord;spindle;toollength;m1;m2

unsetswa

else

rapid;g6;xcoord;ycoord;zcoord;spindle;

toollength;m1;m2

endif

enddefine

defineblockmovelinear

linear;g2;xcoord;ycoord;zcoord;toolradius;

feedrate;m1;m2

enddefine

defineblockmovecircle

n;g1;g3;xcoord;ycoord;zcoord;keyi; keyj;keyk;feedrate

enddefine

defineblockcyclestart

if(cycle=1)

g4;cycleretract;xcoord;ycoord;

drillholedepth;clearplane;feedrateprat

endif

if(cycle=2orcycle=3orcycle=>5)

g4;cycleretract;xcoord;ycoord;drillholedepth;

clearplane;cycledwell;feedrateprat

endif

if(cycle=4)

g4;cycleretract;xcoord;ycoord;drillholedepth;

clearplane;cycledwell;

pf(cycfed/toolspeed[toolnum])

endif

enddefine

defineblockmovecycle

xcoord;ycoord;m1;m2

enddefine

defineblockmovetap

xcoord;ycoord;m1;m2

enddefine

defineblockcycleend

endofdrill

enddefine

defineblocktapeend

if(word[30]=7orword[30]=8)

m29

endif

rapid;incrementaldata;g628;zcoord0

rapid;incrementaldata=c;g628;ycoord0

g140;g249;g480=c

changetool

endoftape

enddefine

end