因为西门子系统在用户手写程序功能扩展方面比较强大,所以我厂一直都是自己开发循环配合西门子循环组合使用。因为西门子标准的循环要考虑很多问题,尤其是安全问题,这就制约了程序的功能,现重点介绍下我厂最早开发的一个用户循环。
此循环开发之初是为了在镗孔时使刀具在距离最终深度一定距离时,自动地改变进给和转速。程序源代码(参数和标准循环顺序一样,各参数为返回平面、参考平面安全距离、最终深度坐标、孔深、距离最终坐标需要变换的距离、变换后的进给及变换后的转速)如下:
%_N_TMK_SPF
;$PATH=/_N_CUS_DIR
PROC TMK(REAL RTP,REAL
RFP,REAL SDIS,REAL DP,REAL
DPR,REAL RJS,REAL JSF,REAL JSS)
SAVE SBLOF DISPLOF
;VERSION: 11.5.31 MAY 31, 2011
;CHANGE : 11.5.31 MAY 31, 2011
;DEVELOPER: KECHENGCUI
DEF REAL RBLS,RF,RJSF,RJSS
DEF AXIS A_3
DEF INT IPB5
DEFINE LX AS G01 G60 G90
DEFINE LY AS G00 G64 G90
A_3=$P_AXN3
RBLS=$P_S[1]
IF ($P_SUBPAR[2]==FALSE)
RFP=$AA_IW[$P_AXN3] SDIS=0
ENDIF
I F ($P_SUBPAR[4]<>TRUE)
AND($P_SUBPAR[5]==TRUE)
DP=RFP+DPR
ENDIF
IPB5=(RFP-DP)/ABS(RFP-DP)
LYAX[$P_AXN3]=SDIS*IPB5+
RFP
RF=$P_F
IF$P_SUBPAR[6]==TRUE
LXAX[A_3]=DP+RJS*IPB5;
IFJSF<0;
IFABS(JSF)<1
RJSF=ABS(JSF)*RF
ELSE
RJSF=RF/ABS(JSF)
ENDIF
ELSE
RJSF=JSF
ENDIF
IF($P_SUBPAR[8]==TRUE)
AND(JSS<0)
IFABS(JSS)<1
RJSS=ABS(JSS)*RBLS
ELSE
RJSS=RBLS/ABS(JSS)
ENDIF
ELSE
RJSS=JSS
ENDIF
IF$P_SUBPAR[8]==TRUE
LXAX[A_3]=DP FB=RJSF
S=RJSS
ELSE
LXAX[A_3]=DP FB=RJSF
ENDIF
ELSE
LXAX[A_3]=DP
ENDIF
G04S2
IFRBLS<>$P_S[1]
S=RBLSF=RF
ENDIF
IF ($P_SUBPAR[1]==TRUE)
AND($P_SUBPAR[2]==TRUE)
LYAX[A_3]=RTP
ENDIF
M17
上面程序只有一个减速的功能,下面是使用实例:
G54G90 G00 X0 Y0 Z100 D1
S300F60 M3
TMK(100,0,5,-50,,5,20,350)
M5
G00SUPA Z0 D0
M30
程序先定位然后主轴正转,刀具定位到参考平面的安全距离处,然后以循环外设定的进给和转速加工到孔底坐标的减速距离处,进给变为循环设定的进给,转速设定为循环设定的转速,进给和转速都可不填或者只添一项, 如果都不填就类似于一个cycle81;然后刀具返回到返回平面,返回平面可以不填,也可以是任意值,如果不是返回到安全的方向建议不填,因为不填的话刀具到孔底就停止循环,这个设计是为了和其他循环配合使用。
在我厂车间经常加工一些隔板孔,即在一个坐标上有两个以上的孔,因为西门子的标准循环不允许返回平面,而在参考平面的另一个方向,或者加工完成后停留在孔底不返回,所以在编程时只能用“G0”“G1”这种代码写几行甚至十几行程序,计算和修改都很麻烦,后期维护也比较麻烦。此循环设计就完美解决了这个问题,下面是三层孔的加工程序:
G54G90 G00 X0 Y0 Z100 D1
S300F60 M3
TMK(,0,5,-50)
TMK(,-100,5,,-50)
TMK(100,-200,5,,-50)
M5
G00SUPA Z0 D0
M30
程序加工完第一个孔,由于没填参考平面,所以程序加工到孔底就没有后续动作了,循环结束;进入下一个循环,下一个循环正常执行,结束后没有返回数据,所以不返回,进入下一个循环;最后一个循环到孔底后,有返回平面数据,所以执行返回平面。简洁明了,方便维护。
此外,程序还可以写成如下形式:
G54G90 G00 X0 Y0 Z100 D1
S300F60 M3
TMK(-95,0,5,-50)
TMK(-195,,,,-50)
TMK(100,,,-50)
M5
G00SUPA Z0 D0
M30
第一个循环结束后, 返回到第二个孔的孔端处,由于第二个孔的参考平面没有填写,所以就以当前点为参考平面,进行加工。这段程序在铣孔倒角用的用户循环中优势明显,当同一轴线上加工多个整圆时只需填一个参数即可。
发表于《金属加工(冷加工)》2016年15期58页
作者:山推工程机械股份有限公司 崔克诚 田伍臣 刘 伟 王成奎