
五面体加工中心坐标系偏移旋转与误差补偿.doc
10页摘要:目前国内五面体加工中心在立、卧头转换时,通常只进行简单的坐标系偏移补偿,通过 G17、G18、G19 来选择各个加工面如果采用坐标系旋转的方式,使 Z 轴始终沿主轴方向,更易于编程本文根据实际加工经验,讲解坐标系偏移、旋转和误差补偿的方法五面体加工中心是目前国内大型加工设备中比较先进的以我厂现使用中的沈机中捷 THA57200×400、GMC2560r2、GMC2560wr3为例,控制系统采用西门子 840D沈阳机床厂通常采用两种方式来补偿立、卧头的差值:1、执行转头程序 L01(newpos)就完成补偿变换;2、执行完转头程序 L01(newpos)后,再通过执行子程序 L11 完成变换其实这两种方式本质上没有什么区别,只是方式 1 中的L01(newpos)程序整合了方式 2 中的 L01(newpos)和 L11 程序下面我们通过沈阳机床厂提供的说明及程序源码来分析一下其误差补偿程序的原理首先,机床厂提供一个用户数据文件 UGUD.arc:%_N_UGUD_DEF;$PATH=/_N_DEF_DIRDEF NCK REAL DTT[50];用于记录各头各角度偏移值(编者注)DEF NCK REAL HEAD[10];用于记录头号(编者注)M17HEAD[1]变量来表示当前头,如 HEAD[1]=1 表示当前是 1 号头,HEAD[1]=2 表示当前是 2 号头……0 为立头。
上述对当前头号的标识由厂商添加到相应子程序中,如在HEAD_1.SPF 子程序结束符“M17”之前添加“HEAD[1]=1” ;在HEAD_2.SPF 子程序结束符“M17”之前添加“HEAD[1]=2”等DTT[]用于表示卧头在各个角度时相对于立头的偏差值:;头 1:0°或 180°时DTT[11] 主轴轴心与 C 轴在 X 向的偏差DTT[12] 主轴轴心与 C 轴在 Y 向的偏差DTT[13] 主轴轴心与 C 轴在 Z 向的偏差90°或 270°DTT[14] 主轴轴心与 C 轴在 X 向的偏差DTT[15] 主轴轴心与 C 轴在 Y 向的偏差DTT[16] 主轴轴心与 C 轴在 Z 向的偏差上面的各个数据由厂商在调试时自己测量并设定到用户变量里面去我们通过查看 L11 程序,发现厂商使用的补偿方法其实是修改基准零点坐标系 BNS 来实现的如 1 号卧头处于 0°方向时:$P_UBFR[X,TR]=-DTT[11] $P_UBFR[Y,TR]=-DTT[12] $P_UBFR[Z,TR]= -DTT[13]1 号卧头处于 180°方向时:$P_UBFR[X,TR]=-DTT[11] $P_UBFR[Y,TR]=-DTT[12] $P_UBFR[Z,TR]= -DTT[13]两者简单地对基准零点坐标系 BNS 进行正向或负向的偏移来实现补偿。
通过上面的分析我们发现了机床厂商提供的这套补偿方案的不合理之处:1、修改了基准零点坐标系 BNS这个坐标系是处于我们常用的可设定零点坐标系 ENS(就是 G54、G55 等所建立的坐标系)的上层的如果修改了 BNS 的偏移值,我们常用的 G53、G500 命令是不能屏蔽 BNS 偏移值的,带着这个偏移值进行移动,机床有可能会无法到达正确的换刀点、换头点,也可能发生碰撞!所以厂商要求必须将换刀程序、换头程序中的 G53 命令全部用 SUPA 命令代替,SUPA命令可以屏蔽 BNS 偏移值通常情况下我们的机床不在基准零点坐标系设置偏移,普通工人都认为可设定零点坐标系上层直接就是机床坐标系这个干涉习惯的基准零点坐标系设定方式并不容易为普通工人所接受,且一旦修改内容有误不易被发觉,容易出错2、这个程序只能应付 0°、90°、180°、270°四个最常用的方向我们的卧头是 5 分度或 2.5 分度的,在其它非正交分度时无法用此程序补偿3、由于机床卧头旋转存在误差,在相对方向的偏差值往往是不同的如我厂初步验收时,在未补偿的情况下,90°和 270°方向的 X 向误差超过 0.05mm,Z 向误差超过 0.06mm(后经厂商调试,控制在 0.03mm 以内) ,而原 L11 误差补偿程序是无法补偿这个误差的,相反,还有可能会放大这个误差。
比如我们假设厂商在 90°时测量出 X 值相对于立头向正向偏移了 0.03mm,他把 DTT[14]设为了0.03,那么当卧头转到 270°时,程序会把 X 向负向补偿 0.03mm,而实际中我们测得的 270°X 向偏差值可能是正向的,这样无疑增大了误差如此会造成转头加工孔的同轴度较差,不能满足有严格同轴度要求的零件的加工4、原 L11 补偿程序不提供坐标系的旋转这往往需要操作者根据实际情况使用 G17、G18、G19 命令来选择加工平面这种方式在使用 CYCLE81 等循环时需要注意返回平面的正负号、图纸尺寸在各个坐标系方向的变化,编程不方便我们通常将工件坐标系建立为:Z 轴始终沿着主轴方向,加工平面选用 G17 平面(即 XY 平面) ,这样很方便根据图纸编程为了克服上述缺点,我们采用新思路编制了新的坐标系补偿程序1、添加 GUD4 用户自定义数据用来表示各个角度的偏移补偿;%_N_GUD4_DEF;$PATH=/_N_DEF_DIRDEF NCK REAL U_0[3]=(378.97,0.04,533.468)DEF NCK REAL U_90[3]=(0.06,-378.873,533.468)DEF NCK REAL U_180[3]=(-378.86,0.05,533.403)DEF NCK REAL U_270[3]=(0.11,378.931,533.403)DEF NCK REAL U_LHY[3]M17由于我厂除了立头外,仅使用了一个卧头,所以仅添加了一组数组:U_0[3]、U_90[3]、U_180[3]、U_270[3]。
U_0[0]、U_0[1]、U_0[2]分别表示卧头在 0°时与立头的X、Y、Z 差值同样:U_90[]——卧头在 90°时与立头的 X、Y、Z 差值;U_180[]——卧头在 180°时与立头的 X、Y、Z 差值;U_270[]——卧头在 270°时与立头的 X、Y、Z 差值以上参数全部手工测量,可以在“参数->用户数据->GUD4”下查询和修改我们定义了最常用的四个方向的补偿值,有效解决了不同方向补偿误差的微小区别2、建立一个用户循环,用于可设定零点坐标系 ENS 建立时的偏移设定:LHYSET(INT XPOS, INT YPOS, INT ZPOS) 记录当前的测量状态,在LHY[]数组中记录立头坐标系与当前坐标系的差值,建立坐标系补偿每次找正工件建立坐标系的时候都需要执行一次,且仅执行一次就行参数 XPOS、YPOS、ZPOS 分别表示三个轴测量时的卧头角度如为立轴所打,记为-1如:先用立轴测出 Y 值,再换卧头转到 90°测出 X 和 Z 值将测量值录入到 G54、G55……等完成后,需在程序开头执行LHYSET(90,-1,90)这将在机床坐标系和工件坐标系之间建立一个补偿。
以前不使用这个程序,在建立工件坐标系时我们需要通过手工计算得出当前坐标值与立头坐标值,比较麻烦原程序部分内容如下:%_N_LHYSET_SPF;$PATH=/_N_CUS_DIR;---------------附件头误差补偿(建立坐标系测量后)--------------PROC LHYSET (INT XPOS, INT YPOS, INT ZPOS) SAVE DISPLOF;X 补偿CASE(XPOS) OF -1 GOTO SETX 0 GOTOF SET0X 90 GOTOF SET90X 180 GOTOF SET180X 270 GOTOF SET270X DEFAULT GOTOF ERRORRETSETX:U_LHY[0]=0GOTOF LHYENDXSET0X:U_LHY[0]=-U_0[0]GOTOF LHYENDXSET90X:U_LHY[0]=-U_90[0]GOTOF LHYENDXSET180X:U_LHY[0]=-U_180[0]GOTOF LHYENDXSET270X:U_LHY[0]=-U_270[0]GOTOF LHYENDXLHYENDX:ENDIF;Y 补偿;……;Z 补偿;……RETERRORRET:MSG(“DEGREE ERROR!“)M00GOTOB ERRORRETRET3、建立一个用户循环,根据卧头角度旋转偏移坐标系并建立补偿:LHY 程序将 ENS 坐标系中的偏移值加上数组 LHY[]所记录的立头与 ENS 坐标系差值得出立头的坐标系,再加上当前卧头对应的立卧差值得到当前工件坐标系的正确值。
程序如下:%_N_LHY_SPF;$PATH=/_N_CUS_DIR;---------------旋转偏移坐标系并建立补偿--------------PROC LHY DISPLOFDEF REAL UPX,UPY,UPZDEF REAL UZZDEF REAL CPOSCPOS=$A_INA[3];读取当前卧头角度;当前头为立头IF(HEAD[1]==6)TRANS X=U_LHY[0] Y=U_LHY[1] Z=U_LHY[2]RETENDIF;当前头为卧头CASE(CPOS) OF 0 GOTOF TURN0 90 GOTOF TURN90 180 GOTOF TURN180 270 GOTOF TURN270TURN0:UPX=U_0[0] UPY=U_0[1] UPZ=U_0[2]GOTOF TURNSETTURN90:UPX=U_90[0] UPY=U_90[1] UPZ=U_90[2]GOTOF TURNSETTURN180:UPX=U_180[0] UPY=U_180[1] UPZ=U_180[2]GOTOF TURNSETTURN270:UPX=U_270[0] UPY=U_270[1] UPZ=U_270[2]GOTOF TURNSETTURNSET:UPX=UPX+U_LHY[0]UPY=UPY+U_LHY[1]UPZ=UPZ+U_LHY[2]UZZ=-CPOS+90IF (UZZ<-180)UZZ=UZZ+360ENDIFTRANS X=UPX Y=UPY Z=UPZAROT Z=UZZ X=90RET实际应用方法:1、先将测量的坐标系值输入 G54 或其它 ENS 中。
2、执行 LHYSET(INT XPOS, INT YPOS, INT ZPOS)指令3、使用换头指令 L01(newpos)后,在 G54 等代码后面需添加LHY 指令来偏移旋转坐标系在工件程序中需要再次偏移或旋转坐标系的,请使用相对偏移或旋转指令(即 ATRANS 和 AROT,而不是TRANS 和 ROT) ,如需恢复再次执行 LHY 指令即可由于刀具长度补偿默认补偿在机床坐标的 Z 轴,故卧头不使用D1 等刀具长度补偿指令,而是在 LHY 执行后采用下面的指令取代:ATRANS Z=$TC_DP21[$P_TOOLNO,$P_TOOL];范例——工件 1 加工程序LHYSET(90,-1,90);建立 G54 时测量机床 Y 值用立头,测量 X 和 Z用卧头转到 90°L01(180)G54LHY;旋转坐标系T1ATRANS Z=$TC_DP21[$P_TOOLNO,$P_TOOL]G90 M3 S600 F30……;加工内容T2ATRANS Z=$TC_DP21[$P_TOOLNO,$P_TOOL]……;加工内容L01(270)G54LHYATRANS Z=$TC_DP21[$P_TOOLNO,$P_TOOL]G90 M3 S600 F30 D1……;加工内容M05M30如此,改进后的补偿程序完成。
