山推工程机械股份有限公司(山东 272023)刘志凯 刘 伟 张明明
五面体加工中心是目前国内大型加工设备中比较先进的。以我厂现使用中的沈机中捷THA57200×400、GMC2560r2、GMC2560wr3为例,控制系统采用西门子840D。沈阳机床厂通常采用两种方式来补偿立、卧头的差值:
(1)执行转头程序L01就完成补偿变换。
(2)执行完转头程序L01后,再通过执行子程序L11完成变换。
其实这两种方式本质上没有什么区别,只是方式1中的L01程序整合了方式2中的L01和L11程序。
下面我们通过沈阳机床厂提供的说明及程序源码来分析一下其误差补偿程序的原理。
首先,机床厂提供一个用户数据文件UGUD.arc:
HEAD[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[]用于表示卧头在各个角度时相对于立头的偏差值:
上面的各个数据由厂商在调试时自己测量并设定到用户变量里面去。
我们通过查看L11程序,发现厂商使用的补偿方法其实是修改基准零点坐标系BNS来实现的。
如1号卧头处于0°方向时:
1号卧头处于180°方向时:
两者简单地对基准零点坐标系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用户自定义数据用来表示各个角度的偏移补偿:
由于我厂除了立头外,仅使用了一个卧头,所以仅添加了一组数组: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差值。
同样:
以上参数全部手工测量,可以在“参数->用户数据->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)
这将在机床坐标系和工件坐标系之间建立一个补偿。以前不使用这个程序,在建立工件坐标系时我们需要通过手工计算得出当前坐标值与立头坐标值,比较麻烦。
原程序部分内容如下:
(3)建立一个用户循环,根据卧头角度旋转偏移坐标系并建立补偿。
LHY程序将ENS坐标系中的偏移值加上数组LHY[]所记录的立头与ENS坐标系差值得出立头的坐标系,再加上当前卧头对应的立卧差值得到当前工件坐标系的正确值。
程序如下:
(1)先将测量的坐标系值输入G54或其他ENS中。
(2)执行LHYSET(INT XPOS, INT YPOS,INT ZPOS)指令。
(3)使用换头指令L01后,在G54等代码后面需添加LHY指令来偏移旋转坐标系。在工件程序中需要再次偏移或旋转坐标系的,请使用相对偏移或旋转指令(即ATRANS和AROT,而不是TRANS和ROT),如需恢复再次执行LHY指令即可。
由于刀具长度补偿默认补偿在机床坐标的Z轴,故卧头不使用D1等刀具长度补偿指令,而是在LHY执行后采用下面的指令取代:
如此,改进后的补偿程序完成。